我會寫時間快到的平倉指令(應該沒有錯):
if time>0450 then sell next bar market;
if time>0450 then buytocover next bar market;
但時間快到不要進場的正確邏輯我一直想不通:
if marketposition=0 and time>0510 and time <0450 then begin
buy.......
sellshort.....
可能有些人已經看出這樣寫很搞笑了,所以接者我又寫:
if marketposition=0 and time>0000 and time<0450 and time >510 and time <2359 then begin
buy.......
sellshort.....
1. 交易國外期貨儘量用 Exchange Time 不要用 Local Time
2. 當沖交易區間 應該是 (Time >510) or (Time < 450) ,不要被 00:00 這個換日時間混淆。
3. 時間快到時不要進場,你必須先指定一個的時間比如 330,再把前述交易區間改為:
If (Time >510) or (Time < 330) Then
Begin
// Your Entry Condition
End ;
這個時間,又必須和接下來的[當沖出場時間] 錯開一段時間...
不然還是會有在交易區間進場,下一個K棒出了交易區間 ...
if marketposition=0 and time>0000 and time<0450 and time >510 and time <2359 then <---- 這一段怪怪的..
1. 510 是不是 0510..
2. 0000< time < 0450 and 0510< time < 2359 <------ 這是不會成立的.. 因為時間若是在0000 ~ 0450 那就不可能在 0510 ~ 2359間.. 反之亦然.. 所以你可能想要的應該是.. 0000< time < 0450 or 0510< time < 2359
3. 這行寫這樣可能比較好.. if (marketposition=0) and ((time > 0000 and time < 0450) or (time >510 and time < 2359)) then ... 因為運算元件有優先順序所以用()來讓它更清楚你的條件..
if marketposition=0 and (Time >610) or (Time < 500) then begin
if marketposition<>-1 then sellshort next bar market;
If marketposition<>1 then buy next bar market;
end;
If time=510 AND MarketPosition <> 0 Then
Sellshort("doneSE") next bar market;
Buytocover("doneLE") next bar market;