當沖1分K回測語法問題

  •   588 
  • 最後發表   xxx  2024 七月 21
xxx 發文於   2024/07/21

//從9:09的那根1分K開始

if time>90900 and time<=91000 then begin

 

//紀錄過去10根1分K的最高價

value1=highest(high,10);

 

//條件1: 今日開盤價小於昨收,最高價介於今日開盤價與昨收之間,且該根1分K的收盤價大於等於今日開盤價

condition1 = openD(0)<closeD(1)

and value1>openD(0)

and value1<closeD(1)

and close>=openD(0);

end;

 

//條件2: 9:10後若1分K收盤價大於最高價

if time>91000 and time<130000 then begin

condition2 = close>value1;

end;

 

//若符合條件1則進場放空1張,若符合條件2則停損

if position=0 and condition1 then setposition(-1, close);

if position=-1 and condition2 then setposition(0, Market);

 

用此策略回測昨日漲停且可買賣現沖的股票,發現有許多交易都是在9:10的1分K一進場就出場,想請問小幫手這個策略的語法上是不是哪裡有問題呢?

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/07/21

091000是第11根1分K,前10根1分K的高點應該寫成 value1=highest(high[1],10);

由於value1是前10分鐘的高點,只要小於昨天收盤價且高於今天開盤價,結合另外兩個條件就進場放空。091000的任何即時價格很可能距離value1不遠(說不定進場時價格就在value1附近),自然有機會很快出場。

xxx 發文於   2024/07/21

謝謝教授的回覆

不過在實際進出場部分

我看交易分析出現了我的程式碼中應該不可能發生的狀況(如圖

上圖是沒有過高就出場了

下圖則是開盤比昨收高仍然進場

所以想請問我的原始程式當中是否有那些問題被我忽略了

 

虎科大許教授 發文於   2024/07/21

問題出在不論是condition1或是condition2,沒有在開盤時重新恢復預設的false,所以之前變成true之後就一直保持true,因此一進場之後馬上出場。程式開頭加上下列程式碼:

if date<>date[1] then

      begin

            condition1=false;

            condition2=false;

            value1=0;

      end;

 

xxx 發文於   2024/07/21

謝謝教授

調整後有符合原先的預期

發表回覆
Close