设为首页收藏本站

 找回密码
 注册
查看: 2584|回复: 3

问一下open价开仓的信号闪烁问题 [复制链接]

Rank: 1

精华
0
UID
201963
积分
28
帖子
19
主题
6
阅读权限
10
注册时间
2015-1-19
最后登录
2021-4-18
发表于 2017-1-25 10:33:04 |显示全部楼层
该策略用close[1]作为判断,用buy(1,open)开仓。
比如在上一个bar满足了条件,但交易信号在当前bar上闪烁,直到下一个bar出现,交易信号才固定,并且用下一个bar的open价成交。
请问怎么写才能让他在当前bar的open成交。

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
发表于 2017-1-25 13:28:12 |显示全部楼层
整个代码是啥样的?发来看一下
如果仅是用上一个bar的值做判断,是不会有信号闪烁的问题哟。

使用道具 举报

Rank: 1

精华
0
UID
201963
积分
28
帖子
19
主题
6
阅读权限
10
注册时间
2015-1-19
最后登录
2021-4-18
发表于 2017-1-25 19:51:15 |显示全部楼层
小米 发表于 2017-1-25 13:28
整个代码是啥样的?发来看一下
如果仅是用上一个bar的值做判断,是不会有信号闪烁的问题哟。 ...

自我感觉问题可能在全局变量上,但我回测的时候的确每一个Bar的BkTime,SkTime的变化都是正确的。
但在实盘里就出现了信号闪烁不成交,直到下一个Bar出现,才以下一个Bar的open成交。
难道是MarketPosition的问题,请版主解惑下。
-------------------------------------------------------------------------------

Params
        Numeric TrendLength(120);//大趋势
        Numeric PanZheng(10);
Vars
        NumericSeries TREND(0);//大周期
        Numeric BkTime;
        Numeric SkTime;
        Numeric HasBk;
        Numeric HasSk;
Begin

        // 集合竞价和小节休息过滤
        If(!CallAuctionFilter())
        Return;
        BkTime=GetGlobalVar(0);
        SkTime=GetGlobalVar(1);
        HasBk=GetGlobalVar(2);
        HasSk=GetGlobalVar(3);
        If(HasSk==1)
        {
                SkTime=SkTime+1;
                SetGlobalVar(1,SkTime);
        }
        If(HasBk==1)
        {
                BkTime=BkTime+1;
                SetGlobalVar(0,BkTime);
        }
        If(SkTime>PanZheng)
        {
                HasSk=0;
                SetGlobalVar(3,HasSk);
        }
        If(BkTime>PanZheng)
        {
                HasBk=0;
                SetGlobalVar(2,HasBk);
        }
        //初始设置
        TREND=Average(Close,TrendLength);
        //多头开仓
        If (MarketPosition<>1  And  Vol > 0 AND Close[1]>TREND And HasBk==0)       
        {
                Buy(0,Open);
                BkTime=0;
                SetGlobalVar(0,BkTime);
                HasBk=1;
                SetGlobalVar(2,HasBk);
        }
       
        //多头平仓
        If (MarketPosition==1 And BarsSinceEntry>0 And Close[1]<TREND And Vol > 0)
        {
                Sell(0,Open);
                HasBk=0;
                SetGlobalVar(2,HasBk);
        }
        //空头开仓
        If(MarketPosition<>-1 And Vol > 0 AND Close[1]<TREND  And HasSk==0)
       
        {
                SellShort(0,Open);
                SkTime=0;
                SetGlobalVar(1,SkTime);
                HasSk=1;
                SetGlobalVar(3,HasSk);
        }
       
        //空头平仓
        If (MarketPosition==-1 And BarsSinceEntry>0 and Close[1]>TREND And Vol > 0)
        {
                BuyToCover(0,Open);
                HasSk=0;
                SetGlobalVar(3,HasSk);
        }
End

使用道具 举报

Rank: 1

精华
0
UID
201963
积分
28
帖子
19
主题
6
阅读权限
10
注册时间
2015-1-19
最后登录
2021-4-18
发表于 2017-1-25 20:47:03 |显示全部楼层
小米 发表于 2017-1-25 13:28
整个代码是啥样的?发来看一下
如果仅是用上一个bar的值做判断,是不会有信号闪烁的问题哟。 ...

我对累加做了处理,CurrentBar不同时才进行累加,这样每个Bar就只做一次累加了吧
       
      If(CurrentBar==0)
        {
                SetGlobalVar(0,0);
                SetGlobalVar(1,0);
                SetGlobalVar(2,0);
                SetGlobalVar(3,0);
        }
        If(CurrentBar!=GetGlobalVar(4))
        {
                BkTime=GetGlobalVar(0);
                SkTime=GetGlobalVar(1);
                HasBk=GetGlobalVar(2);
                HasSk=GetGlobalVar(3);
                If(HasSk==1)
                {
                        SkTime=SkTime+1;
                        SetGlobalVar(1,SkTime);
                }
                If(HasBk==1)
                {
                        BkTime=BkTime+1;
                        SetGlobalVar(0,BkTime);
                }
                If(SkTime>PanZheng)
                {
                        HasSk=0;
                        SetGlobalVar(3,HasSk);
                }
                If(BkTime>PanZheng)
                {
                        HasBk=0;
                        SetGlobalVar(2,HasBk);
                }
        }
        SetGlobalVar(4,CurrentBar);

使用道具 举报

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

bottom

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

GMT+8, 2024-3-29 23:14

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部