设为首页收藏本站

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

新手求指点marketposttion的问题 [复制链接]

Rank: 1

精华
0
UID
222437
积分
23
帖子
18
主题
5
阅读权限
10
注册时间
2015-11-3
最后登录
2016-1-5
跳转到指定楼层
1#
发表于 2016-1-5 10:29:27 |只看该作者 |倒序浏览
Params
        Numeric teLength(16);                   // 离市周期 Trailing Exit Length,在15分钟上用16表达为4小时K线的最低或最高价
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
Vars
        NumericSeries MACDValue;
        NumericSeries AvgMACD;
        Numeric MACDDiff;
    Numeric ExitHighestPrice;               // 离市时判断需要的N周期最高价
    Numeric ExitLowestPrice;                // 离市时判断需要的N周期最低价
        BoolSeries Condition1;
        BoolSeries Condition2;
        NumericSeries duo;
        NumericSeries kong;
        NumericSeries yid;
        NumericSeries yik;
Begin
        MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
        AvgMACD = XAverage(MACDValue,MACDLength);
        MACDDiff = MACDValue - AvgMACD;
        PlotNumeric("MACD",MACDValue);
        PlotNumeric("MACDAvg",AvgMACD);
        If (MACDDiff >= 0)       
                PlotNumeric("MACDDiff",MACDDiff,0,Red);
        Else
                PlotNumeric("MACDDiff",MACDDiff,0,Green);
        PlotNumeric("零线",0);              
       
        Condition1 = CrossOver(MACDValue,AvgMACD);     //金叉买进
    Condition2 = CrossUnder(MACDValue,AvgMACD);    //死叉卖出
       
        ExitLowestPrice = LowestFC(Low[1],teLength);
        ExitHighestPrice = HighestFC(High[1],teLength);

    If(MarketPosition!=0)
      {
            If(Condition1[1] && AvgMACD[1]<0 )        // 0线以下金叉开多
         {
          Buy(1,Open);
                  duo=ExitLowestPrice-50;
                  yid=(open-duo)*2+Open;
          }Else        If(Condition2[1] && AvgMACD[1]>0 )                //0线以上死叉开空
          {
           SellShort(1,Open);
               kong=ExitHighestPrice+50;
               yik=Open-(kong-Open)*2;
           }
                }

        If(MarketPosition==1)
          {
            If(Open>=yid)
              {
               Sell(0,Open);
               }Else
                {
                      If(open<=duo)
                       {
                            Sell(0,Open);
                            }
                   }
                }
       
        If(MarketPosition==-1)
          {
           If(open<=yik)
             {
              BuyToCover(0,Open);
              }Else
               {
                     If(open>=kong)
                      {
                        BuyToCover(0,open);
                           }
                    }
                }
End

这一段代码中,为什么 有marketposition!=0这个条件,它就不开仓,去掉marketposition!=0就可以正常开仓。

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2016-1-5 10:40:17 |只看该作者
marketposition==0说明是没有信号持仓的情况下。
marketposition!=0 是指已经有信号持仓的情况下。
加上marketposition!=0的条件是指已经有信号持仓后再去执行相应的指令。。
整个公式后面的指令也是判断==1或==-1时,即加仓的指令。。
那图表上加载一个公式时,一定是从0信号开始的。。在信号持仓为0时是不满足你的任一开仓指令的。
自然,就一个信号也没有了。
在公式里这个位置加上这个marketposition!=0的判断明显是不合理的。

使用道具 举报

Rank: 1

精华
0
UID
222437
积分
23
帖子
18
主题
5
阅读权限
10
注册时间
2015-11-3
最后登录
2016-1-5
3#
发表于 2016-1-5 10:44:44 |只看该作者
谢谢,版主老大,说明文件上没写这个。我改成==0了,没问题了!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-12 13:08

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部