自動交易觸發點有誤,如何偵錯?

  •   318 
  • 最後發表   小富  2024 七月 01
小富 發文於   2024/06/13

親愛的小編,

  input: length(13,"均線期數");

variable: sum(0),Idx(0),avgValue(0),pricevol(0),triggeredprice(0),benchprice(0);

 

if barfreq<>"Min"or barinterval<>5  then return;

 

// 資料讀取筆數設定

settotalbar(13);

setbarback(length);

 

value1=close;

triggeredprice = EMA(value1,length);

benchprice = xf_EMA("D", Close,3); //計算3日線收盤價

 

condition1 = close cross over triggeredprice and triggeredprice >= benchprice;

 

// 多方進場策略:收盤價突破ema13且ema13>ema180做多。

if condition1 then setposition(+1,market);

兩個問題請教:

1.上述程式,試模擬交易,卻發現觸發點似乎是在5min 的ema3,而非ema13,請問是哪裡有誤?

2.自動程式交易,是否有偵錯的工具? (因為她無法像選股程式一般可以將中途的結果output出來)

謝謝!

小富

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/06/13

1.

benchprice = xf_EMA("D", Close,3);

改成

benchprice = xf_EMA("D", getField(Close,"D"),3);

2.用Print 或Alert偵錯。

小富 發文於   2024/06/13

1.

benchprice = xf_EMA("D", Close,3);

改成

benchprice = xf_EMA("D", getField(Close,"D"),3);

2.用Print 或Alert偵錯。

小富 發文於   2024/06/13

1.

benchprice = xf_EMA("D", Close,3);

改成

benchprice = xf_EMA("D", getField(Close,"D"),3);

2.用Print 或Alert偵錯。

小富 發文於   2024/06/13

好的,我試試看,感謝許教授 協助!

 

benchprice = xf_EMA("D", Close,3);

改成

benchprice = xf_EMA("D", getField(Close,"D"),3);

2.用Print 或Alert偵錯。

XS小編 發文於   2024/06/19

 Hello 小富,

 

小編補充,指數移動平均是種會用到前期運算值的指標,故需要足夠的資料讀取筆數。

大約會是 (計算長度 + 1) * 3.5 左右。

且跨頻率的話還需要依據對應頻率換算,舉例來說,股票5分鐘頻率跨日頻率的話,一天會有54根5分鐘Bar。

故跨日頻率的指數移動平均會需要 (計算長度 + 1) * 3.5 * 54 筆資料讀取筆數來運算。

所以上面的3日指數移動平均會需要 settotalbar(756) ((3+1)*3.5*54=756) 筆資料才足夠。

  • 按讚來自於
  • Pingzz0719
  • special597495
小富 發文於   2024/07/01

感謝告知,難怪計算出來之後,仍然有誤差值。謝謝!!

發表回覆
Close