您現在的位置:程序化交易>> 期貨公式>> 交易開拓者(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  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 亚洲av永久综合在线观看尤物 | 美国一级毛片免费看| 国产精品美女久久久免费| 中文字幕一区二区人妻性色| 欧美一区二区三区在观看| 免费av一区二区三区无码| 青苹果乐园在线影院免费观看完整版| 在公车上被一个接一个| 中文字幕在线观看第一页| 最近2018免费中文字幕视频| 亚洲精品乱码久久久久久不卡| 综合激情网五月| 国产剧情av麻豆香蕉精品| **aa级毛片午夜在线播放| 奇米影视奇米四色888av| 久久久久久久性潮| 杨幂精品国产福利在线| 亚洲精品一级片| 精品午夜一区二区三区在线观看 | 日韩国产有码在线观看视频| 亚洲最大成人网色香蕉| 精品一区二区三区在线观看视频| 国产免费观看a大片的网站| 男人天堂资源站| 在线免费成人网| 一本大道加勒比久久综合| 日本一区高清视频| 五月天婷婷久久| 欧美日韩国产58香蕉在线视频| 免费成人在线网站| 羞耻暴露办公室调教play视频| 国产在亚洲线视频观看| 日批视频网址免费观看| 在线不卡一区二区三区日韩| 一本无码中文字幕在线观| 无码专区aaaaaa免费视频| 久久精品中文字幕| 欧美va天堂va视频va在线| 亚洲欧美日韩中文字幕久久| 男人天堂网www| 动漫痴汉电车1~6集在线|