[已解決]請教 回測時 print 問題

  •   159 
  • 最後發表   Skywalker  2021 九月 09
Skywalker 發文於   2021/09/06

請問小幫手,我的程式邏輯是不是錯了?

Q1:回測頻率設為1分K,程式裡設了 if time=085000 才去取 08:45 的5分K資料,但是 log 印出來卻好像執行了四次(請參見附圖)

 

// 設定及宣告

if barfreq<>"Min" or barinterval<>1 then RaiseRunTimeError("頻率限用一分K");

var: kbar_high(0),kbar_low(0),kbar_open(0),kbar_close(0),kbar_des("");//紀錄紅黑的高低點

 

if time=085000 then begin //取出今天開盤第一根 5分K (設50分取45分)

kbar_high =GetField("High","5")[1];

kbar_low = GetField("Low","5")[1];

kbar_open= GetField("Open","5")[1];

kbar_close=GetField("Close","5")[1];

if (kbar_open>getfield("Close","5")[2]) and (kbar_close>kbar_open) then

kbar_des="開高收紅"

else if (kbar_open>getfield("Close","5")[2]) and (kbar_open>kbar_close) then

kbar_des="開高收黑"

else if (kbar_open<getfield("Close","5")[2]) and (kbar_close>kbar_open) then

kbar_des="開低收紅"

else if (kbar_open<getfield("Close","5")[2]) and (kbar_open>kbar_close) then

kbar_des="開低收黑";

 

Print(file("C:\print\[Symbol]\"),formatMQY(Date),FormatTime("HH:mm",currentTime),"開盤五分K >> ",kbar_des);

end;

 

 Q2:我想印出 SetPosition(1) 時的進場價位,這樣寫卻印出來都是 0

if Position = 0 then begin

SetPosition(1);

Print(file("C:\print\[Symbol]\"),formatMQY(Date),FormatTime("HH:mm",currentTime),"買進 Position=",NumToStr(FilledAvgPrice,0));

end;

 

附加文件

排序方式: 標準 | 最新
Skywalker 發文於   2021/09/07

第二個問題我應該找到答案了。

在交易>>系統>>基本語法裡第七個範例,有提到:要等下一次洗價。

至於第一個問題,還請小幫手指導,謝謝

Skywalker 發文於   2021/09/07

第一個問題,也是因為勾選了 模擬逐筆洗價,造成的。

XQ小幫手 發文於   2021/09/09

Hello Skywalker,

 

小幫手補充,需注意 XQ 的 time 是該跟Bar開始的時間。

所以1分鐘頻率下的 085000 是 08:50 ~ 08:51 這段時間。

另外在回測的時候 currenttime 會等於 time。

而日頻率下兩者都會是0。

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