請問XS能撰寫當該日盤走勢觸碰到 CDP AH 或 NH 時發出警示麼?
例如: 趨勢向上時觸碰到 CDP AH, 警示; 趨勢向下穿過 CDP AH 警示
謝謝
Hello, XIANGXIANG.
首先,我們先找出CDP的定義,
https://www.moneydj.com/kmdj/wiki/wikiviewer.aspx?keyid=283b3907-2c43-4b27-9bc0-a7c0aa668894
以下就是個簡單的價位突破AH的範例,
Var: _PreOpen(0), _PreHigh(0), _PreLow(0), _PreClose(0), _CDP(0), _AH(0), _NH(0), _NL(0), _AL(0); if IsFirstCall("Date") // 先把值設定好 then begin _PreOpen = GetField("Open", "D")[1]; _PreHigh = GetField("High", "D")[1]; _PreLow = GetField("Low", "D")[1]; _PreClose = GetField("Close", "D")[1]; _CDP = ( _PreHigh + _PreLow + 2 * _PreClose ) / 4; _AH = _CDP + (_PreHigh - _PreLow); _NH = (2 * _CDP) - _PreLow; _NL = (2 * _CDP) - _PreHigh; _AL = _CDP - (_PreHigh - _PreLow); end; if Close Cross over _AH then ret = 1;
以上為簡單的策略雷達警示做法,
網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。
謝謝。
請問[1]是前一日的意思嗎 ?
謝謝
若主頻率是日,則[1]代表前一日的資料。
謝謝
請問寫了一個CDP的判定,但都無法觸發,能否幫忙看一下原因
謝謝
Var: _PreOpen(0), _PreHigh(0), _PreLow(0), _PreClose(0), _CDP(0), _AH(0), _NH(0), _NL(0), _AL(0);
if
IsFirstCall("Date") // 先把值設定好
then begin
_PreOpen = GetField("Open", "D")[1];
_PreHigh = GetField("High", "D")[1];
_PreLow = GetField("Low", "D")[1];
_PreClose = GetField("Close", "D")[1];
_CDP = ( _PreHigh + _PreLow + 2 * _PreClose ) / 4;
_AH = _CDP + (_PreHigh - _PreLow);
_NH = (2 * _CDP) - _PreLow;
_NL = (2 * _CDP) - _PreHigh;
_AL = _CDP - (_PreHigh - _PreLow);
end;
if
Close Cross over _AH OR Close Cross over _NH OR Close Cross Below _AL OR Close Cross Below _NL
then
ret = 1;
你只在交易日的第一次洗價計算CDP指標,若不是第一次洗價,例如,盤中才啟動策略,就沒有這些指標數據,自然不會觸發訊號。
Hello 藍色螃蟹,
小編補充,由於不確定您的策略參數是如何設定的,建議可以將變數宣告為 intrabarpersist。
如 Var: intrabarpersist _PreOpen(0), intrabarpersist _PreHigh(0), ...
並搭配使用 print 函數印出確認相關數值是否有如預想中的計算。
感謝 虎科大許教授 的熱心回覆。
7 評論