设为首页收藏本站

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

请高手帮忙看看这个程序问题在哪儿 [复制链接]

Rank: 5Rank: 5

精华
0
UID
13821
积分
672
帖子
36
主题
18
阅读权限
60
注册时间
2010-7-6
最后登录
2013-1-6
跳转到指定楼层
1#
发表于 2010-7-17 00:38:16 |只看该作者 |倒序浏览
多头不能像空头一样连续开单,我希望多头能跟空头一样开平仓
//------------------------------------------------------------------------
// 简称: RB
// 名称: RangeBreak
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Params
      Numeric PercentOfRange(0.8);
      Numeric ExitOnCloseMins(14.55);
      Numeric MinRange(0.2);
      Numeric LastTradeMins(14.00);
      Numeric BeginTradeMins(9.00);
      Numeric Lots(1);
      Numeric Stoplossset(1);
Vars
      NumericSeries DayOpen;
      NumericSeries preDayRange;
      NumericSeries HigherAfterEntry;
      NumericSeries LowerAfterEntry;
      Numeric preDayHigh;
      Numeric preDayLow;
      Numeric UpperBand;
      Numeric LowerBand;
      Numeric MyPrice;
      Numeric StopLine;
Begin
      DayOpen=OpenD(0);
      preDayHigh=HighD(1);
      preDayLow=LowD(1);
      preDayRange=HighD(1)-LowD(1);
      UpperBand=DayOpen+preDayRange*PercentOfRange;
      LowerBand=Dayopen-preDayRange*PercentOfRange;
     If(BarsSinceEntry==1)
     {
         HigherAfterEntry=AvgEntryPrice;
         LowerAfterEntry=HigherAfterEntry;
      }Else If(BarsSinceEntry>1)
     {
          HigherAfterEntry=max (HigherAfterEntry[1],High[1]);
          LowerAfterEntry=min(LowerAfterEntry[1],Low[1]);
     }
     If(Date!=Date[1])
     {DayOpen=Open;
      preDayRange=preDayHigh-preDayLow;
      If(preDayRange<Open*MinRange*0.01)
         PreDayRange=Open*MinRange*0.01;
      }Else
      {
       DayOpen=DayOpen[1];
       preDayRange=preDayRange[1];
       }
     If(MarketPosition!=1&&High>=UpperBand&&Time<LastTradeMins/100)
     {
              Myprice=UpperBand;
              If(Open>Myprice)Myprice=Open;
              Buy(1,Myprice);
              Return;
      }
      If(MarketPosition!=1&&Low<=LowerBand&&Time<LastTradeMins/100)
     {
              Myprice=LowerBand;
              If(Open<Myprice)Myprice=Open;
              Sellshort(1,Myprice);
              Return;
      }
            
      //收盘平仓
      If(Time>=ExitOnCloseMins/100)
      {
               Sell(1,Open);
               BuyToCover(1,Open);
       }
       SetExitOncLOSE;
End
   


//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2010/07/11 16:44
// 版权所有        oliverzrl
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
2#
发表于 2010-7-17 10:25:12 |只看该作者
If(MarketPosition!=1。。。。 应该是 != -1
这个地方逻辑有问题

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1041
积分
1642
帖子
448
主题
133
阅读权限
70
注册时间
2008-1-9
最后登录
2016-12-26
3#
发表于 2010-7-17 13:35:10 |只看该作者
楼主加上的跟我修改楼主的一样

感觉不同品种需要调整Stoplossset,盈利会有很大偏差

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
7437
积分
2872
帖子
537
主题
133
阅读权限
80
注册时间
2010-3-15
最后登录
2013-11-15
4#
发表于 2010-7-17 20:56:30 |只看该作者

回复 1# oliverzrl 的帖子

Begin
      DayOpen=OpenD(0);
      preDayHigh=HighD(1);
      preDayLow=LowD(1);
      preDayRange=HighD(1)-LowD(1);
      UpperBand=DayOpen+preDayRange*PercentOfRange;
      LowerBand=Dayopen-preDayRange*PercentOfRange;
     If(BarsSinceEntry==1)
     {
         HigherAfterEntry=AvgEntryPrice;
         LowerAfterEntry=HigherAfterEntry;
      }Else If(BarsSinceEntry>1)
     {
          HigherAfterEntry=max (HigherAfterEntry[1],High[1]);
          LowerAfterEntry=min(LowerAfterEntry[1],Low[1]);
     }
     If(Date!=Date[1])
     {DayOpen=Open;
      preDayRange=preDayHigh-preDayLow;
      If(preDayRange<Open*MinRange*0.01)
         PreDayRange=Open*MinRange*0.01;
      }Else
      {
       DayOpen=DayOpen[1];
       preDayRange=preDayRange[1];
       }
     If(High>=UpperBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用

     {
              Myprice=UpperBand;
              If(Open>Myprice)Myprice=Open;
              Buy(Lots,Myprice);
              Return;
      }
      If(Low<=LowerBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用
     {
              Myprice=LowerBand;
              If(Open<Myprice)Myprice=Open;
              Sellshort(Lots,Myprice);
              Return;
      }
            
      //收盘平仓
      If(Time>=ExitOnCloseMins/100)//14.55平仓,此系统就只能在5分钟周期上使用,如果在15分钟周期使用则为14.45
      {
               Sell(0,Open);
               BuyToCover(0,Open);
       }
       //SetExitOncLOSE;此命令在实盘中没作用,只能用于测试
End

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
7437
积分
2872
帖子
537
主题
133
阅读权限
80
注册时间
2010-3-15
最后登录
2013-11-15
5#
发表于 2010-7-17 22:52:45 |只看该作者
If(High>=UpperBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用
If(Low<=LowerBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用
要改为:
If(High[1]>=UpperBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用
If(Low[1]<=LowerBand&&Time<LastTradeMins/100)//MarketPosition!=1&&可以不用

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
3393
积分
130
帖子
10
主题
1
阅读权限
40
注册时间
2009-2-2
最后登录
2019-5-29
6#
发表于 2011-2-18 21:26:13 |只看该作者
好好看看,代码还是要研究地。。。
tradeblaser 学习中,,,,

使用道具 举报

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

bottom

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

GMT+8, 2024-5-10 14:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部