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

求解此程序的問題在哪里? [開拓者 TB]

  • 咨詢內容: Params
            Numeric N1(6);
            Numeric N2(5);
            Numeric FastLength(12);
            Numeric SlowLength(26);
            Numeric MACDLength(9);
            Numeric Lots(1);
            Numeric X(10);
    Vars
        Numeric HD;
            Numeric MACDValue;
            Numeric AvgMACD;
            NumericSeries M1;
            NumericSeries M2;
            NumericSeries HH;
            NumericSeries LL;
            Numeric bartime;
            String sectionname;
            String PCName;
            String MP;
            Numeric OrderIndex;

    Begin
        HD=MinMove*PriceScale;       
           

            MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
            AvgMACD = XAverage(MACDValue,MACDLength);
           
            M1 = dema(c,5);
            M2 = dema(c,22);
         
            If(MarketPosition!=0)                   //畫開倉價
            {PlotNumeric("c",EntryPrice);}
           
            If(CurrentBar < MaxBarsBack) Return;

            // 當前BAR的日期和時間
            bartime = Date*1000000+Time*1000000;

            // 準備保存交易信號的數據庫塊名
            sectionname = Symbol+"_"+IIFString(BarType==0,"D","M")+Text(BarInterval)+"_"+FormulaName;  
        PCName = Symbol+"_"+IIFString(BarType==0,"D","M")+Text(BarInterval)+"_"+FormulaName;
           
            // 實時交易才記錄交易信號
            If(BarStatus == 2 And Date == CurrentDate)
            {
                    MP = GetTBProfileString(sectionname,Text(bartime)+"_MP");
                   
                    //If(MarketPosition <>1 && M1[1] > M2[1])
                    If( MP <> "1" And MarketPosition ==0 And MACDValue >=AvgMACD AND M1>=M2 )
                    {
                            // 按順序給當前BAR的交易信號編號并記錄在數據庫中
                            OrderIndex = Value(GetTBProfileString(sectionname,Text(bartime)+"_OrderCnt"));
                            If(OrderIndex == InvalidNumeric) OrderIndex = 1;
                            Else OrderIndex = OrderIndex + 1;
                            SetTBProfileString(sectionname,Text(bartime)+"_TotalOrder",Text(OrderIndex));

                            // 記錄數據庫交易信號的MarketPosition
                            MP = "1";
                            SetTBProfileString(sectionname,Text(bartime)+"_MP",MP);
                           
                            // 記錄交易信號的方向和價格,1多  -1空

                            //Buy(Lots,Open);
                            SetTBProfileString(sectionname,Text(bartime)+"_Order_"+Trim(Text(OrderIndex)),"1");
                            SetTBProfileString(sectionname,Text(bartime)+"_Price_"+Trim(Text(OrderIndex)),Text(Close));
                    }

                    //If(MarketPosition <>-1 && M1[1] < M2[1])
                    If(MP <> "-1" And MarketPosition ==0 And MACDValue<=AvgMACD AND M1<=M2)
                    {
                            // 按順序給當前BAR的交易信號編號并記錄在數據庫中
                            OrderIndex = Value(GetTBProfileString(sectionname,Text(bartime)+"_OrderCnt"));
                            If(OrderIndex == InvalidNumeric) OrderIndex = 1;
                            Else OrderIndex = OrderIndex + 1;
                            SetTBProfileString(sectionname,Text(bartime)+"_TotalOrder",Text(OrderIndex));

                            // 記錄數據庫交易信號的MarketPosition
                            MP = "-1";
                            SetTBProfileString(sectionname,Text(bartime)+"_MP",MP);
                           
                            // 記錄交易信號的方向和價格,1多  -1空

                            //SellShort(Lots,Open);
                            SetTBProfileString(sectionname,Text(bartime)+"_Order_"+Trim(Text(OrderIndex)),"-1");
                            SetTBProfileString(sectionname,Text(bartime)+"_Price_"+Trim(Text(OrderIndex)),Text(Close));
                    }
            }
           

            // 根據數據庫中記錄的該BAR的交易信號,順序發出交易指令

           
            // 第一筆交易
            OrderIndex =1;
            If(GetTBProfileString(sectionname,Text(bartime)+"_Order_"+Text(OrderIndex)) == InvalidString)                // 沒有記錄則返回
            {
                    Return;
            }
            Else                // 否則發出交易指令
            {
                    If(GetTBProfileString(sectionname,Text(bartime)+"_Order_"+Text(OrderIndex)) == "1")
                    {
                            Buy(0,Value(GetTBProfileString(sectionname,Text(bartime)+"_Price_"+Text(OrderIndex))));
                    }
                    Else If(GetTBProfileString(sectionname,Text(bartime)+"_Order_"+Text(OrderIndex)) == "-1")
                    {
                            SellShort(0,Value(GetTBProfileString(sectionname,Text(bartime)+"_Price_"+Text(OrderIndex))));
                    }
            }
           
           
            //定義開倉后的最高最低點
            If(MarketPosition<>0)
                    {               
                      If(GetTBProfileString(PCname,Text(bartime)+"HH") == InvalidString)    //開倉時記錄開倉價位高低點
                      {
                       SetTBProfileString(PCName,Text(bartime)+"HH",Text(EntryPrice));
                       SetTBProfileString(PCName,Text(bartime)+"LL",Text(EntryPrice));
                      }
                      Else                                                
                      {
                      If(C>Value(GetTBProfileString(PCName,Text(bartime)+"HH")))            //開倉后更新高點
                            {
                              SetTBProfileString(PCName,Text(bartime)+"HH",Text(C));
                            }
                      If(C<Value(GetTBProfileString(PCName,Text(bartime)+"LL")))            //開倉后更新低點
                            {
                            SetTBProfileString(PCName,Text(bartime)+"LL",Text(C));
                            }
                      }
                    }
             
           
        If(MarketPosition==1 )
            {
              If( Value(GetTBProfileString(pcname,Text(bartime)+"LL"))<=EntryPrice-X*HD)
               {Sell(0,Min(o,EntryPrice-X*HD));}              //止損
                                  
              ELSE If(Value(GetTBProfileString(pcname,Text(bartime)+"HH"))>=EntryPrice+X*HD AND C<=Value(GetTBProfileString(pcname,Text(bartime)+"HH"))-X*HD)  //跟蹤止盈
               {Sell(0,Min(o,Value(GetTBProfileString(pcname,Text(bartime)+"HH"))-X*HD));}
            }
            If(MarketPosition==-1 )
            {
              If( Value(GetTBProfileString(pcname,Text(bartime)+"HH"))>=EntryPrice+X*HD)
               {BuyToCover(0,Max(o,EntryPrice+X*HD));}
              ELSE If(Value(GetTBProfileString(pcname,Text(bartime)+"LL"))<=EntryPrice-X*HD AND C>=Value(GetTBProfileString(pcname,Text(bartime)+"LL"))+X*HD)
               {BuyToCover(0,MAX(o,Value(GetTBProfileString(pcname,Text(bartime)+"LL"))+X*HD));}
            }
    END

     

  • TB技術人員: 你程序輸出有什么問題

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 1145508240  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 国产精品高清一区二区人妖| 日产2021乱码一区| 午夜无码国产理论在线| 日韩色图在线观看| 女人与狥交下配a级正在播放| 久久精品国产99国产精品亚洲 | 好男人社区www影院在线观看| 久久综合久久久| 污视频免费看网站| 四虎影院海外永久| 欧美jizz40性欧美| 在线观看中文字幕码| 中文字幕人成无码人妻| 最近中文字幕在线mv视频在线 | 麻豆久久婷婷综合五月国产| 在车子颠簸中进了老师的身体 | 丰满人妻被黑人中出849| 欧美.成人.综合在线| 交换美妇94系列部分| 老子影院午夜精品欧美视频| 国产真实乱子伦xxxx仙踪| 99爱视频99爱在线观看免费| 成在线人AV免费无码高潮喷水| 久热re这里只有精品视频| 欧美激情视频一区二区三区免费| 六月婷婷综合激情| 视频一区二区三区欧美日韩| 国产步兵社区视频在线观看| 91香蕉在线看私人影院| 好猛好紧好硬使劲好大男男| 丰满女邻居的嫩苞张开视频| 日韩精品无码专区免费播放| 亚洲成A∨人片在线观看无码| 男人j桶进女人p无遮挡在线观看| 啊灬啊别停灬用力啊动视频| 韩国本免费一级毛片免费| 国产第一导航深夜福利| 91chinese在线| 天堂网在线.www天堂在线资源| 丁香伊人五月综合激激激| 日本一本二本免费播放视频|