請教:請問以下代碼是否會造成信號閃爍,及重復發單等問題
作者:開拓者 TB 來源:cxh99.com 發布時間:2020年11月18日
-
咨詢內容:
本帖最后由 guanghui1999 于 2020-5-27 15:59 編輯
請教以下問題:
1、下面代碼是否會信號閃爍,包括在Tick線上、分鐘線上,或小時線上,或日線上使用;如果去掉 If(Data0.Vol>0 && Data1.Vol>0),是否信號閃爍的可能性大大增加。
2、是否會重復發單?
? ? 5月26日實盤的情況(用了下面代碼):
? ? 用日巴交易,兩個商品(IC2006和IC2009),用了開盤價判斷(是公式里的Price用了開盤價,但已在上面If語句中用成交量>0作了限制),9點30分有交易信號:Data0(IC2006)看空,Data1(IC2009)看多(用的同一個圖表,Data0和Data1各交易2手),但我沒開TB,所以沒有交易。我25日的持倉:Data0是2手多,Data1是2手空。我在5月26日下午約14:44開啟了此策略的自動交易(日巴上),正常應該是平Data0的2手多,并開2手空倉,同時平Data1的2手空,并開2手多倉。但實際情況卻是:沒有平倉動作,Data0開了4手空,Data1開了4手多(見附圖11和22的成交委托記錄,都是同一時間成交。在TB“當日成交”里也看了是同一策略同一時間委托的)。
3、委托為什么會延遲?
? ? 5月27日,還是用日巴交易,正常應在9:30.00.000產生委托,為什么委托時間延后約4秒這么多?(請見截圖33和44)我回看了當天的Tick數據,9:30:00:000時這兩個商品都是有Tick,也有成交量的,(到底是哪造成的延遲呢?)
4、以下代碼是否還有其他問題,如因為是兩個商品,Tick不一定同時到來,可能會出現延遲問題,或就算Tick同時到來,但有一個沒有成交量,也會出問題等,請您幫助指正。如沒有問題,也請您幫確認下。
5、集合競價和小節休息過濾是否寫得對,對策略委托發單時間有影響嗎?還有必要寫入策略嗎?
以下是可能出問題的代碼,其中A和B是根據歷史巴數據計算出來的,能保證A>=B,且在當前巴是不變的:
// 集合競價和小節休息過濾
If(!CallAuctionFilter()) Return;
If(Data0.Vol>0 && Data1.Vol>0)
{
? ???Price=Data0.Open*3+Data1.Open*2;
? ? ? ?
? ?? ?If(Price>A)
? ?? ? {
? ?? ?? ?? ?If(Data1.MarketPosition<>1)
? ? ? ?? ?? ? {
? ? ? ?? ?? ?? ???Data1.Buy(Lots1, Data1.Open);
? ? ? ?? ?? ? }
? ? ? ?? ?? ? If(Data0.MarketPosition<>-1)
? ? ? ?? ?? ? {
? ? ? ?? ?? ?? ???Data0.SellShort(Lots0, Data0.Open);
? ? ? ?? ?? ? }
? ?? ? }Else
? ?? ? If(Price<B)
? ?? ? {
? ? ? ?? ?? ? If(Data1.MarketPosition<>-1)
? ? ? ?? ?? ? {
? ? ? ?? ?? ?? ???Data1.SellShort(Lots1, Data1.Open);
? ? ? ?? ?? ? }
? ? ? ?? ?? ? If(Data0.MarketPosition<>1)
? ? ? ?? ?? ? {
? ? ? ?? ?? ?? ???Data0.Buy(Lots0, Data0.Open);
? ? ? ?? ?? ? }
? ?? ? }
}
附件: 你需要登錄才可以下載或查看附件。沒有帳號?注冊