大伊人青草狠狠久久-大伊香蕉精品视频在线-大伊香蕉精品一区视频在线-大伊香蕉在线精品不卡视频-大伊香蕉在线精品视频75-大伊香蕉在线精品视频人碰人

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

開拓者 TB 強(qiáng)悍的全局變量功能 及 源碼范例 想成為開拓者高手必看[開拓者公式]

 



  • 全自動的程序化交易必須解決以下三大難題:

    ⒈既要保證交易信號的及時(shí)性,又要做到信號不能反復(fù);

    ⒉記錄每一次系統(tǒng)開、平倉的價(jià)格,以及賬戶的持倉變動,以便進(jìn)行加減頭寸及資金管理的安排;

    ⒊在同一根K線上進(jìn)行交易控制,實(shí)現(xiàn)跨周期數(shù)據(jù)引用,以便精確實(shí)現(xiàn)短線交易時(shí)機(jī)的把握。

    通過三天的學(xué)習(xí),依托交易開拓者軟件全局變量的強(qiáng)大功能,我終于攻克了上述三大難關(guān)。

    除了普通變量外,交易開拓者軟件提供了三種特殊變量,它們分別是:

    ⒈序列變量:可以進(jìn)行數(shù)據(jù)的回溯,從而實(shí)現(xiàn)條件、循環(huán)語句的應(yīng)用;它的運(yùn)行特點(diǎn)是每一根BAR依次執(zhí)行,這不同于坊間文華等其它交易軟件平臺的一次性運(yùn)算。而且,它的全部函數(shù)均提供了算法,不同于黑箱的做法,有利于校對和修改。

    ⒉引用型變量:可以通過用戶函數(shù)的形式,進(jìn)行一勞永逸式的編寫,避免程序的冗余。

    ⒊全局變量:用于中間計(jì)算過程的記錄和存取,可以實(shí)現(xiàn)同一根BAR上的倉位管理與開平倉價(jià)格記錄。

    假設(shè)我們需要記錄當(dāng)前BAR的動態(tài)倉位狀態(tài),使用普通變量、序列變量都是無法完成這項(xiàng)任務(wù)的,必須使用全局變量來實(shí)施控制,并配合A_SENDORDER函數(shù)來發(fā)出買賣指令。比如,我們當(dāng)條件滿足時(shí),分別記錄買賣倉位的動態(tài)變化后,采用SET GLOBALVAR(0,1),記錄當(dāng)前的倉位為1手多單,然后可以不斷改寫第一個(gè)全局變量的值,在需要讀取操作的時(shí)候,我們采用cw=getglobvar(0)的方式來實(shí)時(shí)地取回。使用全局變量時(shí)一定要進(jìn)行初始化的設(shè)置,這樣在系統(tǒng)斷線后,只要不關(guān)閉相關(guān)圖表,重連后的數(shù)據(jù)依然可以保持正確。切記不可簡單使用BARSTATS的狀態(tài)來確認(rèn)全局變量,

    以下的這個(gè)例子較好地表述了套利系統(tǒng)中全局變量的應(yīng)用。

    Params
    Bool  bInitStatus(False);  // 初始化標(biāo)志,修改初始倉位時(shí)需設(shè)置為True
    Numeric EveryLots(1);    // 每次交易數(shù)量手?jǐn)?shù)程序化交易
    Numeric LongEntryPrice(-100000); // 開多倉的觸發(fā)價(jià)格
    Numeric LongExitPrice(100000);  // 平多倉的觸發(fā)價(jià)格
    Numeric ShortEntryPrice(100000); // 開空倉的觸發(fā)價(jià)格
    Numeric ShortExitPrice(-100000); // 平空倉的觸發(fā)價(jià)格
    Numeric LongStartLots(0);    // 多倉的初始倉位(手?jǐn)?shù)),必須是EveryLots的倍數(shù)
    Numeric LongEndLots(0);     // 多倉的最大倉位(手?jǐn)?shù)),必須是EveryLots的倍數(shù)
    Numeric ShortStartLots(0);    // 空倉的初始倉位(手?jǐn)?shù)),必須是EveryLots的倍數(shù)
    Numeric ShortEndLots(0);     // 空倉的最大倉位(手?jǐn)?shù)),必須是EveryLots的倍數(shù)
    Numeric OffsetPoint(2);   // 委托價(jià)格的偏移值(點(diǎn)數(shù))
    Vars  
    Numeric SpreadUpper;
    Numeric SpreadLower;
    Numeric longPosition;
    Numeric shortPosition;
    Bool bLongEntryCon;
    Bool bShortEntryCon;
    Bool bLongExitCon;
    Bool bShortExitCon;
    Bool bTimeCon;
    Numeric Data0Lots(1);
    Numeric Data1Lots(2);
    Begin
    longPosition = GetGlobalVar(0);
    shortPosition = GetGlobalVar(1);
    If (BarStatus == 0)
    {
      If(longPosition == InvalidNumeric || bInitStatus)
      {
       longPosition = LongStartLots;
       SetGlobalVar(0,longPosition);
      }
      If(shortPosition == InvalidNumeric || bInitStatus)
      {
       shortPosition = ShortStartLots;
       SetGlobalVar(1,shortPosition);
      }
    }Else If(BarStatus == 2 && A_AccountID!="")
    {
      If(EveryLots < 1) Return;
      If(Data0.Q_AskPrice <= 0 || Data0.Q_BidPrice <= 0 || Data1.Q_AskPrice <= 0 || Data1.Q_BidPrice <= 0) Return;
      If(Data0.Q_BidPrice == Data0.Q_UpperLimit || Data0.Q_AskPrice == Data0.Q_LowerLimit) Return;
      If(Data1.Q_BidPrice == Data1.Q_UpperLimit || Data1.Q_AskPrice == Data1.Q_LowerLimit) Return;

      SpreadUpper = Data0.Q_AskPrice-Data1.Q_BidPrice;
      SpreadLower = Data0.Q_BidPrice-Data1.Q_AskPrice;
    // www.weiqiv.net.cn
      bTimeCon = true;//Time>0.0903 ;//And (Time<0.1127 Or Time>0.1333) And Time<0.1456;
      bLongEntryCon = (SpreadUpper<=LongEntryPrice) && (Data0.Q_AskVol>=EveryLots && Data1.Q_BidVol>=EveryLots);
      bLongExitCon = (SpreadLower>=LongExitPrice) && (Data1.Q_AskVol>=EveryLots && Data0.Q_BidVol>=EveryLots);  
      bShortEntryCon = (SpreadLower>=ShortEntryPrice) && (Data1.Q_AskVol>=EveryLots && Data0.Q_BidVol>=EveryLots);
      bShortExitCon = (SpreadUpper<=ShortExitPrice) && (Data0.Q_AskVol>=EveryLots && Data1.Q_BidVol>=EveryLots);
      If(((bLongExitCon And bTimeCon And longPosition>0) Or longPosition>LongEndLots ))
      {
       Data0.A_SendOrder(Enum_Sell,Enum_Exit,Data0Lots,Data0.Q_BidPrice-OffsetPoint*MinMove*PriceScale);
       Data1.A_SendOrder(Enum_Buy,Enum_Exit,Data1Lots,Data1.Q_AskPrice+OffsetPoint*MinMove*PriceScale);
       SetGlobalVar(0,longPosition - EveryLots);
      }

      If(((bShortExitCon And bTimeCon And shortPosition>0) Or shortPosition>ShortEndLots ))
      {
       Data0.A_SendOrder(Enum_Buy,Enum_Exit,Data0Lots,Data0.Q_AskPrice+OffsetPoint*MinMove*PriceScale);
       Data1.A_SendOrder(Enum_Sell,Enum_Exit,Data1Lots,Data1.Q_BidPrice-OffsetPoint*MinMove*PriceScale);
       SetGlobalVar(1,shortPosition - EveryLots);
      }
    //www.weiqiv.net.cn
      If((bLongEntryCon And bTimeCon And longPosition<LongEndLots))
      {
       Data0.A_SendOrder(Enum_Buy,Enum_Entry,Data0Lots,Data0.Q_AskPrice+OffsetPoint*MinMove*PriceScale);
       Data1.A_SendOrder(Enum_Sell,Enum_Entry,Data1Lots,Data1.Q_BidPrice-OffsetPoint*MinMove*PriceScale);
       SetGlobalVar(0,longPosition + EveryLots);
      }
      
      If(( bShortEntryCon And bTimeCon And shortPosition<ShortEndLots))
      {
       Data0.A_SendOrder(Enum_Sell,Enum_Entry,Data0Lots,Data0.Q_BidPrice-OffsetPoint*MinMove*PriceScale);
       Data1.A_SendOrder(Enum_Buy,Enum_Entry,Data1Lots,Data1.Q_AskPrice+OffsetPoint*MinMove*PriceScale);
       SetGlobalVar(1,shortPosition + EveryLots);
      }
    }
    Commentary("多頭倉位="+Text(longPosition));
    Commentary("空頭倉位="+Text(shortPosition));
    End

     

 

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

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

 


【字體: 】【打印文章】【查看評論

相關(guān)文章

    沒有相關(guān)內(nèi)容
  主站蜘蛛池模板: 成人欧美一区二区三区黑人 | 福利视频免费 | xxxx日本免费高清视频 | 欧美大狠狠大臿蕉香蕉大视频 | 热伊人99re久久精品最新地 | 欧美毛片一级的免费的 | 寂寞午夜影院 | 99久久精品免费视频 | 国产亚洲精品欧美一区 | 亚洲一区小说区中文字幕 | 香蕉一区二区三区观 | 久久国产精品男女热播 | 亚洲欧美人成人综合在线50p | 日本在线观看永久免费网站 | 在线观看日本免费视频大片一区 | 羞羞网站视频 | 一级毛片特级毛片免费的 | 日本美女视频韩国视频网站免费 | 天天插天天干 | 澳门久久精品 | 国产精品护士 | 国产欧美亚洲精品综合在线 | 在线视频中文 | 日韩欧美视频在线播放 | 天天槽天天槽天天槽 | 欧美一区二区三区精品国产 | 免费看羞羞视频的网站 | 久久伊人成人网 | 免费观看黄色网 | 国产91福利在线精品剧情尤物 | 九操网| 四虎影视亚洲精品 | 99re只有精品 | 欧美日韩中文字幕在线观看 | 亚洲精品宾馆在线精品酒店 | 97免费视频在线观看 | 国产亚洲女人久久久久久 | 国产人成精品综合欧美成人 | 久久美女性网 | 亚洲一区二区三区高清网 | a免费毛片在线播放 |