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

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

自動(dòng)處理中金所平今倉公式代碼案例 [開拓者 TB]

  • 咨詢內(nèi)容: 本帖最后由 hyjok 于 2015-11-16 15:20 編輯

    自動(dòng)處理中金所平今倉公式代碼案例(實(shí)盤運(yùn)行已經(jīng)2個(gè)月的代碼邏輯)
    一、AorderDataNBuy、AorderDataNSellShort函數(shù)處理平今倉邏輯:
    1、無今倉時(shí),優(yōu)先平昨倉代替開倉
    2、有今倉時(shí),優(yōu)先開倉代替平倉
    3、設(shè)置交易賬戶最大持倉手?jǐn)?shù),預(yù)先考慮資金不足時(shí)的情況,開倉達(dá)到最大持倉手?jǐn)?shù)時(shí)按正常邏輯平今倉(其實(shí)TB中已經(jīng)有自動(dòng)處理平今倉的功能,無奈沒有考慮賬戶資金不足的情況怎么處理,只好自己寫代碼實(shí)現(xiàn),直接設(shè)定最大手?jǐn)?shù)的方式雖然粗略,但基本夠用了)

    二、AutoChangeExitToday自動(dòng)轉(zhuǎn)換平今倉發(fā)單案例測(cè)試策略公式代碼(以帶止損的雙均線策略為例)
    TB設(shè)置忽略自動(dòng)交易,由公式中的兩個(gè)函數(shù)里面的A函數(shù)發(fā)單

    三、Amaxlots尾盤自動(dòng)鎖倉下單公式

    特別需要注意:
    1、函數(shù)中用到"Data/[i/].Close()"調(diào)用,而且是利用忽略自動(dòng)交易后Buy類函數(shù)只顯示信號(hào)但A函數(shù)仍然可以發(fā)單交易的特性,因此本案例公式代碼只能用于V5.1.0.16版本到V5.2.2.5版本
    (TB V5.1.0.16版本起支持"Data/[i/].Close()"調(diào)用,而且保留忽略自動(dòng)交易不包括A函數(shù)發(fā)單,從TB V5.2.2.5版本之后的版本起忽略自動(dòng)交易包括了A函數(shù)發(fā)單,因此V5.2.2.5版本之后的版本不適用)
    2、TB系統(tǒng)設(shè)置“中金所股指日內(nèi)開倉不超過10手”,防止開倉手?jǐn)?shù)超過10手限制


     

  • TB技術(shù)人員: 本帖最后由 hyjok 于 2015-11-16 11:39 編輯

    買入發(fā)單函數(shù)AorderDataNBuy
    1. //------------------------------------------------------------------------
    2. // 簡稱: AorderDataNBuy
    3. // 名稱:
    4. // 類別: 用戶函數(shù)
    5. // 類型: 用戶函數(shù)
    6. // 輸出: 布爾型
    7. //------------------------------------------------------------------------

    8. Params
    9.     Numeric DataN(0); //發(fā)單合約序列,Data0為0、Data1為1,以此類推DataN
    10.     Numeric myLots(1);//下單手?jǐn)?shù)
    11.         Numeric iLastPrice(1);//1為用最新價(jià)報(bào)單,其他為對(duì)手價(jià)報(bào)單
    12.         Numeric OffSet(10);//委托偏移跳數(shù)
    13.         Numeric MaxLots(4);//對(duì)鎖持倉最大手?jǐn)?shù),根據(jù)交易賬戶資金大小自行預(yù)設(shè)最大持倉手?jǐn)?shù)
    14. Vars
    15.         Numeric myBuyPosition;
    16.         Numeric myTodayBuyPosition;
    17.         Numeric myPreDayBuyPosition;
    18.         Numeric mySellPosition;
    19.         Numeric myTodaySellPosition;
    20.         Numeric myPreDaySellPosition;
    21.         Numeric myAskPrice;
    22.         Numeric myBidPrice;
    23.         Numeric MinPoint;
    24.         Bool con;
    25. Begin
    26.     MinPoint = Data[DataN].MinMove*Data[DataN].PriceScale;
    27.         myAskPrice = IIF(iLastPrice==1,Data[DataN].Q_Last,Data[DataN].Q_AskPrice) + MinPoint*OffSet;
    28.         myBidPrice = IIF(iLastPrice==1,Data[DataN].Q_Last,Data[DataN].Q_BidPrice) - MinPoint*OffSet;
    29.     If (A_AccountID<>"")
    30.         {
    31.             myBuyPosition=Data[DataN].A_BuyPosition;
    32.                 myTodayBuyPosition=Data[DataN].A_TodayBuyPosition;
    33.                 myPreDayBuyPosition=myBuyPosition-myTodayBuyPosition;
    34.                 mySellPosition=Data[DataN].A_SellPosition;
    35.                 myTodaySellPosition=Data[DataN].A_TodaySellPosition;
    36.                 myPreDaySellPosition=mySellPosition-myTodaySellPosition;
    37.         }
    38.         if (myTodaySellPosition==0 && mySellPosition>=myLots)//無今倉時(shí)平昨倉,昨倉足夠
    39.         {
    40.             con=Data[DataN].A_SendOrder(Enum_Buy,Enum_Exit,myLots,myAskPrice);
    41.                 mySellPosition = mySellPosition - myLots;
    42.         }Else
    43.         if (myTodaySellPosition==0 && mySellPosition<myLots && mySellPosition>=0)//無今倉時(shí)平昨倉,昨倉不夠時(shí)有多少平多少,余下的轉(zhuǎn)為開倉
    44.         {
    45.             con=Data[DataN].A_SendOrder(Enum_Buy,Enum_Exit,mySellPosition,myAskPrice);
    46.             con=Data[DataN].A_SendOrder(Enum_Buy,Enum_Entry,myLots-mySellPosition,myAskPrice);
    47.                 myTodayBuyPosition = myTodayBuyPosition + myLots-mySellPosition;
    48.                 myBuyPosition = myBuyPosition + myLots-mySellPosition;
    49.                 mySellPosition = 0;
    50.         }Else
    51.         if (myTodaySellPosition>0 && myBuyPosition + myLots<=MaxLots)//有今倉,開倉后持倉不超過MaxLots的情況,平倉轉(zhuǎn)為開倉
    52.         {
    53.                 con=Data[DataN].A_SendOrder(Enum_Buy,Enum_Entry,myLots,myAskPrice);
    54.                 myTodayBuyPosition = myTodayBuyPosition + myLots;
    55.                 myBuyPosition = myBuyPosition + myLots;
    56.         }Else
    57.         if (myTodaySellPosition>0 && myBuyPosition + myLots>MaxLots)//有今倉,開倉后持倉超過MaxLots的情況,能開多少開多少,余下的轉(zhuǎn)為開倉
    58.         {
    59.                 if (myBuyPosition<MaxLots)
    60.                 {
    61.                     con=Data[DataN].A_SendOrder(Enum_Buy,Enum_Entry,MaxLots-myBuyPosition,myAskPrice);
    62.                         con=Data[DataN].A_SendOrder(Enum_Buy,Enum_ExitToday,myLots-(MaxLots-myBuyPosition),myAskPrice);
    63.                         myTodaySellPosition = myTodaySellPosition - (myLots-(MaxLots-myBuyPosition));
    64.                         mySellPosition = mySellPosition - (myLots-(MaxLots-myBuyPosition));
    65.                         myTodayBuyPosition = myTodayBuyPosition + (MaxLots-myBuyPosition);
    66.                     myBuyPosition = MaxLots;
    67.                 }Else if (myBuyPosition>=MaxLots)
    68.                 {
    69.                     con=Data[DataN].A_SendOrder(Enum_Buy,Enum_ExitToday,myLots,myAskPrice);
    70.                         myTodaySellPosition = myTodaySellPosition - myLots;
    71.                         mySellPosition = mySellPosition - myLots;
    72.                 }
    73.         }
    74.     Return con;
    75. End
    復(fù)制代碼

     

  • TB客服: 本帖最后由 hyjok 于 2015-11-16 11:43 編輯

    賣出發(fā)單函數(shù)AorderDataNSellShort
    1. //------------------------------------------------------------------------
    2. // 簡稱: AorderDataNSellShort
    3. // 名稱:
    4. // 類別: 用戶函數(shù)
    5. // 類型: 用戶函數(shù)
    6. // 輸出: 布爾型
    7. //------------------------------------------------------------------------

    8. Params
    9.     Numeric DataN(0); //發(fā)單合約序列,Data0為0、Data1為1,以此類推DataN
    10.     Numeric myLots(1);//下單手?jǐn)?shù)
    11.         Numeric iLastPrice(1);//1為用最新價(jià)報(bào)單,其他為對(duì)手價(jià)報(bào)單
    12.         Numeric OffSet(10);//委托偏移跳數(shù)
    13.         Numeric MaxLots(4);//對(duì)鎖持倉最大手?jǐn)?shù),根據(jù)交易賬戶資金大小自行預(yù)設(shè)最大持倉手?jǐn)?shù)
    14. Vars
    15.         Numeric myBuyPosition;
    16.         Numeric myTodayBuyPosition;
    17.         Numeric myPreDayBuyPosition;
    18.         Numeric mySellPosition;
    19.         Numeric myTodaySellPosition;
    20.         Numeric myPreDaySellPosition;
    21.         Numeric myAskPrice;
    22.         Numeric myBidPrice;
    23.         Numeric MinPoint;
    24.         Bool con;
    25. Begin
    26.     MinPoint = Data[DataN].MinMove*Data[DataN].PriceScale;
    27.         myAskPrice = IIF(iLastPrice==1,Data[DataN].Q_Last,Data[DataN].Q_AskPrice) + MinPoint*OffSet;
    28.         myBidPrice = IIF(iLastPrice==1,Data[DataN].Q_Last,Data[DataN].Q_BidPrice) - MinPoint*OffSet;
    29.     If (A_AccountID<>"")
    30.         {
    31.             myBuyPosition=Data[DataN].A_BuyPosition;
    32.                 myTodayBuyPosition=Data[DataN].A_TodayBuyPosition;
    33.                 myPreDayBuyPosition=myBuyPosition-myTodayBuyPosition;
    34.                 mySellPosition=Data[DataN].A_SellPosition;
    35.                 myTodaySellPosition=Data[DataN].A_TodaySellPosition;
    36.                 myPreDaySellPosition=mySellPosition-myTodaySellPosition;
    37.         }
    38.         if (myTodayBuyPosition==0 && myBuyPosition>=myLots)
    39.         {
    40.                 con=Data[DataN].A_SendOrder(Enum_Sell,Enum_Exit,myLots,myBidPrice);
    41.                 myBuyPosition = myBuyPosition - myLots;
    42.         }Else
    43.         if (myTodayBuyPosition==0 && myBuyPosition<myLots && myBuyPosition>=0)
    44.         {
    45.                 con=Data[DataN].A_SendOrder(Enum_Sell,Enum_Exit,myBuyPosition,myBidPrice);
    46.                 con=Data[DataN].A_SendOrder(Enum_Sell,Enum_Entry,myLots-myBuyPosition,myBidPrice);
    47.                 myTodaySellPosition = myTodaySellPosition + (myLots-myBuyPosition);
    48.                 mySellPosition = mySellPosition + (myLots-myBuyPosition);
    49.                 myBuyPosition = 0;
    50.         }Else
    51.         if (myTodayBuyPosition>0 && mySellPosition + myLots<=MaxLots)//有今倉,平倉轉(zhuǎn)為開倉
    52.         {
    53.                 con=Data[DataN].A_SendOrder(Enum_Sell,Enum_Entry,myLots,myBidPrice);
    54.                 myTodaySellPosition = myTodaySellPosition - myLots;
    55.                 mySellPosition = mySellPosition - myLots;
    56.         }Else
    57.         if (myTodayBuyPosition>0 && mySellPosition + myLots>MaxLots)
    58.         {
    59.                 if (mySellPosition<MaxLots)
    60.                 {
    61.                     con=Data[DataN].A_SendOrder(Enum_Sell,Enum_Entry,MaxLots-mySellPosition,myBidPrice);
    62.                         con=Data[DataN].A_SendOrder(Enum_Sell,Enum_ExitToday,myLots-(MaxLots-mySellPosition),myBidPrice);
    63.                         myTodayBuyPosition = myTodayBuyPosition - (myLots-(MaxLots-mySellPosition));
    64.                         myBuyPosition = myBuyPosition - (myLots-(MaxLots-mySellPosition));
    65.                         myTodaySellPosition = myTodaySellPosition + (MaxLots-mySellPosition);
    66.                     mySellPosition = MaxLots;
    67.                 }Else if (mySellPosition>=MaxLots)
    68.                 {
    69.                     con=Data[DataN].A_SendOrder(Enum_Sell,Enum_ExitToday,myLots,myBidPrice);
    70.                         myTodayBuyPosition = myTodayBuyPosition - myLots;
    71.                         myBuyPosition = myBuyPosition - myLots;
    72.                 }
    73.         }
    74.     Return con;
    75. End
    復(fù)制代碼

     

  • 網(wǎng)友回復(fù): 本帖最后由 hyjok 于 2015-11-16 11:44 編輯

    雙均線策略測(cè)試公式
    1. //------------------------------------------------------------------------
    2. // 簡稱: AutoChangeExitToday
    3. // 名稱: 自動(dòng)轉(zhuǎn)換平今倉發(fā)單案例
    4. // 類別: 公式應(yīng)用
    5. // 類型: 用戶應(yīng)用
    6. // 輸出:
    7. //------------------------------------------------------------------------

    8. Params
    9.         Numeric FastLength(5);
    10.         Numeric SlowLength(20);
    11.        
    12.         Numeric DataN(0); //發(fā)單合約序列,不疊加合約時(shí)Data0為0、疊加合約Data1為1,以此類推DataN
    13.         Numeric Lots(1);
    14.         Numeric AOrder(1);//A函數(shù)發(fā)單開關(guān),1為A函數(shù)發(fā)單,其他為不允許A函數(shù)發(fā)單
    15.         Numeric iLastPrice(1);//1為用最新價(jià)報(bào)單,其他為對(duì)手價(jià)報(bào)單
    16.         Numeric OffSet(10);//委托偏移跳數(shù)
    17.         Numeric MaxLots(4);//對(duì)鎖持倉最大手?jǐn)?shù),用戶根據(jù)賬戶資金大小預(yù)設(shè)最大持倉手?jǐn)?shù),
    18.         //應(yīng)用時(shí)設(shè)置忽略所有自動(dòng)交易,用A函數(shù)發(fā)單,適用于TBV5.2.3.16之前的版本(V5.2.3.16版本開始忽略自動(dòng)交易也會(huì)忽略A函數(shù)發(fā)單)
    19. Vars
    20.         NumericSeries AvgValue1;
    21.         NumericSeries AvgValue2;
    22.        
    23.         Numeric myBuyPosition;
    24.         Numeric myTodayBuyPosition;
    25.         Numeric mySellPosition;
    26.         Numeric myTodaySellPosition;
    27.         Numeric myLots;
    28.         Numeric MinPoint;
    29. Begin
    30.      MinPoint = MinMove*PriceScale;
    31.      If (A_AccountID<>"" && BarStatus==2)
    32.         {
    33.             myBuyPosition=Data[DataN].A_BuyPosition;
    34.                 myTodayBuyPosition=Data[DataN].A_TodayBuyPosition;
    35.                 mySellPosition=Data[DataN].A_SellPosition;
    36.                 myTodaySellPosition=Data[DataN].A_TodaySellPosition;
    37.         }
    38.         Commentary("myBuyPosition="+Text(myBuyPosition));
    39.         Commentary("myTodayBuyPosition="+Text(myTodayBuyPosition));
    40.         Commentary("mySellPosition="+Text(mySellPosition));
    41.         Commentary("myTodaySellPosition="+Text(myTodaySellPosition));
    42.        
    43.         AvgValue1 = AverageFC(Close,FastLength);
    44.         AvgValue2 = AverageFC(Close,SlowLength);

    45.         If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
    46.         {
    47.                 If (AOrder==1 && GetGlobalVar(0)<>1)//全局變量的作用是控制重復(fù)發(fā)單
    48.                 {
    49.                         If (AorderDataNBuy(DataN,IIF(MarketPosition==-1,2,1)*Lots,iLastPrice,OffSet,MaxLots)) SetGlobalVar(0,1);
    50.                 }
    51.                 Buy(Lots,Open);
    52.         }
    53.        
    54.         If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
    55.         {
    56.                 If (AOrder==1 && GetGlobalVar(0)<>-1)
    57.                 {
    58.                         If (AOrderDataNSellShort(DataN,IIF(MarketPosition==1,2,1)*Lots,iLastPrice,OffSet,MaxLots)) SetGlobalVar(0,-1);
    59.                 }
    60.                 SellShort(Lots,Open);
    61.         }
    62.        
    63.         If (MarketPosition==1 && C[1]<=EntryPrice*0.99)
    64.         {
    65.             If (AOrder==1 && GetGlobalVar(0)<>2)
    66.             {
    67.               If (AOrderDataNSellShort(DataN,Abs(CurrentContracts),iLastPrice,OffSet,MaxLots)) SetGlobalVar(0,2);
    68.             }
    69.             Sell(0,Open);
    70.         }
    71.         If (MarketPosition==-1 && C[1]>=EntryPrice*1.01)
    72.         {
    73.             If (AOrder==1 && GetGlobalVar(0)<>-2)
    74.             {
    75.                 If (AorderDataNBuy(DataN,Abs(CurrentContracts),iLastPrice,OffSet,MaxLots)) SetGlobalVar(0,-2);
    76.             }
    77.             BuyToCover(0,Open);
    78.         }
    79.        
    80.         PlotNumeric("MA1",AvgValue1);
    81.         PlotNumeric("MA2",AvgValue2);               
    82. End
    復(fù)制代碼

     

  • 網(wǎng)友回復(fù): 本帖最后由 hyjok 于 2015-11-16 14:52 編輯

    尾盤鎖倉代碼
    1. //------------------------------------------------------------------------
    2. // 簡稱: Amaxlots
    3. // 名稱: A函數(shù)鎖倉下單
    4. // 類別: 公式應(yīng)用
    5. // 類型: 用戶應(yīng)用
    6. // 輸出:
    7. //------------------------------------------------------------------------
    8. //應(yīng)用場景,尾盤鎖倉下單,特別注意時(shí)間設(shè)置,確保其他策略在ActionTime之后不會(huì)再交易,Tick周期圖表運(yùn)行
    9. Params
    10.     Numeric ActionTime(1514.02);
    11.         Numeric AOrder(1);
    12.         Numeric OffSet(2);//委托偏移跳數(shù)
    13.         Numeric MaxLots(2);//對(duì)鎖持倉最大手?jǐn)?shù)
    14.         Numeric ABspreadTick(5);//買賣價(jià)差跳數(shù)
    15. Vars
    16.         Numeric myBuyPosition;
    17.         Numeric myTodayBuyPosition;
    18.         Numeric mySellPosition;
    19.         Numeric myTodaySellPosition;
    20.         Numeric myLots;
    21.         Numeric MinPoint;
    22.         Numeric wthd;//委托滑點(diǎn)
    23.         Numeric bcLots;//補(bǔ)充對(duì)鎖手?jǐn)?shù)
    24.        
    25.         Numeric i;
    26.         Numeric todayEntryLots;//今開手?jǐn)?shù)
    27.     Numeric nCount;
    28. Begin
    29.     Commentary("10000*Time="+Text(10000*Time));
    30.     If (BarStatus<2) Return;
    31.         If (A_AccountID=="") Return;
    32.     MinPoint = MinMove*PriceScale;
    33.         wthd = MinPoint*OffSet;
    34.        
    35.     If (A_AccountID<>"")
    36.         {
    37.             myBuyPosition=A_BuyPosition;
    38.                 myTodayBuyPosition=A_TodayBuyPosition;
    39.                 mySellPosition=A_SellPosition;
    40.                 myTodaySellPosition=A_TodaySellPosition;
    41.         }
    42.         Commentary("myBuyPosition="+Text(myBuyPosition));
    43.         Commentary("myTodayBuyPosition="+Text(myTodayBuyPosition));
    44.         Commentary("mySellPosition="+Text(mySellPosition));
    45.         Commentary("myTodaySellPosition="+Text(myTodaySellPosition));
    46.         If (Date<>Date[1]) SetGlobalVar(2,0);
    47.         If (AOrder==1 && 10000*Time>ActionTime)
    48.         {
    49.             If (GetGlobalVar(2)==InvalidNumeric || GetGlobalVar(2)==0)
    50.                 {
    51.                     todayEntryLots = 0;
    52.                     nCount = A_GetOrderCount();
    53.             For i = 1 To nCount
    54.             {
    55.                                 If (A_OrderStatus(i)==Enum_Filled && A_OrderEntryOrExit(i)==Enum_Entry)
    56.                                 {
    57.                                     todayEntryLots = todayEntryLots + A_OrderLot(i);
    58.                                 }
    59.             }
    60.                     bcLots = MaxLots-Max(myBuyPosition,mySellPosition);
    61.                         If ((todayEntryLots+2*bcLots)>10) bcLots = IntPart((10-todayEntryLots)/2);
    62.                         SetGlobalVar(2,bcLots);
    63.                         Commentary("GetGlobalVar(2)="+Text(GetGlobalVar(2)));
    64.                         Commentary("bcLots="+Text(bcLots));
    65.                 }
    66.                
    67.             If (GetGlobalVar(2)>0 && GetGlobalVar(0)<>1 && A_GetOpenOrderCount()==0 && Q_AskPrice-Q_BidPrice<=ABspreadTick*MinPoint)
    68.                 {
    69.                     If (A_SendOrder(Enum_Sell,Enum_Entry,GetGlobalVar(2),Q_BidPrice-wthd)) SetGlobalVar(0,1);
    70.                         Return;
    71.                 }Else
    72.                 If (GetGlobalVar(2)>0 && GetGlobalVar(1)<>1 && A_GetOpenOrderCount()==0 && Q_AskPrice-Q_BidPrice<=ABspreadTick*MinPoint)
    73.                 {
    74.                     If (A_SendOrder(Enum_Buy,Enum_Entry,GetGlobalVar(2),Q_AskPrice+wthd)) SetGlobalVar(1,1);
    75.                         Return;
    76.                 }
    77.         }
    78.         Commentary("GetGlobalVar(0)="+Text(GetGlobalVar(0)));
    79.         Commentary("GetGlobalVar(1)="+Text(GetGlobalVar(1)));
    80.         Commentary("GetGlobalVar(2)="+Text(GetGlobalVar(2)));
    81. End
    復(fù)制代碼

 

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

可聯(lián)系技術(shù)人員 QQ: 511411198  點(diǎn)擊這里給我發(fā)消息進(jìn)行 有償 編寫!不貴!點(diǎn)擊查看價(jià)格!


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

相關(guān)文章

    沒有相關(guān)內(nèi)容
主站蜘蛛池模板: 成年男女免费视频观看性 | 国产免费理论片在线观看 | 精品欧美一区二区在线看片 | 午夜免费福利影院 | 91视频官网 | 波多野一区二区三区在线 | 久久久久久麻豆 | 最近2019年中文字幕6 | 天天操天天舔天天干 | 麻豆精品传媒一二三区在线视频 | 成人免费男女视频网站慢动作 | 一级毛片免费全部播放完整 | 国产黄色激情视频 | 中文字幕成人网 | 亚洲欧美日韩高清一区二区三区 | 国产高清在线精品二区一 | 视频在线观看免费网站 | 一个人看的www日本高清视频 | 成人午夜在线视频 | 免费人成在线观看网站 | 久爱精品视频在线视频 | 九九精品视频一区在线 | 男人爱看的视频网站免费 | 色综合视频在线观看 | 婷婷成人亚洲 | 一级毛片成人免费看免费不卡 | 香蕉官网| 波多野结衣一区二区三区四区 | 理论片日韩 | 蜜臀91精品国产免费观看 | xh98hx国产在线视频 | 久久久亚洲精品国产 | a资源在线观看 | 最近新韩国日本免费看 | 欧美在线小视频 | 美女视频永久黄网站免费观看韩国 | 激情五月综合网 | 国产99在线视频 | 波多野结衣一二区 | 一级理论片免费观看在线 | 成人精品视频在线观看播放 |