设为首页收藏本站

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

跪求热心人帮忙解决二个小环节问题 [复制链接]

Rank: 1

精华
0
UID
246605
积分
16
帖子
12
主题
4
阅读权限
10
注册时间
2017-1-30
最后登录
2020-6-28
跳转到指定楼层
1#
发表于 2017-1-30 14:25:17 来自手机 |只看该作者 |倒序浏览
一个问题是参数N4-6不能实现。二是当根k线达到浮赢回撤平仓条件,没能在当根k实时平仓。
Params
        Numeric Length(20);                       
        Numeric Offset(2);               
    Numeric lots(1);//手数
    Numeric qj(150);//缺口区间
        Numeric tpds(1);//突破点数
    Numeric gdzs(10);//固定止损
        Numeric ylqd(20);//盈利启动
        Numeric bbpcd(5);//保本平仓点
        Numeric zgpc(0);//中轨平仓点
        Numeric xzcs(10);//限制开仓K线数
        Numeric N(6);//收口后4-6参数
Vars
        NumericSeries UpLine;                //上轨
        NumericSeries DownLine;                //下轨
        NumericSeries MidLine;        //中间线
        Numeric Band;
        Numeric MinPoint;                                         //最小变动价位
        NumericSeries myprice;
        Numeric extprice;
        BoolSeries dcon;
        BoolSeries kcon;
        NumericSeries qk;
        numericseries myflag;
        NumericSeries HighestAfterEntry;        // 开仓后出现的最高价
    NumericSeries LowestAfterEntry;         // 开仓后出现的最低价

Begin
    // 集合竞价和小节休息过滤
        If(!CallAuctionFilter()) Return;
       
        //指标计算
    MinPoint = MinMove*PriceScale;                  //最小变动价位
        MidLine = AverageFC(Close,Length);
        Band = StandardDev(Close,Length,2);
        UpLine = MidLine + Offset * Band;
        DownLine = MidLine - Offset * Band;
        PlotNumeric("UpLine",UpLine);
        PlotNumeric("DownLine",DownLine);
        PlotNumeric("MidLine",MidLine);
        qk=UpLine-DownLine;
        dcon=CrossOver(h,UpLine[1]+tpds*MinPoint);
        kcon=CrossUnder(l,DownLine[1]-tpds*MinPoint);
       
        If(BarsSinceentry == 0)
    {
        HighestAfterEntry = Close;
        LowestAfterEntry = Close;
        If(MarketPosition <> 0)
        {
            HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);   // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
            LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);     // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
        }
    }else
    {
        HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
        LowestAfterEntry = Min(LowestAfterEntry,Low);    // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
    }
    Commentary("HighestAfterEntry="+Text(HighestAfterEntry));
    Commentary("LowestAfterEntry="+Text(LowestAfterEntry));

        If(CurrentBar<=length)myflag=0;
        If(MarketPosition==0 && myflag==0)
        {
           If(qk[n]<qj and dcon)
           {
              myprice=Max(Open,UpLine[1]+tpds*MinPoint);
                  Buy(lots,myprice);
                  myflag =1;
                }
           If(qk[n]<qj and kcon)
           {
              myprice=Min(Open,DownLine[1]-tpds*MinPoint);
                  SellShort(lots,myprice);
                  myflag =1;
                }
     }
         Commentary("myflagg:="+Text(myflag));
         If(MarketPosition==0 && myflag ==1 && BarsSinceExit>=xzcs)
        {
           If(qk[1]<qj and dcon)
           {
              myprice=Max(Open,UpLine[1]+tpds*MinPoint);
                  Buy(lots,myprice);
                 
                }
           If(qk[1]<qj and kcon)
           {
              myprice=Min(Open,DownLine[1]-tpds*MinPoint);
                  SellShort(lots,myprice);
               
                }
     }
         
         If(MarketPosition==1 and BarsSinceEntry>1)
         {
            If(HighestAfterEntry>=myprice+ylqd*MinPoint)
                 {
                     If(l<=myprice+bbpcd*MinPoint)
                         {
                            extprice=Min(Open,myprice+bbpcd*MinPoint);
                            Sell(0,extprice);
                            Commentary("保本平");
                          }
                  }
            If(Low<=myprice-gdzs*MinPoint)
                {
                    extprice=Min(Open,myprice-gdzs*MinPoint);
                        Sell(0,extprice);
                        Commentary("固定止损");
             }
               
                If(L<=MidLine[1]-zgpc*MinPoint)
                {
                     extprice=Min(Open,MidLine[1]-zgpc*MinPoint);
                        Sell(0,extprice);
                        Commentary("中轨平仓");
                }
        }
       
         If(MarketPosition==-1 and BarsSinceEntry>1)
         {
            If(LowestAfterEntry<=myprice-ylqd*MinPoint)
                 {
                     If(h>=myprice-bbpcd*MinPoint)
                         {
                            extprice=Max(Open,myprice-bbpcd*MinPoint);
                            BuyToCover(0,extprice);
                            Commentary("保本平");
                          }
                  }
            If(high>=myprice+gdzs*MinPoint)
                {
                    extprice=Max(Open,myprice+gdzs*MinPoint);
                        BuyToCover(0,extprice);
                        Commentary("固定止损");
             }
               
                If(h>=MidLine[1]+zgpc*MinPoint)
                {
                     extprice=Max(Open,MidLine[1]+zgpc*MinPoint);
                        BuyToCover(0,extprice);
                        Commentary("中轨平仓");
                }
        }
End

Rank: 1

精华
0
UID
246605
积分
16
帖子
12
主题
4
阅读权限
10
注册时间
2017-1-30
最后登录
2020-6-28
2#
发表于 2017-1-30 14:26:02 来自手机 |只看该作者
大神们帮帮忙吧

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
114435
积分
154
帖子
27
主题
2
阅读权限
40
注册时间
2012-12-26
最后登录
2018-4-16
3#
发表于 2018-2-10 23:01:49 |只看该作者
很久远的帖子了。至少把思路讲明白。注释写清晰

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
4#
发表于 2018-2-11 15:57:59 |只看该作者
试试把qk[n]改成qk[N]

使用道具 举报

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

bottom

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

GMT+8, 2024-4-24 00:15

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部