交易腳本無法回測8:45~9:00的價格嗎?

  •   56 
  • 最後發表   Albert3919  2025 七月 01
Albert3919 發文於   2025/06/27

我本來是想找出股票期貨在現貨開盤前就大漲或大跌的股票,也就是8:45到9:00之間的漲幅,但好像寫到9:00以前或是13:30以後就無法運作了,交易資料完全是0,同時還有一些奇怪的問題:

1. 由於沒有任何交易,所以我嘗試把condition1拿掉,變成:
if position = 0 and filled = 0 and currenttime >= 090100 and currenttime <= 090500 then begin
但很奇怪的是,這樣還是無法運作,明明這一行沒有用到上面任何數據或變數,為什麼還是無法運作? 我把上面那一大坨刪除後卻又正常了(但只有回測現貨可以,連續月份股票期貨不行),為甚麼上面的程式碼會引響我進場? 我又沒有用到上面的任何資料

2. 為何無法計算8:45到9:00之間的漲幅? 我回測的商品是連續月份股票期貨(一般) ,我該如何計算這段時間的漲幅?

 

var: intrabarpersist firstbar(0);

var: intrabarpersist openbar(0);

var: intrabarpersist nearclose(0);

var: intrabarpersist closebar(0);

 

//8:45

if currenttime >= 084500 and currenttime < 084600 then begin

firstbar = close;

end;

 

//9:00

if currenttime >= 090000 and currenttime < 090100 then begin

openbar = close;

end;

 

//13:25

if currenttime >= 132500 and currenttime < 132600 then begin

nearclose = close;

end;

 

//13:30

if currenttime >= 133000 and currenttime < 133100 then begin

closebar = close;

end;

 

value1 = (openbar - firstbar)/firstbar*100; //計算現貨開盤前漲幅

value2 = (closebar - nearclose)/nearclose*100; //計算現貨收盤前漲幅

 

condition1 = value1 >= 3;

 

if position = 0 and filled = 0 and currenttime >= 090100 and currenttime <= 090500 then begin

setposition(-1,market);

end;

 

if position > 0 and filled > 0 and condition1 and currenttime >= 091000 and currenttime < 091100 then begin

setposition(0,market);

 

end;


 

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

(1)我猜測你的程式並非完整的程式。若只從你提供的程式判斷,不論是回測或執行此交易腳本,在計算value2時,都會產生除以0的錯誤,因為nearclose要到132500之後才會有數值,在這之前它是0

(2)要判斷9點之前的15分鐘漲跌幅,按照你的計算公式,是將9點1分的收盤價與9點46分的收盤價進行比較。這樣的定義是否正確,你可能要斟酌一下。那15分鐘的漲跌幅,是否從開盤到15分鐘收盤比較合理?若是這樣,則只要在9點的時候判斷,不需要盤中持續判斷。現貨收盤前5分鐘的漲跌幅比照辦理。

//主頻率:1分鐘
if time=090000 then
    begin
        value1=100*(c[1]/GetField("開盤價", "D")-1);
    end;
if time=133000 then
    begin
        value2=100*(c[1]/o[5]-1);
    end;

 

XS小編 發文於   2025/07/01

Hello Albert3919,

 

小編補充,您進場是空方進場 (setposition(-1,market)),但出場的部分條件卻是限制要多方 (position > 0 and filled > 0)。

這部分會讓腳本進場後無法出場。

發表回覆
Close