請問策略雷達 要如何編寫 在5分鐘頻率執行下
跨頻率去偵測 15分k跟30分k 股價分別站上各別5ma呢
condition1 = close > average(getfield("Close", "30"), 5); //收盤大於5k ma平均
condition2 = close > xfMin_XAverage("15",GetField("Close","15"),5); //計算15分鐘線5期收盤價的指數移動平均
我自己分別用兩種去寫 回測都是錯誤的
請小幫手幫幫忙 謝謝
請問策略雷達 要如何編寫 在5分鐘頻率執行下
跨頻率去偵測 15分k跟30分k 股價分別站上各別5ma呢
condition1 = close > average(getfield("Close", "30"), 5); //收盤大於5k ma平均
condition2 = close > xfMin_XAverage("15",GetField("Close","15"),5); //計算15分鐘線5期收盤價的指數移動平均
我自己分別用兩種去寫 回測都是錯誤的
請小幫手幫幫忙 謝謝
Hello Nickkkkkk,
這樣看您是要計算移動平均 (average) 還是指數移動平均 (xfMin_XAverage)。
如果是移動平均的話, average(getfield("Close", "30"), 5) 和 average(getfield("Close", "15"), 5) 就會是 30和15分鐘頻率的移動平均。
指數移動平均的話則是 xfMin_XAverage("30",GetField("Close","30"),5) 和 xfMin_XAverage("15",GetField("Close","15"),5)。
需注意的是,指數移動平均是一種需要前期計算值的指標,所以您的讀取筆數需要使用頻率的 (期數 + 1) * 4 根Bar的長度。
舉例來說,5分鐘頻率下
xfMin_XAverage("15",GetField("Close","15"),5) 最少要 (5+1) * 4 * 3 根Bar。
xfMin_XAverage("30",GetField("Close","30"),5) 最少要 (5+1) * 4 * 6 根Bar。
您可以寫 settotalbar(144); 來設定足夠的資料讀取筆數。
另外,可以使用print來檢查計算出的資料是否正確。
請問如果也要跨到60分鐘 那讀取筆數應該要怎麼算呢?
15
30
60
因為我需要的資料量較大 每種個別都偵測 5 ,10,20 EMA。
還是我可以直接將讀取筆數放大 變500嗎?
因為我還是不會算...
謝謝
Hello Nickkkkkk,
簡單來說,指數移動平均會需要 (期數 + 1) * 4 根指定頻率的Bar,所以如果是5分鐘頻率跨60分鐘的話,1根60分鐘Bar就相當於要12根5分鐘Bar。 (60/5 = 12)
因此 xfMin_XAverage("60",GetField("Close","60"),5) 的話,就會需要 (5 + 1) * 4 * 12 根Bar。
您也可以設一個大一些的資料讀取筆數,不過這樣需要運算的歷史資料就會變長,增加策略運算的時間。
3 評論