請教小幫手

  •   227 
  • 最後發表   Nickkkkkk  2022 十月 04
Nickkkkkk 發文於   2022/09/20

請問策略雷達 要如何編寫 在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期收盤價的指數移動平均

我自己分別用兩種去寫 回測都是錯誤的 

請小幫手幫幫忙 謝謝

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/09/27

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來檢查計算出的資料是否正確。

Nickkkkkk 發文於   2022/09/27

請問如果也要跨到60分鐘 那讀取筆數應該要怎麼算呢?

15

30

60

因為我需要的資料量較大 每種個別都偵測 5 ,10,20 EMA。

還是我可以直接將讀取筆數放大 變500嗎?

因為我還是不會算...

謝謝

XQ小幫手 發文於   2022/10/04

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。

 

您也可以設一個大一些的資料讀取筆數,不過這樣需要運算的歷史資料就會變長,增加策略運算的時間。

發表回覆
Close