设为首页收藏本站

 找回密码
 注册
查看: 3033|回复: 4

请教前辈这个程序按策略写出来错在哪里? [复制链接]

Rank: 1

精华
0
UID
107268
积分
33
帖子
16
主题
6
阅读权限
10
注册时间
2012-3-26
最后登录
2012-5-31
发表于 2012-4-11 16:14:38 |显示全部楼层
本帖最后由 nini123 于 2012-4-20 17:08 编辑

本人是新手,刚接触TB编程不久,语法没有问题但是跟要得到的结果不一样,希望各位前辈帮忙指正修改下
程序:
Params
      Numeric TradeEndTime(150500);
      Numeric Lots(1);
      Numeric Stoploss(5);          
     Numeric Length1(5);
      Numeric Length2(10);
      Numeric Length3(20);
      Numeric Length4(60);
Vars
      NumericSeries MA5;
      NumericSeries MA10;
      NumericSeries MA20;
      NumericSeries MA60;
      NumericSeries EntryPrice;
      NumericSeries ExitPrice;
      NumericSeries high;
      NumericSeries Low;
      NumericSeries MidLine;
      Numeric TargetPrice(0);
      Numeric StopPrice(0);
      Bool Buycondition(False);
      Bool Sellcondition(False);
      Bool condition(False);
      Bool flag(False);      
Begin
        MA5=AverageFC(Close,Length1);
        MA10=AverageFC(Close,Length2);
        MA20=AverageFC(Close,Length3);
        MA60=AverageFC(Close,Length4);
        PlotNumeric("MA5",MA5);
        PlotNumeric("MA10",MA10);
        PlotNumeric("MA20",MA20);
        PlotNumeric("MA60",MA60);
        StopPrice=MA60-Stoploss*minmove*PriceScale;
        if(date==date[1]&&Time<TradeEndTime*0.000001)
        {if(CrossOver(MA5[1],MA20[1]))
         {Buycondition=True;
          EntryPrice=Open;
          Buy(Lots,EntryPrice);
                }//5日均线上穿20日均线,多头进场一手
        if(Buycondition&&Close[1]<MA60[1])//进场后,如果价格仍然处于MA60之下
        {TargetPrice=EntryPrice+2*minmove*priceScale;
         if(CrossUnder(MA5[1],MA20[1]))//5日均线下20日均线时平仓止损
         {Sell(lots,Open);
          Buycondition=False;
          Sellcondition=False;
         }
         else if(Open-EntryPrice>=5*minmove*PriceScale&&High>=TargetPrice)//有盈利超过五点,则跟踪止盈设在进场点上方两个点
         {ExitPrice=Max(TargetPrice,Open);
          Sell(Lots,ExitPrice);
         }
        }
/*B条件*/if(Buycondition&&CrossOver(Close[1],MA60[1]))//进场后价格上穿MA60
       {EntryPrice=MA60+MinMove*3*PriceScale;
        Buy(Lots,EntryPrice);//在MA60上方3点处加仓一手
        if(Low<=MidLine)//止损设于布林通道中轨处
        {ExitPrice=min(MidLine,Open);
                sell(lots,Exitprice);
               Buycondition=False;//多单进场条件清零
        condition=True;
             }
       }
/*C条件*/if(condition&&CrossUnder(MA5[1],MA20[1]))
        {SellShort(Lots,open);
         StopPrice=MA60-Stoploss*minmove*PriceScale;
         flag=true;
         if(high>=StopPrice)
         {ExitPrice=Min(StopPrice,open);
          Buytocover(lots,ExitPrice);
          Buycondition=False;
          Sellcondition=False;                  
         }
         else
         {if(CrossOver(MA5[1],MA10[1]))
          buytocover(lots,open);
          else if(Close<=midline)
          {Buytocover(lots,open);
          }
         }
       }
        if(condition&&flag&&CrossOver(MA5[1],MA20[1]))
         {buy(lots,open);
          TargetPrice=open+10*minmove*PriceScale;
          if(High>=TargetPrice)
          sell(lots,min(TargetPrice,open));
          else if(CrossUnder(MA5[1],MA10[1]))
          sell(lots,open);        
        }
      }
     else
     {Sell(0,open);
      Buytocover(0,open);
      Buycondition=False;
      Sellcondition=False;
     }
End

Rank: 5Rank: 5

精华
0
UID
73474
积分
1249
帖子
695
主题
30
阅读权限
60
注册时间
2011-10-22
最后登录
2015-11-6
发表于 2012-4-15 11:39:26 |显示全部楼层
请问,你用的是多少分钟的周期?????,操作的是什么期货品种??????

使用道具 举报

Rank: 1

精华
0
UID
107268
积分
33
帖子
16
主题
6
阅读权限
10
注册时间
2012-3-26
最后登录
2012-5-31
发表于 2012-4-16 10:45:43 |显示全部楼层
额  是五分钟线  试验的是if888

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
86268
积分
2261
帖子
947
主题
67
阅读权限
70
注册时间
2011-12-13
最后登录
2021-6-6
发表于 2012-4-21 07:02:16 |显示全部楼层
简单变量是不会自动传递的,所以只有在判断bar改变,bool改成boolseries试试。

使用道具 举报

Rank: 4

精华
0
UID
50057
积分
304
帖子
175
主题
17
阅读权限
50
注册时间
2011-6-27
最后登录
2015-1-4
发表于 2012-4-21 18:36:49 |显示全部楼层
4l楼说的对  要用 boolseries变量 才能实现

使用道具 举报

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

bottom

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

GMT+8, 2024-4-16 23:53

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部