设为首页收藏本站

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

急,请帮忙看看,为什么买/平/加仓都会有信号消失 [复制链接]

Rank: 1

精华
0
UID
90779
积分
39
帖子
8
主题
4
阅读权限
10
注册时间
2012-1-3
最后登录
2012-10-26
跳转到指定楼层
1#
发表于 2012-1-6 09:50:46 |只看该作者 |倒序浏览
Params
   Bool bInitStatus(false);//初始化标志,修改初始仓位时需设置为True
   Numeric InitMyRealMp(0); //初始当前仓位,正数表示多单
  Numeric FirstGrid(10);//第一笔交易的间距,最小跳动
  Numeric AddGrid(2);//加仓间距,最小跳动
  Numeric TotalGrids(3);//最大交易次数
  Numeric TrailingGrid(10); //移动止损间距,最小跳动
  Numeric EveryLots(2);//每次开仓手数
  Numeric OffSet(1); //委托价偏差,默认买卖价偏差1个滑点
  Numeric ExitOnCloseMins(14.58);//收盘平仓时间
Vars
        Numeric HighAfterLongEntry;
        Numeric LowAfterShotEntry;
        Numeric MyRealMp(0);
        Numeric MinPoint;
        Numeric TmpPrice;
        Numeric TmpLots;
       
       
Begin
       
        MinPoint = MinMove*PriceScale;
        MyRealMp = GetGlobalVar(0);
        HighAfterLongEntry = GetGlobalVar(1);
        LowAfterShotEntry = GetGlobalVar(2);
       
        If(BarStatus==0 And (MyRealMp==InvalidNumeric||bInitStatus ))
        {
                MyRealMp = InitMyRealMp;
        }
        If(Date <> Date[1])
        {
                HighAfterLongEntry = High;
                LowAfterShotEntry = Low;
                MyRealMp = 0;
               
        }Else
        {
                HighAfterLongEntry = Max(HighAfterLongEntry,High);
                LowAfterShotEntry = Min(LowAfterShotEntry,Low);
        }
       
        If(Time<ExitOnCloseMins/100 )
        {
  
              If((BarType==1 or BarType==2) && BarStatus == 2 && date!=date[1] && high==low)   return;
               
        If (MyRealMp > 0 And HighAfterLongEntry-Low>=TrailingGrid*MinPoint)//平
        {
                TmpPrice = Max(HighAfterLongEntry - (TrailingGrid-OffSet)*MinPoint,Low);
                TmpLots = Abs(MyRealMp*EveryLots);
                Sell(TmpLots,TmpPrice);
                MyRealMp = 0;
                LowAfterShotEntry=Low;
               }
        If(MyRealMp == 0 And High - LowAfterShotEntry>=FirstGrid*MinPoint)//开仓
        {
                TmpPrice = Min(LowAfterShotEntry+(FirstGrid+OffSet)*MinPoint,High);
                TmpLots = EveryLots;
                Buy(TmpLots,TmpPrice);
                MyRealMp = 1;
                HighAfterLongEntry = High;
        }Else If(MyRealMp > 0 And MyRealMp<TotalGrids And High- LowAfterShotEntry>=(FirstGrid+MyRealMp*AddGrid)*MinPoint)//加
        {
                TmpPrice = Min(LowAfterShotEntry+(FirstGrid+MyRealMp*AddGrid+OffSet)*MinPoint,High);
                TmpLots = EveryLots;
                Buy(TmpLots,TmpPrice);
                MyRealMp=MyRealMp+1;               
        }
一致、专注、简单

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2012-1-6 10:48:42 |只看该作者
回复 1# cpmax009


请用commentary语句将开平条件值 输出检查是否是变化的?
只有条件变化才会导致信号消失。

使用道具 举报

Rank: 1

精华
0
UID
90779
积分
39
帖子
8
主题
4
阅读权限
10
注册时间
2012-1-3
最后登录
2012-10-26
3#
发表于 2012-1-6 11:28:42 |只看该作者
本帖最后由 cpmax009 于 2012-1-6 11:33 编辑

我用的是10秒周期,commentary看过了,HighAfterLongEntry,LowAfterShotEntry一旦计算完后,是不会变的。只有LOW,HIGH才会变动。
但即使H,L会变动,

但条件HighAfterLongEntry-Low,High - LowAfterShotEntry
计算出来的数值,条件一旦成立后,在同一根BAR上,应该是不可逆的,只会越来越大,为什么还有信号消失呢?
一致、专注、简单

使用道具 举报

Rank: 2

精华
0
UID
36169
积分
115
帖子
25
主题
5
阅读权限
30
注册时间
2011-4-27
最后登录
2013-5-3
4#
发表于 2012-3-29 11:36:19 |只看该作者
回复 3# cpmax009
同问。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2012-3-29 14:48:20 |只看该作者
回复 3# cpmax009


    建议还是先使用commentary输入出调试一下。
因为你所写的 HighAfterLongEntry = GetGlobalVar(1);
        LowAfterShotEntry = GetGlobalVar(2); 这两个句会使得这两个变量在每一个BAR开始计算
时都是无效值,那么在后面的语句里赋上值了,并且条件判断满足了,发出了相应的信号。但是到第二个BAR上计算时,
又会被之前那两句将其值变为无效值,这样信号 就消失了。

此公式不必要使用全局变量,建议把这两个定义成序列变量即可。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-7 08:25

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部