回測疑問

  •   125 
  • 最後發表   pon404  2022 七月 15
pon404 發文於   2022/06/28

您好

警示腳本如下:

==================================================================

if barfreq <>"Min" or  barinterval<> 1 then raiseruntimeerror("本腳本只適用於1分鐘線"); 

 variable:count(0); 

if date<>date[1] then count=0; 

count=count+1; 

 

var:LV(0);

if count = 5 then begin   LV = getField ("high", "D"); end; 

  

value9 = getfield("high", "D") / getfield("low", "D");  

  

var: L1(0),H1(0); 

if value9[highestbar(high,count)] >= 1.02  and LV < getfield("High","D") 

 

 then begin  H1 = highest(high,count); end; 

 

if time >= 091000 and time <= 120000  

 

and low < H1*0.98    

then ret=1;

==================================================================

回測2022/5/27的4項商品,台榮(1220.TW)、寶隆(1906.TW)、力特(3051.TW)、家登(3680.TW),

似乎在0900第一支1分K就觸發了,只是到0910才警報。

LV是count = 5(時間是0905) 當時的當日最高價,應該要count = 6以後的當日最高價大於LV才會觸發。

其中台榮(1220.TW)的第一支1分K也沒有達到value9[highestbar(high,count)] >= 1.02的條件,卻也觸發。

另外比較奇怪的是寶隆(1906.TW),當日第一筆成交在0910,只成交一張,也觸發。

請問這4項商品在異常觸發的原因是甚麼?是否腳本哪裡有錯誤?

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

Hello pon404,

 

您的警示條件中有加上 time >= 091000 and time <= 120000 所以要在 091000 以後才會警示。

另外,LV 在 count = 5 之前會是昨日0905取得的最高價 (資料預讀筆數的運算),就算您沒有設定或設的很短,LV 也會是預設值 0,自然符合 LV < getfield("High","D")。

台隆在預讀筆數中的5/26的資料就已經有H1的值 (18.35),接下來就會以此值做運算。

小幫手建議您可以在腳本中加上print,這樣就可以了解策略是如何運算的。

像是:

print(currentBar, date, time, count, value9[highestbar(high,count)], LV, H1);

pon404 發文於   2022/07/05

您好

加上SetFirstBarDate(20220527);就不會異常觸發了,

但請問要如何用CurrentDate取代20220527,

系統無法使用SetFirstBarDate(CurrentDate);。

或是可以用甚麼語法達到相同的目的,謝謝。

musashi 發文於   2022/07/06

1.你的策略需要註解說明,才能幫助檢查撰寫判斷是否恰當。
2.加上 SetFirstBarDate(20220527); 就不會異常觸發了,
這表示你的策略在讀取(資料預讀筆數的運算)就出現不需要的判斷運算,
最好的方式是修正腳本判斷與計算方式,
但如果堅持要用 SetFirstBarDate(CurrentDate); 來避開讀取(資料預讀筆數的運算),
可以試著將全部腳本放在 if date=CurrentDate 裡面,這樣腳本運算都會在交易日當天,
就算有讀取(資料預讀筆數的運算)也不會做任何運算。

XQ小幫手 發文於   2022/07/11

Hello pon404,

 

如果您不需要資料預讀筆數運算的話,可以使用 SetTotalBar(0) 來設定。

另外,您也可以參考 musashi 提供的作法。

 

感謝 musashi 的熱心回覆。

pon404 發文於   2022/07/15

感謝musashi與小幫手的協助,

異常觸發的問題已順利解決,謝謝。

發表回覆
Close