當選股策略搭配交易的問題

  •   69 
  • 最後發表   AnnChen  2022 十月 11
AnnChen 發文於   2022/10/06

大大們好~~~

小弟想詢問一下

 

當商品A在 7/10 B選股策略給選出來 利用交易腳本買進後預計放置 15 天出場。

 

而商品A又在 7/15 B選股策略選出來 一樣要放置 15 天出場

 

按照以下方式撰寫時,會發現出錯,不知道邏輯是哪邊遺漏掉~~

// 第一次買進 ex. 7/10
if Position = 0 and Filled = 0 then SetPosition(1, market);

// 判斷後續是否又出現訊號繼續買進 ex. 7/15
if Position > 0 and Filled > 0 then SetPosition(Position+1, market);

// 撰寫 15 天後出場   
if Position > 0 and Filled > 0 then begin 
    var: idx(0);
    for idx = 1 to FilledRecordCount begin
        value99 = FilledRecordDate(idx);
        if GetBarOffset(value99) = 14 then sell(FilledRecordQty(idx), market);
    end;
end;

 

排序方式: 標準 | 最新
jo 發文於   2022/10/06

提供另一種解法:

第5行不要,直接再增加第2個自動交易,第3個個自動交易....但是要注意效能。

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

Hello AnnChen,

 

自動交易在日頻率的狀況下會強制使用逐筆交易。

您的這種寫法會在當日交易第一筆後,if Position > 0 and Filled > 0 then SetPosition(Position+1, market); 每次洗價都符合,導致接下來連續下單進場。

如果要限定當日只能成交一次的話,建議您可以使用 intrabarpersist 的變數來控管。

且需注意的是 for 迴圈會將您從第一筆開始的交易紀錄全都抓出,這樣的話若您出掉第一筆後,下次執行時還是會從第一筆的日期開始。

且這個迴圈也會跑到出場的交易紀錄,會因此出錯。

 

如果只是要回測的話,建議您可以用選股來執行。

發表回覆
Close