[MT4指标]ELabunskyVolaPresser指标
主图指标
mt4指标类型:趋势指标
是否能用在mt4手机版上:否
是否含有未来函数:无
#property copyright "Eugene Labunsky / http://www.trendmedium.com/tmt4/"
#property link      "http://www.trendmedium.com/tmt4/"
#property indicator_chart_window
extern int MainFilterSpeed = 8;
extern int MainFilterSlow = 16;
extern int SmallFilterSpeed = 3;
extern int SmallFilterSlow = 12;
double MainFiltersMultipleFactor = 1.0;
double SmallFiltersMultipleFactor = 1.0;
extern bool SmallArrow = true;
int SlowFilterOffset = 0;
double emaBuffer[999];
double emaRes[999];
double getAbsEMACO(int period, int shift)
{
  if (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + period + 1) == 0)
    return (0);
  else
  {
    int i = 0;
    for (i = 0; i < period; i++)
    {
      emaBuffer[period - 1-i] = MathAbs(iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + i) - iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_OPEN, shift + i));
    }
    double pr = 2.0 / (period + 1);
    emaRes[0] = emaBuffer[0];
    for (i = 1; i < period; i++)
    {
      emaRes = emaBuffer *pr + emaRes[i - 1]*(1-pr);
    }
    return (emaRes[period - 1]);
  }
}
double getEMACO(int period, int shift)
{
  if (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + period + 1) == 0)
    return (0);
  else
  {
    int i = 0;
    for (i = 0; i < period; i++)
    {
      emaBuffer[period - 1-i] = (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + i) - iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_OPEN, shift + i));
    }
    double pr = 2.0 / (period + 1);
    emaRes[0] = emaBuffer[0];
    for (i = 1; i < period; i++)
    {
      emaRes = emaBuffer *pr + emaRes[i - 1]*(1-pr);
    }
    return (emaRes[period - 1]);
  }
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  string short_name = "ELabunskyVolaPresser";
  IndicatorShortName(short_name);
  SetIndexLabel(0, short_name);
  ObjectsDeleteAll();
}
int start()
{
  int countedBars = IndicatorCounted();
  if (countedBars < 0)
  {
    countedBars = 0;
    ObjectsDeleteAll();
  }
  else
    countedBars--;
  int limit = Bars - countedBars;
  double ShiftY = MathAbs(High[Bars - 1] - Low[WindowFirstVisibleBar()]);
  for (int i = 0; i < limit; i++)
  {
    int signal = 0;
    string objName = "ELA_" + Symbol() + "-" + Period() + "-" + Time;
    if (ObjectFind(objName) >= 0)
      ObjectDelete(objName);
    int currOffSet = i;
    if (getAbsEMACO(MainFilterSpeed, currOffSet) > getAbsEMACO(MainFilterSlow, currOffSet + SlowFilterOffset))
    {
      double _smallFilterSpeed = getEMACO(SmallFilterSpeed, currOffSet);      
      double _SmallFilterSlow = getAbsEMACO(SmallFilterSlow, currOffSet);
      if (_smallFilterSpeed > _SmallFilterSlow *SmallFiltersMultipleFactor)
        signal = 1;
      else
        if (_smallFilterSpeed <  - _SmallFilterSlow * SmallFiltersMultipleFactor)
          signal =  - 1;
    }
    if (signal == 1)
    {
      if (!SmallArrow)
      {
        ObjectCreate(objName, OBJ_ARROW, 0, Time, Low);
        //ObjectSet(objName,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
        ObjectSet(objName, OBJPROP_ARROWCODE, 233);
        ObjectSet(objName, OBJPROP_WIDTH, 1);
        ObjectSet(objName, OBJPROP_COLOR, Green);
      }
      else
      {
        ObjectCreate(objName, OBJ_ARROW, 0, Time, Low);
        ObjectSet(objName, OBJPROP_ARROWCODE, 1);
        ObjectSet(objName, OBJPROP_WIDTH, 1);
        ObjectSet(objName, OBJPROP_COLOR, Green);
      }
    }
    if (signal ==  - 1)
    {
      if (!SmallArrow)
      {
        ObjectCreate(objName, OBJ_ARROW, 0, Time, High + ShiftY / 100);
        //ObjectSet(objName,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
        ObjectSet(objName, OBJPROP_ARROWCODE, 234);
        ObjectSet(objName, OBJPROP_WIDTH, 1);
        ObjectSet(objName, OBJPROP_COLOR, Red);
      }
      else
      {
        ObjectCreate(objName, OBJ_ARROW, 0, Time, High);
        ObjectSet(objName, OBJPROP_ARROWCODE, 2);
        ObjectSet(objName, OBJPROP_WIDTH, 1);
        ObjectSet(objName, OBJPROP_COLOR, Red);
      }
    }
  }
  return (0);
}
int deinit()
{
  ObjectsDeleteAll();
  return (0);
} ELabunskyVolaPresser.jpg
ELabunskyVolaPresser.jpg
 ELabunskyVolaPresser.jpg
ELabunskyVolaPresser.jpg










