你好
策略雷達中有關於基準商品的參照,如果我想讓商品與基準商品比較指標,能夠做到嗎?
例如基準商品設定為大盤,基準腳本設5日均線
然後商品策略中想讓商品的5日均線斜率大於大盤的5日均線斜率時觸發,該怎樣寫?
謝謝
你好
策略雷達中有關於基準商品的參照,如果我想讓商品與基準商品比較指標,能夠做到嗎?
例如基準商品設定為大盤,基準腳本設5日均線
然後商品策略中想讓商品的5日均線斜率大於大盤的5日均線斜率時觸發,該怎樣寫?
謝謝
Hi 河馬,
其實可以使用跨商品語法( GetSymbolField ),應該就可以做到您所描述的策略條件,若撰寫上仍有問題,歡迎詢問,謝謝。
你好
我有試過跨商品語法,但隨著使用指標的複雜度,會使策略腳本變得很龐大,也不容易debug
執行策略的時候容易記憶體不足,也容易出錯
我有次腳本中參照大盤雙KD向上,跑回測可以跑出勝率,因此加入策略雷達執行
不知道是不是因為跨商品又跨頻率,結果執行紀錄出現最大引用筆數不足的訊息,我把筆數一直加到2000筆都還是出現訊息,但是把腳本拆開執行卻正常
因此我才會詢問基準商品參照的部分,建議可以比照函數,可以回傳數值給策略用,這樣個別的腳本也比較好寫
謝謝
Hi 河馬,
謝謝您的說明,
基準商品的相關教學,請查看以下連結文章
如果您是想要用基準商品來替代跨商品跨頻率的語法,應該是沒辦法替代的,
若有問題,歡迎再詢問,謝謝。
----
或許,您能提供
不知道是不是因為跨商品又跨頻率,結果執行紀錄出現最大引用筆數不足的訊息,我把筆數一直加到2000筆都還是出現訊息,但是把腳本拆開執行卻正常
您所述的狀況腳本程式碼法,以利小幫手協助您,看看是否可以解決您的問題,謝謝。
你好,小幫手
程式碼因為執行不順,已經被我刪了,只調整了大盤的部分用在基準商品參照。
我不是要用基準商品來代替跨商品語法,畢竟可能有人要跨多個商品
貴司也是因為大部份人下單都會參照指數動向等等,所以才設計了基準商品的功能,
所以也許可以將功能延申的更齊全,把他當成跨商品的特例 (只跨一個商品時),以上建議
好的,謝謝您的建議,我們會繼續努力!
小幫手你好
我最近抽空利用XQ裡的雙KD向上寫了一個參照大盤KD的跨商品程式碼,執行策略時會出現我說的問題,提供給你們參考。
其中大盤的部份就算另寫成自訂函數也是一樣的結果。
//大盤KD
//大盤日KD
variable:lasttwkd(0),lasttwdd(0),rsvtwd(0), ktwd(0), dtwd(0), maxd(0), mind(0);
if xf_getdtvalue("D", Date) <> xf_getdtvalue("D", Date[1]) then
begin
lasttwkd = ktwd[1];
lasttwdd = dtwd[1];
end;
maxd=highest(GetSymbolField("tse.tw","最高價","D"),9);
mind=lowest(GetSymbolField("tse.tw","最低價","D"),9);
if maxd<>mind then rsvtwd=(GetSymbolField("tse.tw","收盤價","D")-mind)/(maxd-mind)*100
else rsvtwd=50;
if currentbar = 1 then
begin
ktwd=50;
dtwd=50;
end
else
begin
ktwd=lasttwkd*2/3+rsvtwd/3;
dtwd=lasttwdd*2/3+ktwd/3;
end;
//大盤週KD
variable:lasttwkw(0),lasttwdw(0),rsvtww(0), ktww(0), dtww(0), maxw(0), minw(0);
if xf_getdtvalue("W", Date) <> xf_getdtvalue("W", Date[1]) then
begin
lasttwkw = ktww[1];
lasttwdw = dtww[1];
end;
maxw=highest(GetSymbolField("tse.tw","最高價","W"),5);
minw=lowest(GetSymbolField("tse.tw","最低價","W"),5);
if maxw<>minw then rsvtww=(GetSymbolField("tse.tw","收盤價","W")-minw)/(maxw-minw)*100
else rsvtww=50;
if currentbar = 1 then
begin
ktww=50;
dtww=50;
end
else
begin
ktww=lasttwkw*2/3+rsvtww/3;
dtww=lasttwdw*2/3+ktww/3;
end;
//大盤雙KD向上
condition6=ktwd > dtwd;
condition7=xf_getvalue("W", ktww, 1)>xf_getvalue("W", dtww, 1);
//KD
input: Length_D(9, "日KD期間");
input: Length_W(5, "周KD期間");
variable:rsv_d(0),kk_d(0),dd_d(0);
variable:rsv_w(0),kk_w(0),dd_w(0);
stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d);
xf_stochastic("W", Length_W, 3, 3, rsv_w, kk_w, dd_w);
condition1 = kk_d crosses above dd_d; // 日KD crosses over
condition2 = xf_GetBoolean("W",xf_crossover("W", kk_w, dd_w),1); // 周KD crosses over
condition3 = average(volume[1], 5) >= 1000;
condition4 = kk_d[1] <= 30; // 日K 低檔
condition5 = xf_getvalue("W", kk_w, 1) <= 50; // 周K 低檔
// 成交量判斷
Condition99 = Average(Volume[1], 100) >= 1000;
if condition1
and condition2
and condition3
and condition4
and condition5
and condition99
and condition6
and condition7
then ret=1;
Hi 河馬,
謝謝您提供的資訊,
待小幫手查看後,再向您說明,謝謝。
Hi 河馬,
您好,謝謝您的建議,看了您的程式碼之後,確實會有您所提到的問題,
警示策略雷達的部分,我們之後會朝多條件的方向努力!謝謝。
8 評論