A函數公式不發(fā)單有人懂嗎?麻煩幫忙解決可有償
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2020年12月28日
-
咨詢內容:
Params
? ?? ???Numeric J1(55);
Vars
? ?? ???NumericSeries MA;
? ?? ???Numeric GG;
Begin
? ?? ???If(BarStatus==0) SetGlobalVar(0,0);
? ?? ???MA=Average(C,55);
? ?? ???GG=Highest(H[1],2);
? ?? ???PlotNumeric("MA",MA);
? ?? ?? ?? ?? ?
? ?? ???If(Barstatus <> 2 Or AccountDataExist()==false) return;
? ?? ?? ?? ?? ?
? ?? ???if(BarStatus==2)
? ?? ???{
? ?? ???If(Q_AskPrice > ma[1] and GetGlobalVar (0) <> 1 AND A_BuyPosition==0 )
? ?? ???{
? ?? ???//A_SendOrder(Enum_Sell,Enum_Exit,1,Q_AskPrice);? ?? ?
? ?? ???A_SendOrder (Enum_Buy,Enum_Entry,1,Q_AskPrice )? ?? ???;
? ?? ?? ?? ? SetGlobalVar (0,1);
? ?? ???}
? ?? ?
? ?? ???If(Q_BidPrice<=ma[1] AND GetGlobalVar (0)==1)
? ?? ???{
? ?? ?? ?? ?? ? //A_SendOrder(Enum_Buy,Enum_Exit,1,Q_BidPrice);
? ?? ?? ?? ?? ? A_SendOrder ( Enum_Sell,Enum_Exit,1,Q_BidPrice);? ?? ?
? ?? ?? ?? ?? ? SetGlobalVar (0,0);
? ?? ???}
? ?? ???}
End
?
?來源:CXH99.COM
-
TB技術人員:
本帖最后由 追漲殺跌 于 2020-8-14 16:20 編輯
您好。您的問題,我之前就回復過您,而且我是做過測試后再回復您的,單從發(fā)單角度策略是沒有問題的。
但策略本身的邏輯是否有問題,我確實沒有細測。說實話,每個客戶寫個策略碰到問題就丟給我們調試,我們再多的工作人員也忙不過來,這也絕不是解決問題的正確服務方式,這點希望您多理解。
之后我看您還是不斷地在論壇發(fā)帖、到客服群詢問,雖然這種方式我并不認同。但為了解決您的問題, 就只有花點時間在極速版上做下測試,看看到底是什么原因。測試結果見下圖:
從測試的交易記錄看 ,滿足條件后,發(fā)單確實是沒有問題的。但9點21分54秒后為什么就沒有繼續(xù)發(fā)單呢,仔細看消息中心,可以發(fā)現是有一個報錯的。
所以,后面不發(fā)單,原因還是出在策略本身。
因為您發(fā)出買入開倉單后,SetGlobalVar (0,1); 這是沒問題的,因為如果不設置,在A_BuyPosition改變之前,就有可能會重復地買入。
但買入指令后并不意味著回報就立即回來了,所以賣出平倉時,是需要判斷一下是否A_BuyPosition>0的
而您現在的代碼里并沒有判斷,所以,在9:21:54正好價格上穿完均線,馬上又下穿均線,就發(fā)出了買入開倉指令,還沒等成交,又立即發(fā)出了賣出平倉指令,而這時買入的回報還沒回來,賣出平倉自然就報錯了。但GlobalVar(0)又被您改成0了。后面買入的回報回來了,就演變成了,A_BuyPosition=1,GlobalVar(0)=0,這種出乎意外的情形了
后面就很好理解了,因為開倉和平倉條件都不能滿足了,也就不會再發(fā)單了。按照這個分析,后面一個條件中,應該改成
If(Q_BidPrice<ma[1] AND GetGlobalVar (0)==1 And A_BuyPosition==1)
因時間關系,我只能測試至此,如還有問題,后面只能靠您自己繼續(xù)調試了。
附件: 你需要登錄才可以下載或查看附件。沒有帳號?注冊 ?
-
TB客服:
追漲殺跌 發(fā)表于 2020-8-14 16:18
您好。您的問題,我之前就回復過您,而且我是做過測試后再回復您的,單從發(fā)單角度策略是沒有問題的。
但策 ...
謝謝老師??給您添麻煩了,不發(fā)單的問題已經解決了是因為映射的問題,我用888合約映射主力? ?所以一直不發(fā)單? ?
感謝