设为首页收藏本站

 找回密码
 注册
查看: 1708|回复: 2
打印 上一主题 下一主题

请老师检查下这组代码 [复制链接]

Rank: 1

精华
0
UID
140858
积分
43
帖子
29
主题
12
阅读权限
10
注册时间
2013-7-1
最后登录
2017-1-31
跳转到指定楼层
1#
发表于 2013-10-16 14:54:49 |只看该作者 |倒序浏览
本帖最后由 jrqh116098 于 2013-10-18 14:32 编辑

老师,你好,这组代码是有点小问题,同方向的第二单不能发单,看死也看不出来是怎么回事;虽然这组代码的盈利很差,但就是不死心,想知道哪个地方出了问题。代码如下:

//------------------------------------------------------------------------
// 简称: ATest
// 名称: 测试专用
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
      
           //Numeric     n(5);                     //计算前n天的高点参数
           Numeric     TotalGrids(4);              //设定当日的网格数为TotalGrids(第一格计算在内);
           Numeric     FirstGrid(15);              //第一格的点数
           Numeric     Multiple(2);
           Numeric     StartTime(9.20);
           Numeric     EndTime(15.00);
           Numeric     OverTime(15.10);
          
Vars
       Numeric           i;
           NumericSeries     TotalHighLow;         //n天高低点的和
           Numeric           AvgHighLow;           //n天高低点的均值
       NumericSeries     GridInterval;         //每格的点数
           NumericSeries     MidLine(0);              //中线
          
           NumericSeries           UpFirst(0);              //线上第一格
           NumericSeries           UpSecond(0);             //线上第二格
           NumericSeries           UpThird(0);              //线上第三格
          
           NumericSeries           DownFirst(0);            //线下第一格
           NumericSeries           DownSecond(0);           //线下第二格
           NumericSeries           DownThird(0);            //线下第三格
          
           NumericSeries                 BuyMyRealMp;          //多单仓位,为正
           NumericSeries                 SellMyRealMp;         //空单仓位,为负
       NumericSeries                 TodayH;
           NumericSeries                 TodayL;
           Bool                          TimeCon;
           BoolSeries                    BuyInGrid;
           BoolSeries                    SellInGrid;
          
              
Begin
          
          //BuyMyRealMp=GetGlobalVar(0);      //得到全局变量的值
          //SellMyRealMp=GetGlobalVar(1);      //得到全局变量的值
          
          Commentary("空仓仓位:"+Text(SellMyRealMp));
          Commentary("多仓仓位:"+Text(BuyMyRealMp));
          
      If(Date<>Date[1]) //&& BarStatus==2) 加上BarStatus==2语句后,会出现初始化不成功的问题,从逻辑上来说是没有问题的。
            {
                BuyInGrid=True;
                SellInGrid=True;
                BuyMyRealMp=0;
                SellMyRealMp=0;
                TodayH=High;
                TodayL=Low;
                }
                Else
                  {
                  If(High>TodayH)
                    {
                        TodayH=High;
                        }
                  
                  If(Low<TodayL)
                    {
                        TodayL=Low;
                        }
                  }
                 
        If(Time>=StartTime/100 && Time<EndTime/100)
           {
           TimeCon=True;
           }                  
                  
         /*If(Time==0.09 && BarStatus==2 && High==Low)
           {
           AvgHighLow=((AverageD(3,n+1)-AverageD(4,n+1))*(n+1)-OpenD(0))/n;    //AverageD(3,n)取n天(包括当天,故是n+1)来的最高价均值
                                                                                                                                               //AverageD(4,n)取n天(包括当天,故是n+1)来的最低价均值
           /*TotalHighLow=Summation(HighD(1)-LowD(1),n);
           TotalHighLow=0;
           For i=1 To n;
             {
             TotalHighLow=TotalHighLow+(HighD(i)-LowD(i));
         }
           }
         Else
           {
            TotalHighLow=TotalHighLow[1];
           }
          }*/
          
         TotalHighLow=HighD(1)-LowD(1)+HighD(2)-LowD(2)+HighD(3)-LowD(3)+HighD(4)-LowD(4)+HighD(5)-LowD(5);
     AvgHighLow=TotalHighLow/5;
         //AvgHighLow=Average(HighD(1),n)-Average(LowD(1),n);
         Commentary("n天高低点均值:"+Text(AvgHighLow));
         
     GridInterval=(AvgHighLow*Multiple/2-FirstGrid)/(TotalGrids-1);
         Commentary("每格的点数:"+Text(GridInterval));
         
         MidLine=OpenD(0);
         PlotNumeric("中线",OpenD(0));
         
         UpFirst=OpenD(0)+FirstGrid;
         UpSecond=OpenD(0)+FirstGrid+GridInterval;
         UpThird=OpenD(0)+FirstGrid+2*GridInterval;
         
         PlotNumeric("正一格",OpenD(0)+FirstGrid);
         PlotNumeric("正二格",OpenD(0)+FirstGrid+GridInterval);
         PlotNumeric("正三格",OpenD(0)+FirstGrid+2*GridInterval);
         //PlotNumeric("正四格",OpenD(0)+FirstGrid+3*GridInterval);
         
         DownFirst=OpenD(0)-FirstGrid;
         DownSecond=OpenD(0)-FirstGrid-GridInterval;
         DownThird=OpenD(0)-FirstGrid-2*GridInterval;
         
         PlotNumeric("负一格",OpenD(0)-FirstGrid);
         PlotNumeric("负二格",OpenD(0)-FirstGrid-GridInterval);
         PlotNumeric("负三格",OpenD(0)-FirstGrid-2*GridInterval);
         //PlotNumeric("负四格",OpenD(0)-FirstGrid-3*GridInterval);
         
         If(SellMyRealMp==0 && Close[1]>=UpFirst[1] && TimeCon==True && BuyInGrid==True)   //建空仓
           {
           SellShort(1,Open);
           SellMyRealMp=SellMyRealMp-1;
           //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
           }
      
        If(SellMyRealMp==-1 && Close[1]>=UpSecond[1] && TimeCon==True)
          {
          SellShort(1,Open);
          SellMyRealMp=SellMyRealMp-1;
          //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
          }
          
        If(SellMyRealMp==-2 && Close[1]>=UpThird[1])   //空单止损出场
          {
          BuyToCover(0,Open);
          SellMyRealMp=0;
          BuyInGrid=False;
          //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
          }
         
          If(SellMyRealMp==-2 && Close[1]<UpFirst[1])  //空单止盈
             {
                 BuyToCover(1,Open);
                 SellMyRealMp=SellMyRealMp+1;
                 //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
                 }

          If(SellMyRealMp==-1 && Close[1]<MidLine[1])//空单止盈出场
                 {
                 BuyToCover(0,Open);
                 SellMyRealMp=0;
                 //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
                 BuyInGrid=True;
                 }
               
               
           If(BuyMyRealMp==0 && Close[1]<DownFirst[1] && TimeCon==True && SellInGrid==True)  //建多仓
             {
                 Buy(1,Open);
                 BuyMyRealMp=BuyMyRealMp+1;
                 Commentary("多仓仓位:"+Text(BuyMyRealMp));
                 }
                 
          If(BuyMyRealMp==1 && Close[1]<=DownSecond[1] && TimeCon==True)
                {
                Buy(1,Open);
                BuyMyRealMp=BuyMyRealMp+1;
                }
               
          If(BuyMyRealMp==2 && Close[1]<DownThird[1]) //多单止损出场
                {
                Sell(0,Open);
            BuyMyRealMp=0;
                SellInGrid=False;
                }
       
        If(BuyMyRealMp==2 && Close[1]>DownFirst[1]) //多单止盈
           {
           Sell(1,Open);
           BuyMyRealMp=BuyMyRealMp-1;
           }
          
        If(BuyMyRealMp==1 && Close[1]>MidLine[1])
                {
                Sell(0,Open);
                BuyMyRealMp=0;
                SellInGrid=True;
                }
               
        If(Time>=OverTime/100)
          {
          Sell(0,Open);
          BuyToCover(0,Open);
          }
               
End
          
//------------------------------------------------------------------------
// 编译版本        GS2010.12.08
// 用户版本        2013/10/08 22:21
// 版权所有        jrqh116098
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

Rank: 1

精华
0
UID
140858
积分
43
帖子
29
主题
12
阅读权限
10
注册时间
2013-7-1
最后登录
2017-1-31
2#
发表于 2013-10-16 14:59:18 |只看该作者
If(BuyMyRealMp==1 && Close[1]<=DownSecond[1] && TimeCon==True)
                 {
                 Buy(1,Open);
                 BuyMyRealMp=BuyMyRealMp+1;
                 }

If(SellMyRealMp==-1 && Close[1]>=UpSecond[1] && TimeCon==True)
           {
           SellShort(1,Open);
           SellMyRealMp=SellMyRealMp-1;
           //SetGlobalVar(1,SellMyRealMp); //为全局变量赋值
          }

这两组代码是发不了单的

使用道具 举报

Rank: 1

精华
0
UID
140858
积分
43
帖子
29
主题
12
阅读权限
10
注册时间
2013-7-1
最后登录
2017-1-31
3#
发表于 2013-10-18 14:31:53 |只看该作者
问题已经解决了,谢谢各位大侠的关注,不过改好后,绩效依然不好,但我还是很开心的。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 23:11

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部