看A商品做B商品進出時點不正確,煩請小幫手協助查明,謝謝

  •   203 
  • 最後發表   AlanChen  2024 一月 16
AlanChen 發文於   2024/01/11

想請小幫手幫忙查明

我用同一個程式同時執行陽明(2609)和陽明期近月(市價,頻率5分鐘,不洗價),理論上開平倉的時點應相同,但本年度1月份回測結果,兩種商品是不同開平倉時間。想請教是否是資料庫有誤還是程式bug?

程式碼如下

value1 = GetsymbolField("2609.tw","close","5");

value2 = bollingerBand(value1,20,2);

value3 = bollingerBand(value1,20,-2);

if time>=090000 and time<132000 then begin

if value2>value2[1] and value3>value3[1] then setposition(1);

if value2<value2[1] and value3<value3[1] then setposition(-1);

end;

if time=132000 then begin

setposition(0);

end;

 

排序方式: 標準 | 最新
AlanChen 發文於   2024/01/13

用下列程式同時執行陽明2609及陽明期近月(看a做b,市價,頻率5分鐘,不洗價),今年度回測亦出現現貨期貨開平倉時點不同的現象,也請小幫手協助查明,謝謝。

value1 = GetsymbolField("2609.tw","close","5");

value2 = average(value1,20);

if time>=090000 and time<132000 then begin

if value2>value2[1] then   setposition(1);

if value2<value2[1] then   setposition(-1);

if value2=value2[1] then   setposition(0);

end;

if time>=132000 and time<134500 then begin

setposition(0);

end;

XS小編 發文於   2024/01/16

Hello AlanChen,

 

請注意兩個商品的交易時間不同,所以變數取得的前期值會不同。

舉例來說,在 090000 時股票的 value1[1] 會是前一天的最後一根Bar、value1[2] 會是前一天的倒數第二根Bar的數值。

但在期貨時 value1[1] 會是 085500 這根Bar、value1[2] 會是 085000 這根Bar的數值。

而這會導致 value2 / value3 在運算時得出不同的結果。

 

若要接近些的話,小幫手會建議您直接在函數中使用資料欄位而非變數,像是 bollingerBand(GetsymbolField("2609.tw","close","5"),20,2);。

並讓進出場避開會取用到不同時間點的數值,像是條件判斷從 090500 開始 (因為條件中有取前期變數,這樣兩者前期都會是 090000)。

 

另外還需注意若當根Bar成交量為0的話,系統是不會進場的。

由於回測判斷是否成交是使用1分鐘的OHLC來洗價判斷,若當根1分鐘Bar沒有成交量的話就會跳到下一根,故兩者可能還是會有些差距。

  • 按讚來自於
  • Pingzz0719
發表回覆
Close