網絡延遲引起的重復下單,可以有效避免嗎? [開拓者 TB]
- 咨詢內容:
If(A_BuyPosition>0 and A_GetOpenOrderCount==0 and C<=upline-N)
{
price=Close-off*minpoint;
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,price);
A_SendOrder(Enum_Sell,Enum_Entry,lots,price);
Return;
}
就是這樣一個簡單的語句,但是模擬時候有發現,有時一次信號會成交很多次(測試時lots設置為1)。
個人覺得應該是網絡問題,因為只是偶爾出現,比如一天測試下來只在某時段出現一兩次
這個可以用技術手段避免嗎?我就想說不管是改寫法還是加別的函數,能把這個問題處理下。謝謝大家 - TB技術人員:
沒法避免。。
你所說的重復發單的情況,事實上在最優的網絡情況下也會發生的。
必須委托單 從客戶端走互聯網到交易所,撮合成交后的回報再走互聯網到客戶端,這一流程是一定需要時間的。。
以經驗來看,流程需要時間是超過了一個tick的時間 。
所以,發單 后不加以輔助控制的話,在再一個行情tick到來時,倉位還沒有變化,若其它條件仍是滿足,則會再次發出委托 。
在使用a_sendorder時,除了倉位的判斷控制,一定要加上全局變量配合控制發單次數的。
具體請參考F1幫助 文檔---策略進階里的模板 - TB客服:
小米 發表于 2016-1-6 10:35
沒法避免。。
你所說的重復發單的情況,事實上在最優的網絡情況下也會發生的。
必須委托單 從客戶端走互聯 ...
謝謝
不過因為剛開始學,所以有的地方感覺有點復雜
能不能簡單說下解決的思路? - 網友回復:
小米 發表于 2016-1-6 10:35
沒法避免。。
你所說的重復發單的情況,事實上在最優的網絡情況下也會發生的。
必須委托單 從客戶端走互聯 ...
另外我想了個簡單的思路,想請小米版主看看這樣是否有效
就是在條件語句后部,加入時間的限制,這樣能不能減少這種情況?
比如我覺得20秒出一個tick足夠應付所有情況,我再條件中加入 second==0 , second==20 , second=40
這樣的條件
就是到了這個秒數,才出信號,這樣能不能有效減少此類情況? - 網友回復:
mey16601600 發表于 2016-1-6 11:53
另外我想了個簡單的思路,想請小米版主看看這樣是否有效
就是在條件語句后部,加入時間的限制,這樣能不 ...
首先,在1分鐘以上的周期是讀不到second的值的。
其次,普通 行情下,1秒鐘可有二個tick。這二個tick的second值是一樣的。那同樣沒法控制得到發單 次數。。
建議還是使用模板給出的全局變量來控制一下吧
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容