设为首页收藏本站

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

交易信号消失问题 [复制链接]

Rank: 1

精华
0
UID
220924
积分
18
帖子
10
主题
7
阅读权限
10
注册时间
2015-10-8
最后登录
2015-12-15
跳转到指定楼层
1#
发表于 2015-12-7 14:55:23 |只看该作者 |倒序浏览
Params


       
       
Vars
        Numeric Sets(1);                //下单组数,每组包含Lots0\Lots1\Lots2
        Numeric Threshold(125);        //Threshold
        Numeric Threshold_ping(100);

       
        Numeric FastEMA(2);     //快线参数
        Numeric SlowEMA(11);    //慢线参数

        NumericSeries FastValue;  //快线   
        NumericSeries SlowValue;  //慢线

        //data0 螺纹
        //data1 铁矿
        //data2 焦炭

        NumericSeries Diff;
        Numeric Minpoint0;
        Numeric Minpoint1;


        Numeric Lots0(10);//数量
        Numeric Lots1(7);//数量


        Bool SendOrderThisBar(False);
        NumericSeries flag(0);
        NumericSeries StartFlag(0);
        NumericSeries Startflag_ping(0);
        NumericSeries EndFlag(0);
        NumericSeries HoldingPositions_0(0);
        NumericSeries HoldingPositions_1(0);
        BoolSeries Volcon(False);
Begin


        // 集合竞价和小节休息过滤
        If(!data0.CallAuctionFilter() Or!data1.CallAuctionFilter()  ) Return;

        MinPoint0 = data0.MinMove*data0.PriceScale;
        MinPoint1 = data1.MinMove*data1.PriceScale;
       

        diff=Data0.Close-0.7*Data1.Close+245-538;
        FastValue=XAverage(diff,FastEMA);
        SlowValue=XAverage(LinearRegSlope(diff,SlowEMA)*(SlowEMA-1)+diff,2*SlowEMA);
        Volcon=data0.Vol>0 And data1.Vol>0 ;
       
        PlotNumeric("diff",diff);
        PlotNumeric("FastValue",FastValue);
        PlotNumeric("SlowValue",SlowValue);
        if(BarStatus==2)
        {
       
               
                        //开始执行条件
                        if(diff[1]>=Threshold And startflag<>1)
                        {
                                Startflag=1;
                                Startflag_ping=0;
                                EndFlag=0;
                        }
                       
                        //Threshold 以上才建立空单
                        if(Startflag==1  And Volcon[1])
                        {
                                //持仓为0
                                //平掉既有持仓
                               
                                if(FastValue[1]>SlowValue[1] And diff[1]>Threshold)
                                {
                                        flag=0;
                                       
                                        //处理螺纹
                                        if(HoldingPositions_0<>flag Or HoldingPositions_1<>-1*flag )
                                        {
                                                if(HoldingPositions_0==-1 Or HoldingPositions_1 ==1)
                                                {
                                                        data0.BuyToCover(0,data0.Open+MinPoint0);
                                                        data1.Sell(0,data1.Open-MinPoint1);
                                                        HoldingPositions_0=0;
                                                        HoldingPositions_1=0;
                                                       
                                                }
                                                Else if(HoldingPositions_0==1 Or HoldingPositions_1 ==-1)
                                                {
                                                        data0.Sell(0,data0.Open-Minpoint0);
                                                        data1.BuyToCover(0,data1.Open+Minpoint1);
                                                        HoldingPositions_0=0;
                                                        HoldingPositions_1=0;
                                                       
                                                }
                                        }
                                       
                                }
                               
                                //持仓为-1
                                //建立空头头寸
                               
                                Else
                                {
                                        flag=-1;
                                       
                                        //处理螺纹
                                        if(HoldingPositions_0<>flag Or HoldingPositions_1<>-1*flag )
                                        {
                                                if(HoldingPositions_0==0 Or HoldingPositions_1==0)
                                                {
                                                        data0.SellShort(Sets*lots0,data0.Open-MinPoint0);
                                                        data1.Buy(Sets*lots1,data1.Open+MinPoint1);
                                                        HoldingPositions_0=-1;
                                                        HoldingPositions_1=1;
                                                       
                                                }
                                                Else if(HoldingPositions_0==1 Or HoldingPositions_1==-1)
                                                {
                                                        data0.Sell(0,data0.Open-Minpoint0);
                                                        data0.SellShort(Sets*lots0,data0.Open-MinPoint0);
                                                        data1.BuyToCover(0,data1.Open+Minpoint1);
                                                        data1.Buy(Sets*lots1,data1.Open+MinPoint1);
                                                        HoldingPositions_0=-1;
                                                        HoldingPositions_1=1;
                                                }
                                        }
                                       
                                }

                        //开始执行条件
                        if(diff[1]<=Threshold_ping And Startflag_ping<>1)
                        {
                                Startflag_ping=1;
                                Startflag=0;
                               
                        }
                       
                        //Threshold 以下才平空单
                        if(Startflag_ping==1 And EndFlag==0  And Volcon[1])
                        {
                                if(FastValue[1]>SlowValue[1])
                                {
                                         data0.BuyToCover(Sets*Lots0,data0.Open+Minpoint0);
                                         data1.Sell(Sets*lots1,data1.Open-Minpoint1);
                                         
                                         EndFlag=1;
                                }
                        }
                       

               
                       
                       
                       
                       
                       
                       

                }
        }
Commentary(Text(flag));
Commentary(Text(Startflag));
Commentary(Text(BarStatus));
End

以上代码为什么会提示交易讯号有可能消失,且出现了重复发单的问题,谢谢版主!

期市新手

TB官方客服

Rank: 1

精华
0
UID
223937
积分
17
帖子
15
主题
0
阅读权限
10
注册时间
2015-11-26
最后登录
2016-3-31
2#
发表于 2015-12-8 16:19:06 |只看该作者
BarStatus==2表示最后一个Bar,在开盘交易时间即为当前Bar。
比如在开盘时间内  当前Bar满足条件会出现信号,但是当这个Bar为历史Bar后,信号会消失,如果现在这根Bar依然满足条件,信号会再次出现。
去掉这个BarStatus==2限制条件.建议去掉试试。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-18 12:19

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部