设为首页收藏本站

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

写了个系统,测试时无成交记录,求指点迷津! [复制链接]

Rank: 1

精华
0
UID
209424
积分
5
帖子
3
主题
2
阅读权限
10
注册时间
2015-5-20
最后登录
2017-1-5
跳转到指定楼层
1#
发表于 2017-1-4 20:40:19 |只看该作者 |倒序浏览
Params
    Numeric MALength(10);                                  //均线值
    Numeric ATRLength(10);                                  //ATR的值
        Numeric ProtectStopATRMulti(0.5);          //保护性止损的ATR乘数
        Numeric TrailStopATRMulti(2.5);                  //跟踪止损的ATR乘数
       
Vars
        NumericSeries MA(0);                                //均线
        NumericSeries ATR(0);                                //ATR
       
        NumericSeries SupportLine(-9999999);        //支撑线
        NumericSeries ResistanceLine(9999999);        //阻力线
       
    BoolSeries CrossConL(False);          //均线金叉标识
        BoolSeries CrossConS(False);         //均线死叉标识
       
        BoolSeries FlagForL(False);         //收盘价与均线交叉的状态记录L
        BoolSeries FlagForS(False);            //收盘价与均线交叉的状态记录S
       
        NumericSeries EntryPriceL(0);                //开仓入场价
       
        NumericSeries HighAfterEntry;                 //持仓期间最高点的记录

        NumericSeries ProtectStopL;                        //基于ATR的保护性止损
        Numeric TrailStopL;                                        //基于ATR的跟踪止损

        NumericSeries MP;                                        //MarketPosition状态记录
Begin

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

        //系统设置
        //均线与ATR计算
        MA = AverageFC(C,MALength);
        ATR = AvgTrueRange(ATRLength);
       
        //判别多空市况
        CrossConL == CrossOver(C,MA);
        CrossConS == CrossUnder(C,MA);
       
       
        If( CrossConL ==True )
        {
           CrossConS = False;
           FlagForL = True;
           FlagForS = False;
           SupportLine = -9999999;
        }
       
        If( CrossConS == True )
        {
           CrossConL = False;
           FlagForL = False;
           FlagForS = True;
           ResistanceLine = 9999999;
        }
       
        //系统入场
        //当均线上移、上根K线的收盘价格上穿至少2条K线前形成的压力线后, 在本根K线开盘价做多
        If( MarketPosition == 0  and FlagForL ==True and HIGH[1]<ResistanceLine and HIGH>ResistanceLine and MA>MA[1] And Vol > 0 )
        {
                Buy(0,0);
                //EntryPriceL = Open;
                //基于ATR的保护性止损
                ProtectStopL = Low[1] - ProtectStopATRMulti * ATR[1];
        }
       

        //更新支撑与阻力线
        If(FlagForL == True)
        {
          if( High[1]>HIGH[2] )
          {
             ResistanceLine=HIGH[1];
           }
        }

        //PlotNumeric("ResistanceLine",ResistanceLine);
        //PlotNumeric("SupportLine",SupportLine);
       
        //系统出场
    If(BarsSinceEntry == 0)
                HighAfterEntry = High;
        Else       
                HighAfterEntry = Max(HighAfterEntry[1],High);

        //基于ATR的跟踪止损
        TrailStopL = HighAfterEntry[1] - TrailStopATRMulti * ATR[1];
       
        If(MarketPosition == 1  and mp[1] == 1 And Vol > 0)
        {
                //基于ATR的保护性止损
                if(Low <= ProtectStopL[1] and ProtectStopL[1] >= TrailStopL)
                {
                        Sell(0,Min(Open, ProtectStopL[1]));
                }
                //基于ATR的跟踪止损
                Else if(Low <=TrailStopL)
                {
                        Sell(0,Min(Open, TrailStopL));
                }
        }
        //PlotNumeric("ProtectStopL",ProtectStopL);
        //PlotNumeric("TrailStopL",TrailStopL);
               
               
        MP = MarketPosition;               
               
End
您需要登录后才可以回帖 登录 | 注册

bottom

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

GMT+8, 2024-5-12 01:59

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部