關于平倉判斷成交后再開倉的反手指令,金字塔的解決方案和TB的不作為比較! [開拓者 TB]
- 咨詢內容: 日內滿倉交易時,平倉反手的實現方法 Post By:2011-7-13 22:43:44 [只看該作者]
日內滿倉交易時,平倉反手的時候,有個問題要特別注意,就是在平倉單未成交前如果發出開倉委托單會出現保證金不足的情況造成無法自動開倉
這個問題是眾所周知的
1,一般的處理方法是在每個下單指令的最后面加一個順序下單控制符,如下:
hi:=ref(hhv(h,20),1);
lo:=ref(llv(l,20),1);
entertime:=time<=144500;
exittime:=time>=145700;
buycond:=c>hi;
sellcond:=c<lo;
if holding>0 and (sellcond or exittime) then sell(1,1,market),orderqueue;
if holding<0 and (buycond or exittime) then sellshort(1,1,market),orderqueue;
if holding=0 and entertime and buycond then buy(1,1,market),orderqueue;
if holding=0 and entertime and sellcond then buyshort(1,1,market),orderqueue;
這種方法基本上可以解決問題。orderqueue順序下單的意思是委托單按先后順序排隊等待,依次處理
但也有不足的地方,就是在平倉單未及時成交時,依然會出現保證金不足的錯誤。如 A(平多)、B(開空),A未及時成交自動撤單后追單
自動追單的委托就排在后面了,也就是下單順序就為 B、A 。B發送時就會提示錯誤,因為保證金并未釋放。
2,現提出另一處理方法
問題的關鍵,就是要等平倉單完全成交后再發開倉單,這樣才能避免出現保證金不足的情況
反手模型有個特點,就是平倉單成交后,倉位為0,而后臺的tholding2這個函數就是表示實際持倉
于是:
hi:=ref(hhv(h,20),1);
lo:=ref(llv(l,20),1);
entertime:=time<=144500;
exittime:=time>=145700;
buycond:=ref(c>hi,1);
sellcond:=ref(c<lo,1);
abb:=not(islastbar) or (islastbar and tholding2=0);//這里要這樣處理,否則tholding2會影響前面得信號
if holding>0 and (sellcond or exittime) then sell(1,1,market);
if holding<0 and (buycond or exittime) then sellshort(1,1,market);
if holding=0 and entertime and buycond and abb then buy(1,1,market);
if holding=0 and entertime and sellcond and abb then buyshort(1,1,market);
程序執行過程:1,平倉單發出后,不發開倉單,因為tholding2不為0.如果平倉單沒及時成交,自動撤單后追單直至成交
2,平倉單成交后,tholding2=0,此時開倉指令條件成立,發出開倉單。不會出現保證金不足的情況
3,注意,用的是tholding2,而非tholding,tholding會受未成交委托單影響。
以上適用的條件 :1,需要平倉委托在信號成立的K線內成交,才能發出開倉委托。模型基本符合這個條件
2,固定時間間隔或者高頻。如果是K線走完模式,還需稍作修改為固定時間間隔模式
注:這么重要的功能,TB到現在也沒有一個成功的事例來給初級投資者一個模板,來幫助我們這些初級學者來實現這種重要的功能,不知道TB整天都在干什么? - TB技術人員: TB公式里指南里有現成的平倉延遲5個TICK反手的模板。
請查閱
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容