请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

指标

针对波动的趋势价格指标 - MetaTrader 5脚本

Wujun Chen

显示:
1882
等级:
投票: 2
已发布:
2020.04.21 18:48
已更新:
2020.05.18 07:50

由于最近波动剧烈,而且价格行进强大迅速,要找入场点不是很方便。这套指标由波动率计算,参考海龟交易系统,可以由指标做突破或者跟随,方便做中短线。

效果如图

原油1h:

原油day:


XAUUSD,1H:

XPTUSD,1H:


XAUAUD,day:

XAUEUR,day:一段时间震荡后短期波动和长期波动开始贴近,至少走了两者距离之差:


GBPUSD,1H:


GBPUSD,4h:

EURUSD,Week:

EURUSD,Day:


EURUSD,4H:

可以看出在趋势市中做回踩点加其他压力/支撑跟随入场,方便设置止损,极端行情表现不错。


最近的黄金4h,由第一波的下跌40美元开始不断震荡,波动范围收敛,在5月6号开始,PoiseFractal下方支撑开始起主导作用了:


在震荡市中做目标点出场,方便设置止盈,正向一般不适合震荡行情,震荡行情这指标线一般是拿来尝试去突破的。


Poise上传了两套参数,可以多周期参考,做日内或周、月级别的反转信号或突破信号。

第一个参数是波动率的倍数,第二参数是波动率周期,第三个是平滑周期。

如图:

这里主要依照价格(ENUM_APPLIED_PRICE)做突破结构,由波动率(ATR)定义范围,趋势形成逐步递增/递减。

主要代码如下:

//--- the main loop of calculations
   for(int i = pos; i < rates_total && !IsStopped(); i++)//Checking for stop flag
     {
      //--- calculate EMA on ATR array
      ExtRangeBuffer[i] = ExtATRBuffer[i] * Alpha * ExtFactorAtr + ExtRangeBuffer[i - 1] * (1 - Alpha); // ExponentialMAOnBuffer(rates_total,prev_calculated,InpPeriodEMA-1,InpPeriodEMA,Ema,EmaOfEma);
      if(ExtPoiseBuffer[i - 1] == price[i])
         ExtPoiseBuffer[i] = ExtPoiseBuffer[i - 1];
      else
        {
         if(price[i - 1] < ExtPoiseBuffer[i - 1] && price[i] < ExtPoiseBuffer[i - 1])
            ExtPoiseBuffer[i] = MathMin(ExtPoiseBuffer[i - 1],price[i] + ExtRangeBuffer[i]);
         else
           {
            if(price[i - 1] > ExtPoiseBuffer[i - 1] && price[i] > ExtPoiseBuffer[i - 1])
               ExtPoiseBuffer[i] = MathMax(ExtPoiseBuffer[i - 1],price[i] - ExtRangeBuffer[i]);
            else
               ExtPoiseBuffer[i] = price[i] > ExtPoiseBuffer[i - 1] ? price[i] - ExtRangeBuffer[i] : price[i] + ExtRangeBuffer[i];
           }
        }
      //--- now we set line color for every bar
      if(price[i] < ExtPoiseBuffer[i] && ExtPoiseBuffer[i] <= ExtPoiseBuffer[i - 1])
         ExtColorsBuffer[i] = 1.0;
      else
         if(price[i] > ExtPoiseBuffer[i] && ExtPoiseBuffer[i] >= ExtPoiseBuffer[i - 1])
            ExtColorsBuffer[i] = 2.0;
         else
            ExtColorsBuffer[i] = 0.0;
     }

PoiseFractal 是用Fractals指标计算波动范围的,计算如下:

/--- filling out the array of True Range values for each period
   int up_size = CopyBuffer(ExtFractalHandle,0,0,to_copy,upper);
   int low_size = CopyBuffer(ExtFractalHandle,1,0,to_copy,lower);
   if(up_size <= 0 || low_size <= 0)
     {
      Print("Getting Fractal is failed! Error ",GetLastError());
      return(0);
     }
//--- calculate position
//--- set first bar from what calculation will start
   int pos = prev_calculated - 1;
//--- preliminary calculations
   if(pos < start)
      pos = start;

   for(int i = pos; i < rates_total && !IsStopped(); i++)//Checking for stop flag
     {
      //--- Preparing data
      double low_sum = 0.0,up_sum = 0.0;
      int a = 0,b = 0;
      for(int j = i; j >= 0 && !IsStopped(); j--)
        {
         if(upper[j] > 0 && upper[j] != EMPTY_VALUE)
           {
            up_sum += upper[j];
            a++;
           }
         if(lower[j] > 0 && lower[j] != EMPTY_VALUE)
           {
            low_sum += lower[j];
            b++;
           }
         if(a + b >= ExtPeriodSmooth && a*b>0)
            break;
        }

      ExtFractalBuffer[i] = (a > 0 && b > 0) ? MathAbs(up_sum / a - low_sum / b) : ExtFractalBuffer[i - 1];
        ....
}        

这里的Smooth period 是Fractal指标计算出的高低点之和的个数,应该要大于2,Factor 是由波动范围的倍数,一般大于1.0:







对账户资金的实时记录并显示K线图 对账户资金的实时记录并显示K线图

在做EA账户风控时,有时候需要知道账户各个时间段的资金数据,本EA可以基于每个净值变动来记录,并画出图表K线或保存至Excel。

在外汇中显示不同周期级别的加权平均价与结算价-MT5指标 在外汇中显示不同周期级别的加权平均价与结算价-MT5指标

于主图显示,类似于期货日内均线,可以选择更多的结算周期

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。