人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現(xiàn)在的位置:程序化交易>> 期貨公式>> 交易開(kāi)拓者(TB)>> 開(kāi)拓者知識(shí)>>正文內(nèi)容

TB持倉(cāng)信號(hào)和真實(shí)賬戶(hù)持倉(cāng)不同步的調(diào)整模塊 [開(kāi)拓者 TB]

  • 咨詢(xún)內(nèi)容: 本人開(kāi)發(fā)了一套策略,歷史數(shù)據(jù)回測(cè)什么都很好,接下來(lái)要做到計(jì)算機(jī)自動(dòng)交易。現(xiàn)在萬(wàn)里長(zhǎng)征還差最后一步,就是TB持倉(cāng)信號(hào)和真實(shí)賬戶(hù)持倉(cāng)不同步的調(diào)整模塊,由于都是A_函數(shù)只有在實(shí)時(shí)行情的時(shí)候才能測(cè)試,從上周到現(xiàn)在花了好幾個(gè)交易日,也改了好幾次代碼但還是有重復(fù)發(fā)單或者持倉(cāng)不足等情況,今天收盤(pán)后針對(duì)發(fā)生的問(wèn)題又改進(jìn)了一下,也不知道明天能不能順利通過(guò)。心里沒(méi)底所以把這部分代碼公開(kāi)出來(lái),希望管理員或有自動(dòng)交易實(shí)盤(pán)經(jīng)驗(yàn)的高手指點(diǎn)一下。

    If((BarInterval==1 And Time!=0.1514) Or (BarInterval==5 And Time!=0.1510) Or (BarInterval==15 And Time!=0.1500))
    {
            TickCnt1=15;        //等待TickCnt1次后如不成交采取相應(yīng)措施
           
            If(GetGlobalVar(2)==InvalidNumeric)                        //對(duì)全局變量初始賦值(包括意外網(wǎng)絡(luò)中斷、賬戶(hù)斷開(kāi)等情況后的初始化賦值)
            {
                    SetGlobalVar(2,0);
            }
           
            If(MarketPosition==1)
            {
                    If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)        //沒(méi)有未成交委托單時(shí)計(jì)數(shù)器歸零
                    {
                            SetGlobalVar(2,0);
                    }
                           
                    If(A_BuyPosition>0)
                    {
                            If(A_BuyPosition>Abs(CurrentContracts))                                //真實(shí)賬戶(hù)相對(duì)TB信號(hào)有多余持倉(cāng)
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            OrderWaitCounts=GetGlobalVar(2)+1;                        //計(jì)數(shù)器記錄未成交委托單存在的Tick數(shù)
                                            SetGlobalVar(2,OrderWaitCounts);
                                    }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)                //沒(méi)有委托單時(shí)直接發(fā)單平掉多余持倉(cāng)
                                    {
                                            A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);
                                            SetGlobalVar(2,0);
                                    }
                                   
                                    If(OrderWaitCounts==TickCnt1)                                        //如果委托單持續(xù)TickCnt1個(gè)Tick數(shù)后仍沒(méi)成交
                                    {
                                            A_DeleteOrder();                                                        //撤所有委托單
                                            A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);        //重新發(fā)單平掉多余持倉(cāng)
                                            SetGlobalVar(2,0);                                                        //重置全局變量
                                    }
                            }else if(A_BuyPosition<Abs(CurrentContracts))
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            OrderWaitCounts=GetGlobalVar(2)+1;                        //計(jì)數(shù)器記錄未成交委托單存在的Tick數(shù)
                                            SetGlobalVar(2,OrderWaitCounts);
                                    }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                                    {
                                            A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts)-A_BuyPosition,Q_AskPrice);
                                            SetGlobalVar(2,0);
                                    }
                                   
                                    If(OrderWaitCounts==TickCnt1)
                                    {
                                            A_DeleteOrder();
                                            A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts)-A_BuyPosition,Q_AskPrice);
                                            SetGlobalVar(2,0);
                                    }
                            }else if(A_BuyPosition==Abs(CurrentContracts))                //真實(shí)賬戶(hù)和TB信號(hào)持倉(cāng)同步的時(shí)候
                            {
                                    If(A_GetOpenOrderCount!=0)                                                //如果還有未成交委托單全部撤單,重置全局變量
                                    {
                                            A_DeleteOrder();
                                            SetGlobalVar(2,0);
                                    }else if(GetGlobalVar(2)!=0)
                                    {
                                            SetGlobalVar(2,0);
                                    }
                            }
                    }else if(A_SellPosition>0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                    }else if(A_BuyPosition==0 And A_SellPosition==0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts),Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts),Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                    }
            }else if(MarketPosition==-1)
            {
                    If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)                //沒(méi)有未成交委托單時(shí)計(jì)數(shù)器歸零
                    {
                            SetGlobalVar(2,0);
                    }
                           
                    If(A_BuyPosition>0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                    }else if(A_SellPosition>0)
                    {
                            If(A_SellPosition>Abs(CurrentContracts))
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            OrderWaitCounts=GetGlobalVar(2)+1;                        //計(jì)數(shù)器記錄未成交委托單存在的Tick數(shù)
                                            SetGlobalVar(2,OrderWaitCounts);
                                    }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                                    {
                                            A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition-Abs(CurrentContracts),Q_AskPrice);
                                            SetGlobalVar(2,0);
                                    }
                                   
                                    If(OrderWaitCounts==TickCnt1)
                                    {
                                            A_DeleteOrder();
                                            A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition-Abs(CurrentContracts),Q_AskPrice);
                                            SetGlobalVar(2,0);
                                    }
                            }else if(A_SellPosition<Abs(CurrentContracts))
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            OrderWaitCounts=GetGlobalVar(2)+1;                        //計(jì)數(shù)器記錄未成交委托單存在的Tick數(shù)
                                            SetGlobalVar(2,OrderWaitCounts);
                                    }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                                    {
                                            A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts)-A_SellPosition,Q_BidPrice);
                                            SetGlobalVar(2,0);
                                    }
                                   
                                    If(OrderWaitCounts==TickCnt1)
                                    {
                                            A_DeleteOrder();
                                            A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts)-A_SellPosition,Q_BidPrice);
                                            SetGlobalVar(2,0);
                                    }
                            }else if(A_SellPosition==Abs(CurrentContracts))
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            A_DeleteOrder();
                                            SetGlobalVar(2,0);
                                    }else if(GetGlobalVar(2)!=0)
                                    {
                                            SetGlobalVar(2,0);
                                    }
                            }
                    }else if(A_BuyPosition==0 And A_SellPosition==0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts),Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts),Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                    }
            }else if(MarketPosition==0)
            {
                    If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)                //沒(méi)有未成交委托單時(shí)計(jì)數(shù)器歸零
                    {
                            SetGlobalVar(2,0);
                    }
                           
                    If(A_BuyPosition>0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
                                    SetGlobalVar(2,0);
                            }
                    }else if(A_SellPosition>0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    OrderWaitCounts=GetGlobalVar(2)+1;
                                    SetGlobalVar(2,OrderWaitCounts);
                            }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
                            {
                                    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                                   
                            If(OrderWaitCounts==TickCnt1)
                            {
                                    A_DeleteOrder();
                                    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
                                    SetGlobalVar(2,0);
                            }
                    }else if(A_BuyPosition==0 And A_SellPosition==0)
                    {
                            If(A_GetOpenOrderCount!=0)
                            {
                                    A_DeleteOrder();
                                    SetGlobalVar(2,0);
                            }else if(GetGlobalVar(2)!=0)
                            {
                                    SetGlobalVar(2,0);
                            }
                    }
            }
    }

    前面部分在MarketPosition==1情況下做了些注釋?zhuān)竺孢壿嬍且恢碌摹;舅悸肪褪前l(fā)覺(jué)TB信號(hào)與實(shí)際持倉(cāng)不一致的時(shí)候,先檢查是不是已有委托單(可能是其他模塊用Buy Sell命令發(fā)送的),如果已有委托單等待TickCnt1時(shí)間,如果該時(shí)間后沒(méi)有成交則撤單用A_SendOrder發(fā)送。同時(shí)繼續(xù)用OrderWaitCounts記錄委托單發(fā)出未成的時(shí)間,如果過(guò)了TickCnt1時(shí)間還是沒(méi)成交,繼續(xù)撤單重發(fā),直至實(shí)際持倉(cāng)與TB信號(hào)同步。同步后檢查是否還有未成交的委托單,如果有全部撤單并重置全局變量。

    不同步的問(wèn)題測(cè)試起來(lái)實(shí)在很麻煩,所以懇請(qǐng)高手回復(fù),看看以上代碼有無(wú)邏輯錯(cuò)誤,會(huì)不會(huì)導(dǎo)致重復(fù)發(fā)單或其他問(wèn)題。多謝了,加急!!!

     

  • TB技術(shù)人員: 不是有數(shù)據(jù)回放嗎?可以多試試的現(xiàn)在,以前沒(méi)有回放的時(shí)候我也很糾結(jié)。。。

     

  • TB客服: 回放只顯示行情,對(duì)實(shí)際賬戶(hù)持倉(cāng)測(cè)試沒(méi)用的

     

  • 網(wǎng)友回復(fù): 額,好吧,忘記自己沒(méi)用A函數(shù)了。。

     

  • 網(wǎng)友回復(fù): 今天實(shí)時(shí)行情繼續(xù)測(cè)試中,問(wèn)題比之前少了些,不過(guò)還是有很多警告,而且都是連續(xù)發(fā)出的警告,持倉(cāng)不足、資金不足和相應(yīng)委托不能撤銷(xiāo)這三類(lèi)都有。我分析了一下代碼,選前一段一起看一下:
    If(A_BuyPosition>0)
                    {
                            If(A_BuyPosition>Abs(CurrentContracts))                                //真實(shí)賬戶(hù)相對(duì)TB信號(hào)有多余持倉(cāng)
                            {
                                    If(A_GetOpenOrderCount!=0)
                                    {
                                            OrderWaitCounts=GetGlobalVar(2)+1;                        //計(jì)數(shù)器記錄未成交委托單存在的Tick數(shù)
                                            SetGlobalVar(2,OrderWaitCounts);
                                    }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)                //沒(méi)有委托單時(shí)直接發(fā)單平掉多余持倉(cāng)
                                    {
                                            A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);
                                            SetGlobalVar(2,0);
                                    }
                                   
                                    If(OrderWaitCounts==TickCnt1)                                        //如果委托單持續(xù)TickCnt1個(gè)Tick數(shù)后仍沒(méi)成交
                                    {
                                            A_DeleteOrder();                                                        //撤所有委托單
                                            A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);        //重新發(fā)單平掉多余持倉(cāng)
                                            SetGlobalVar(2,0);                                                        //重置全局變量
                                    }
                            }

    我估計(jì)問(wèn)題出在
    If(OrderWaitCounts==TickCnt1)                                        //如果委托單持續(xù)TickCnt1個(gè)Tick數(shù)后仍沒(méi)成交
                                    {
                                            A_DeleteOrder();                                                        //撤所有委托單
                                            A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);        //重新發(fā)單平掉多余持倉(cāng)
                                            SetGlobalVar(2,0);                                                        //重置全局變量
                                    }
    這段里,因?yàn)槔锩嬗谐蜂N(xiāo)委托操作和發(fā)單操作,如果是開(kāi)倉(cāng)單頻繁發(fā)單就會(huì)導(dǎo)致資金不足警告,如果是平倉(cāng)單就會(huì)導(dǎo)致持倉(cāng)不足警告。我設(shè)計(jì)的思路是當(dāng)OrderWaitCounts==TickCnt1的時(shí)候只要求發(fā)送一次,因?yàn)榘l(fā)送完全局變量就被重置為0了,這樣即使不成交再進(jìn)入該條件OrderWaitCounts又要重新開(kāi)始計(jì)數(shù)等待,如果等到TickCnt1時(shí)再撤單重發(fā)。但實(shí)際情況是這段代碼并沒(méi)有只發(fā)送一次,還是頻繁在發(fā)送,百思不其解,請(qǐng)管理員或諸位高手幫忙解答,謝謝了!

 

有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友

可聯(lián)系技術(shù)人員 QQ: 262069696  點(diǎn)擊在線(xiàn)交流進(jìn)行 有償 編寫(xiě)!不貴!點(diǎn)擊查看價(jià)格!


【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒(méi)有相關(guān)內(nèi)容
主站蜘蛛池模板: 伊人网站| 国产高清一区二区三区 | 天堂v亚洲国产v一区二区 | 999久久久免费精品国产牛牛 | 欧美亚洲国产精品 | 欧美日韩在线成人 | 男女男在线精品网站免费观看 | 男人爱看的视频网站免费 | 成人黄网18免费观看的网站 | 日韩wuma| 在线观看深夜观看网站免费 | 成人免费无毒在线观看网站 | 欧美成人中文字幕在线视频 | 日日操免费视频 | 亚洲国产成人影院播放 | 日韩视频中文字幕 | 国产亚洲人成网站天堂岛 | 色费女人18女人毛片免费视频 | 成人网18视频网站 | 成人在免费观看视频国产 | 亚洲美女操 | 看污网址| 国产一区二区三区亚洲欧美 | 九九精品视频在线播放8 | 亚洲三级精品 | 国内精品视频 | 九九热播视频 | h片在线观看免费 | 中国嫩模一级毛片 | 免费羞羞视频网站 | 成人久久免费视频 | 亚洲国产天堂久久综合网站 | 91小视频在线观看免费版高清 | 色网站免费看 | 欧美日本黄色 | 色综合天天综合网站中国 | 日韩免费一级 | 国产真实乱freesex | 国产成人高清亚洲一区91 | 久久精品网 | 国产精品亚洲第五区在线 |