Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2336

 
Vitaly Muzichenko #:

Приветствую!

Прошу подсказать, что какое значение сюда нужно подставить?

Спасибо!

Именно что предыдущее значение этой самой EMA. Для самого первого значения (за 3-5 периодов до интересующего момента) взять просто цену.

 
JRandomTrader #:

Именно что предыдущее значение этой самой EMA. Для самого первого значения (за 3-5 периодов до интересующего момента) взять просто цену.

Ни...чего не понял, но очень интересно

  for(i=pos; i<rates_total && !_StopFlag; i++) {
    if(MAmethod==MODE_SMA) ExtMovingBuffer[i]=SimpleMA(i,InpBandsPeriod,close);
    if(MAmethod==MODE_EMA) ExtMovingBuffer[i]=ExponentialMA(i,InpBandsPeriod,prev_value,close);
  }
 
Vitaly Muzichenko #:

Ни...чего не понял, но очень интересно

Значение EMA на предыдущем баре...

а в самом-самом начале рассчёта, когда EMA ещё не известно - берётся SMA того-же периода или непосредственное(неусреднённое) значение

 
Подскажите где можно подробно посмотреть о тестере стратегий МТ5(Лучше видео). Интересует по какому принципу формируются номера тикетов, ордеров и сделок в результатах прогона. Я совершенно запутался)). Все абсолютно отличается от МТ4.
 
Подскажите как вернуть сигнал из архива...спасибо.
 
Александр #:
Подскажите где можно подробно посмотреть о тестере стратегий МТ5(Лучше видео). Интересует по какому принципу формируются номера тикетов, ордеров и сделок в результатах прогона. Я совершенно запутался)). Все абсолютно отличается от МТ4.

Набираешь в ГУГЛЕ - Тестер стратегий МТ5, кликаешь -видео

 

Здравствуйте, два вопроса. Пытался не много изменить стандартный индикатор фракталов. Вместо двух свечей спереди и сзади сигнальной свечи, смотреть 5. Но индикатор не совсем корректно работает. Иногда он рисует треугольники в правом нижнем углу. В чем ошибка?? и можно ответ с пояснением, а не просто в замене цифры. Вопрос вроде пустяковый, но ни как не могу разобраться. 

Также, когда достаю последнее значение индикатора иногда выдает значение 0. Хотя как я понимаю это не возможно? Ошибка в том, что изначально в индикаторе ошибка, или в способе поиска последнего значения?

#property copyright "Copyright 2000-2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  Gray
#property indicator_color2  Gray
#property indicator_label1  "Fractal Up"
#property indicator_label2  "Fractal Down"
//--- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//--- 10 pixels upper from high price
int    ExtArrowShift=-10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,217);
   PlotIndexSetInteger(1,PLOT_ARROW,218);
//--- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);
//--- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
  }
//+------------------------------------------------------------------+
//|  Fractals on 5 bars                                              |
//+------------------------------------------------------------------+
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[])
  {
   if(rates_total<11) 
      return(0);

   int start;
//--- clean up arrays
   if(prev_calculated<13)
     {
      start=5;
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else
      start=rates_total-11;
//--- main cycle of calculations
   for(int i=start; i<rates_total-6 && !IsStopped(); i++)
     {
      //--- Upper Fractal
      if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>high[i+3] && high[i]>high[i+4] && high[i]>high[i+5] && high[i]>=high[i-1] && high[i]>=high[i-2] && high[i]>=high[i-3] && high[i]>=high[i-4] && high[i]>=high[i-5])
         ExtUpperBuffer[i]=high[i];
      else
         ExtUpperBuffer[i]=EMPTY_VALUE;

      //--- Lower Fractal
      if(low[i]<low[i+1] && low[i]<low[i+2] && low[i]<low[i+3] && low[i]<low[i+4] && low[i]<low[i+5] && low[i]<=low[i-1] && low[i]<=low[i-2] && low[i]<=low[i-3] && low[i]<=low[i-4] && low[i]<=low[i-5])
         ExtLowerBuffer[i]=low[i];
      else
         ExtLowerBuffer[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+
double high = 0;  //Переменная-счетчик для нахождения последнего значения фракталов по хаям
      double indFractalHigh[200];   //Создаем массив
      CopyBuffer(Fractal,0,shift,200,indFractalHigh); //Копируем данные индикатора со всех известных баров, данные из буфера переносятся в массив
      for(int i = 199; i >= 0 ; i--)   //Создаём цикл в котором ищем последнее известное значение фрактала
        {
         if(indFractalHigh[i]!=EMPTY_VALUE)
           {
            high=indFractalHigh[i];
            break;
           }
        }

      double low = 0;  //Переменная-счетчик для нахождения последнего значения фракталов по хаям
      double indFractalLow[200];   //Создаем массив
      CopyBuffer(Fractal,1,shift,200,indFractalLow); //Копируем данные индикатора со всех известных баров, данные из буфера переносятся в массив
      for(int i = 199; i >= 0 ; i--)   //Создаём цикл в котором ищем последнее известное значение фрактала
        {
         if(indFractalLow[i]!=EMPTY_VALUE)
           {
            low=indFractalLow[i];
            break;
           }
        }
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2024.01.10
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Marseleza.Gab #:

Здравствуйте, два вопроса. Пытался не много изменить стандартный индикатор фракталов. Вместо двух свечей спереди и сзади сигнальной свечи, смотреть 5. Но индикатор не совсем корректно работает. Иногда он рисует треугольники в правом нижнем углу. В чем ошибка?? и можно ответ с пояснением, а не просто в замене цифры. Вопрос вроде пустяковый, но ни как не могу разобраться. 

Также, когда достаю последнее значение индикатора иногда выдает значение 0. Хотя как я понимаю это не возможно? Ошибка в том, что изначально в индикаторе ошибка, или в способе поиска последнего значения?

неинициализированные значения (мусор) в буферах.

 
всем добрьій день!.. подскажите, пожалуйста, почему у меня разница между 'Обзор рынка' и реальньім временем 2 часа?.. что-то нужно поменять в настройках?.. заранее благодарю за ответ..
 
Kedrov #:

Набираешь в ГУГЛЕ - Тестер стратегий МТ5, кликаешь -видео

Так и делал. Не нашел что нужно