近月交易到1330就停止交易了。
和以往交易到1345不同。
目前只有跑當沖自動交易的我
選擇更改程式碼,平倉時間由1340改為1325
改平倉時間,指改結算這一天,所以結算完。
程式內的時間必須改回來。然後交易新的合約
當然,也可以選擇放著等結算。
新的合約開始時,又是空手開始,重新當沖。
不過今天被嚇到了。
如圖,這是DT昨天和今天的交易點位。
綠色框框是昨日的交易(被巴!!),紅線是昨日和今日的分隔線。
昨天更改程式平倉時間後,在昨日最後一根K線(1330)有一個平倉訊號。
不過因為今日是交易到1345,所以平倉時間又改回1340
所以昨天收盤平倉的訊號消失了!!!!
因為結算日當天HTS沒有1340這一根K線。
以往1340平倉的訊號在結算日當天不會出現。(沒K線怎麼平倉!!)
這樣在HTS連續K線看起來
好像結算日當天的空單一直延續到新契約的第一天。
當然,持倉會被結算掉,新契約也是重零開始。
在下單機實際操作方面也沒有問題。
不過,看了還是不太舒服。
但是還是會擔心一下,若是哪一天訊號文字輸出部份
突然多了一筆前一天的單,會很嘔的。
所以在這邊修改了一下收盤平倉條件。
以下是HTS語法
if dayofweek(date)=3 and dayofmonth(date)>14 and 21>dayofmonth(date) then
condition1=true
else
condition1=false
end if
if condition1=false then
if currentcontracts>0 and time=134000 then
exitlong("EB-N") next bar at market
end if
if 0>currentcontracts and time=134000 then
exitshort("ES-N") next bar at market
end if
end if
if condition1=true then
if currentcontracts>0 and time=132500 then
exitlong("EB-C") next bar at market
end if
if 0>currentcontracts and time=132500 then
exitshort("ES-C") next bar at market
end if
end if
以上,condition1的 True/False用日期去決定
dayofmonth可以算出今日是這個月第幾天
一星期有7天,所以dayofmonth大於14和小於21
可以表示今日在這個月第三個星期之中
dayofweek表示今天是這周星期幾。
所以利用dayofmonth和dayofweek
可以指到結算日是一天
只要是結算日,condition1就是True,不然就是False
而Condition1只要是True,就1325平倉
否則就1340平倉。
以上語法用於5分鐘當沖。
若是做10分鐘當沖,原來收盤平倉時間是1335,改為1315
若是做15分鐘當沖,原來收盤平倉時間是1330,改為1315
.....以此類推。
以上是假設當沖收盤平倉的程式是
"當日倒數第二根K線結束後,發出Exit next bar at market的訊號"
若是有用到Q_Time,不曉得此方法適不適用。
需要有人驗證。
當然,這方法不是萬能。
如果遇到,第三個星期三是假日,就真的麻煩了,那就結算吧XD
如果是波段單的話....
恩,只好選擇結算當天1330以後不發出訊號
if dayofweek(date)=3 and dayofmonth(date)>14 and 21>dayofmonth(date) then
condition1=1330>=time
else
condition1=true
end if
if XXX and condition1 then buy end if
if XXX and condition1 then sell end if
類似像這樣
買賣訊號多判斷一個Condition1
結算日當天,買賣訊號要判斷時間是否在1330以前。
若是日期為非結算日,則Condition1為True,直接pass。
不過一樣,若是結算日不是星期三,還是有問題。
若是怕麻煩,其實都可以直接換倉。
結算日當天不論當衝波段,都下單到遠月。
解決方法不是沒有,但是都很麻煩。
不知道這結算方法是誰想的。