Jump to content
ТангоX

Мультитаймфреймовый индикатор

Recommended Posts

ТангоX

Здравствуйте форумчане! Привожу пример простого индикатора, который при пересечении MACD и 0 выводит стрелки на графике цены.

В индикаторе использую множитель для таймфрейма

 

input int      Faktor=4;

 

Если кинуть этот индикатор на минутный график, то по умолчанию он показывает пересечение MACD и 0 на М4, я просто умножаю показания индикатора MACD на 4

 

Handle=iMACD(NULL,0,12*Faktor,26*Faktor,9*Faktor,PRICE_CLOSE);

 

Проблема следующая - если сравнить пересечение MACD и 0 с М1 и М4 то на М1 будет смещение на 3-7 баров вперед, что показано на рисунке.

 

588d8b4e242dc_.png

 

Как исправить это смещение по времени на М1??

 

Код индикатора

//+------------------------------------------------------------------+
//|                                                       Proba4.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Faktor=4; //Множитель ТФ
//--- indicator buffers
double         Label1Buffer[];
//-- служебные массивы
double         SignalBuffer[];

int Handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   PlotIndexSetInteger(0,PLOT_ARROW,233);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
  
   Handle=iMACD(NULL,0,12*Faktor,26*Faktor,9*Faktor,PRICE_CLOSE);
 //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int to_copy,limit;
   if(prev_calculated==0)
     {
      limit=1;
      to_copy=rates_total-1;
      if(CopyBuffer(Handle,1,0,rates_total,SignalBuffer)<=0)
        {
         Print("Getting MACD is failed! Error",GetLastError());
         return(0);
        }
     }
     else
     {
      limit=prev_calculated-1;
      to_copy=rates_total-1;
      if(CopyBuffer(Handle,1,0,rates_total,SignalBuffer)<=0)
        {
         Print("Getting MACD is failed! Error",GetLastError());
         return(0);
        }
     }
    
    for(int i=limit; i<to_copy;i++)
     if(SignalBuffer[i-1] < 0 && SignalBuffer[i] > 0)
        Label1Buffer[i]=high[i];//пересечение на графике
      else
        Label1Buffer[i]=EMPTY_VALUE; //пустое значение
    //--- return value of prev_calculated for next call
   
   return(rates_total);
  }
//+------------------------------------------------------------------+

Share this post


Link to post
Share on other sites
ToB. CyxoB

а на минутном графике нет пропущенных свечей? Все в наличие?

Edited by ToB. CyxoB

Share this post


Link to post
Share on other sites
ТангоX

История полная. Пробовал на разных периодах - картина та же....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×