請問實現(xiàn)同一個bar上出現(xiàn)平倉不再追加開倉,如何處理? [開拓者 TB]
- 咨詢內(nèi)容:
因我做了兩個獨立的開倉條件,會有追加開倉的情況。模擬盤測試發(fā)現(xiàn),如果第一個條件下已開倉1手,在某個bar上出現(xiàn)了平倉的信號(以開盤價發(fā)出),同時該bar也出現(xiàn)了滿足另一個開倉條件發(fā)出的加倉1手的指令(以開盤價發(fā)出),帶來兩個問題:一是導(dǎo)致不必要的開平倉;二是系統(tǒng)因為無法判別順序,會以平倉2手,開倉1手發(fā)出委托單,實際成交時先開后平?jīng)]有問題,但如果先平2手后開1手,則導(dǎo)致留下1收開倉,暴露了風險。
解決方案:
1、同一bar上避免既有開倉又有平倉的方法,我查閱了網(wǎng)上的,一般是給開倉條件增加BarSinceExit!=0來處理,但這個函數(shù)的前提條件是空倉才有效,我這里的情況是bar上已有1手的持倉,所以無法使用。
2、解決成交的順序問題,我查閱使用先開倉再平倉來解決,應(yīng)該是沒問題的,對吧?
請版主和高手幫忙!謝謝! - TB技術(shù)人員:
1,不在同一個bar上即開又平,可以將平倉語句寫在開倉和加倉語句前,且是 if ....else if.....else if...的邏輯
2,歷史K線中沒法判斷實時的行情出現(xiàn)的先后順序。。這個不太想法不太能實現(xiàn) 。 - TB客服:
本帖最后由 dagan3200 于 2016-4-21 16:33 編輯
小米 發(fā)表于 2016-4-20 11:30
1,不在同一個bar上即開又平,可以將平倉語句寫在開倉和加倉語句前,且是 if ....else if.....else if...的 ...
調(diào)了下,發(fā)現(xiàn)不是兩個條件下單,而是其中一個條件允許累計加倉(設(shè)置了最大允許加倉2次)導(dǎo)致,為了保留加倉的效果,同一個bar上只能保留既開又平。
現(xiàn)在,為了保證真實賬戶與TB信號匹配,使用A函數(shù)來處理這個問題,如下。兩個問題:
1、調(diào)試顯示第二行(If這句)缺少分號“;”,但我找不出錯誤原因。
2、邏輯上也請幫忙看看對不對,先給 TickCnt1賦初值為0,然后每個tick過來執(zhí)行一遍第一段的if語句 (效果是TickCnt1+1),經(jīng)過30個tick后( TickCnt1達到30),再執(zhí)行If里的語句。
請大大指教!
TickCnt1=0;
If (TickCnt1<30 && MarketPosition==0)//TB信號為空倉,且30個Tick數(shù)未達到;
{
TickCnt1=TickCnt1+1;
}
Else If ( TickCnt1>=30 && MarketPosition==0); //TB信號為空倉,如果等待了TickCnt1個tick數(shù)后
{
If(A_BuyPosition>0 && A_BuyPosition>Abs(CurrentContracts)&&A_GetOpenOrderCount==0) //當前有買入持倉&&真實賬戶相對TB信號有多余持倉&&沒有委托單時直接發(fā)單平掉多余持倉
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);
TickCnt1=0;
}
Else if(A_SellPosition>0 && A_SellPosition>Abs(CurrentContracts)&&A_GetOpenOrderCount==0)//當前有賣出持倉&&真實賬戶相對TB信號有多余持倉&&沒有委托單時直接發(fā)單平掉多余持倉
{
A_SendOrder(Enum_Sell,Enum_Exit,A_SellPosition-Abs(CurrentContracts),Q_AskPrice);
TickCnt1=0;
}
} - 網(wǎng)友回復(fù):
dagan3200 發(fā)表于 2016-4-21 13:58
調(diào)了下,發(fā)現(xiàn)不是兩個條件下單,而是其中一個條件允許累計加倉(設(shè)置了最大允許加倉2次)導(dǎo)致,為了保留 ...
A函數(shù)是沒有信號的,不存在信號前后的問題呀。。那我前面給的處理語句完全不適用于這里,可忽略。。。
使用a_sendorder發(fā)單 ,是沒法使用marketposition進行判斷的。。
- 網(wǎng)友回復(fù):
本帖最后由 dagan3200 于 2016-4-21 16:30 編輯
小米 發(fā)表于 2016-4-21 14:44
A函數(shù)是沒有信號的,不存在信號前后的問題呀。。那我前面給的處理語句完全不適用于這里,可忽略。。。
使 ...
是的,我這里marketpositon只是為了看當前圖表上信號,圖表上如果是空倉,而實際賬戶不是空倉再用A_sendorder去平掉多出的真實持倉,這樣保證圖表信號和真實持倉情況匹配。你看是這樣吧?然后那個缺少分號“;”的錯誤提示怎么解?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容