交易程式回測,保留期數5期賣,結果有一筆不是,原因為何?

  •   30 
  • 最後發表   s927757  2025 九月 10
s927757 發文於   2025/09/10

Hi XQ 小幫手,

    我用下列交易程式測試 巨大 ,外資買賣超>300 就買,期數 5 期就賣,但 下面這筆不是為何?

 

code

// 宣告參數

 

// 策略變數

variables:MaxHoldBars(5),holdBars(0),entryCond(false);   

//進場條件

condition1 = getField("外資買賣超","D")[1]>300;

 

// 出場條件

    holdBars = BarsLast(condition1);

condition2 = holdBars >= MaxHoldBars;

 

if condition1 then setposition(1);

if  condition2 then setposition(0);

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

你的情況需要思考有沒有可能condition1及condition2同時為true,亦即5天後,前一天外資買賣超同時大於300張(很顯然這種情況很容易出現)。這時候,系統只會執行第一個setposition,因此沒有出場。

s927757 發文於   2025/09/10

為什麼只執行 第一個呢? 不是 2 個都執行? 結果以最後一個為主呢?

虎科大許教授 發文於   2025/09/10

任何一次洗價,若有多個setposition會被執行,則只會執行第一個setposition。你的情況,結果就是執行第一個setposition的結果:無效委託。因為position已經是1了,又要讓position為1,所以委託無效。第二個平倉的委託setposition(0)不會被執行。

虎科大許教授 發文於   2025/09/10

任何一次洗價,若有多個setposition會被執行,則只會執行第一個setposition。你的情況,結果就是執行第一個setposition的結果:無效委託。因為position已經是1了,又要讓position為1,所以委託無效。第二個平倉的委託setposition(0)不會被執行。

發表回覆
Close