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

 
Дайте, плиз, пример как в советнике МТ5 получить значение фрактала.
 
Александр #:
Дайте, плиз, пример как в советнике МТ5 получить значение фрактала.

Только перебором в цикле. 

И пожалуйста в следующий раз не засерайте весь форум своим вопросом. И особенно темы которые уже закрыты и там есть сообщение от модератора, что сюда писать не надо.
 
Alexey Viktorov #:

Только перебором в цикле. 

И пожалуйста в следующий раз не засерайте весь форум своим вопросом. И особенно темы которые уже закрыты и там есть сообщение от модератора, что сюда писать не надо.

Спасибо за пример! Код замечательный). И да, перебор это в МТ4. Здесь не тоько перебор, но и хэндлы, а сними что-то не получилось у меня. Поэтому помощи и попросил. А куда писать не знал, написал туда где думал что помогут.

 
Александр #:

Спасибо за пример! Код замечательный). И да, перебор это в МТ4. Здесь не тоько перебор, но и хэндлы, а сними что-то не получилось у меня. Поэтому помощи и попросил. А куда писать не знал, написал туда где думал что помогут.

Где Ваш код? Что не получилось?

 
//+------------------------------------------------------------------+
//|                                                      Fractal.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
int Fractal_Handle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Fractal_Handle   = iFractals(Symbol(), 0);
   if(Fractal_Handle == INVALID_HANDLE)
     {
      PrintFormat("Failed to create handle of the iMA  indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      return(INIT_FAILED);
     }
//---
//---
   return(INIT_SUCCEEDED);
//---
  }

//+------------------------------------------------------------------+
double iFractalGet(int handle_Fractal, const int index)
  {
   double Fractal[1];
//--- reset error code
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index
   if(CopyBuffer(handle_Fractal, 0, index, 1, Fractal) < 0)
     {
      //--- if the copying fails, tell the error code
      PrintFormat("Failed to copy data from the iMA indicator, error code %d", GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated
      return(0.0);
     }
   return(Fractal[0]);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double Fractal = iFractalGet(Fractal_Handle, 0);
   Print(" Fractal = ", Fractal, " Fractal = ");
  }
//+------------------------------------------------------------------+


По идее при появлении фрактала должно принтануться значение. Но что-то пошло не так, поэтому я просил пример получения кода из советника. Адаптировать пример из индикатора что-то не получилось, не так уж силен я в хитросплетениях МТ5. В мт4 все работает всегда. Спасибо за участие!

 
Александр #:
double iFractalGet(int handle_Fractal, const int index)
  {
   double Fractal[1];
//--- reset error code
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index
   if(CopyBuffer(handle_Fractal, 0, index, 1, Fractal) < 0)
     {
      //--- if the copying fails, tell the error code
      PrintFormat("Failed to copy data from the iMA indicator, error code %d", GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated
      return(0.0);
     }
   return(Fractal[0]);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double Fractal = iFractalGet(Fractal_Handle, 0);
   Print(" Fractal = ", Fractal, " Fractal = ");
  }

На каком баре получаете фрактал?

А фракталы бывают на таком баре?

 
Artyom Trishkin #:

На каком баре получаете фрактал?

А фракталы бывают на таком баре?

Понял не дурак. Дурак, что раньше не понял). 5-ку поставил на пятом и появилось. Спасибо!
 
Александр #:
Понял не дурак. Дурак, что раньше не понял). 5-ку поставил на пятом и появилось. Спасибо!

На МТ4 другие фракталы? Они могут быть на нулевом баре? Чудес не бывает. Фракталы одинаковы. На МТ4 вы их не искали на нулевом баре, раз получали данные о них.

 
Artyom Trishkin #:

На МТ4 другие фракталы? Они могут быть на нулевом баре? Чудес не бывает. Фракталы одинаковы. На МТ4 вы их не искали на нулевом баре, раз получали данные о них.

Облажался), что-то пропустил этот момент... А как получить значение верхнего и нижнего фрактала именно в советнике?

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2024.08.15
  • Александр
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Александр #:

Облажался), что-то пропустил этот момент... А как получить значение верхнего и нижнего фрактала именно в советнике?

Вы, когда писали эту строку в Вашем коде

if(CopyBuffer(handle_Fractal, 0, index, 1, Fractal) < 0)

понимали о чём её пишете?