Ошибки, баги, вопросы - страница 109

 

Привет всем! Пытаюсь написать индикатор Pivot Point, расчеты идут верно а вот рисоваться линия не хочет правильно, помогите разобраться где косяк в моем коде или в терминале

#property indicator_chart_window

#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Orange

double PBuffer[];

double H[1];
double L[1];
double C[1];
datetime Time[2];

MqlDateTime str1;
MqlDateTime str2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,PBuffer,INDICATOR_DATA);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
//--- return value of prev_calculated for next call
//int    limit=Bars(_Symbol,PERIOD_CURRENT)-1;
   //int    limit=rates_total-1;
   int n=0;

   ArraySetAsSeries(H,true);
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(C,true);
   ArraySetAsSeries(Time,true);

   CopyHigh(_Symbol,PERIOD_D1,1,1,H);
   CopyLow(_Symbol,PERIOD_D1,1,1,L);
   CopyClose(_Symbol,PERIOD_D1,1,1,C);

//for(int i=10; i>=0;i--)
   for(int i=0;i<24;i++)
     {
      //Print(i," - й проход");
      //Print("Н[0] = ",H[0],", L[0] = ",L[0],", C[0] = ",C[0]);
      CopyTime(_Symbol,PERIOD_CURRENT,i+1,2,Time);
      TimeToStruct(Time[0],str1);
      TimeToStruct(Time[1],str2);
      //Print("str1.day = ",str1.day,", str2.day = ",str2.day);
      if(str1.day!=str2.day)
        {
         //Print("Сработало условие str1.day!=str2.day");
         n++;
         CopyHigh(_Symbol,PERIOD_D1,n+1,1,H);
         CopyLow(_Symbol,PERIOD_D1,n+1,1,L);
         CopyClose(_Symbol,PERIOD_D1,n+1,1,C);
         //Print("Получили новые данные для Н[0] = ",H[0],", L[0] = ",L[0],", C[0] = ",C[0]);
        }
      PBuffer[i]=(H[0]+L[0]+C[0])/3;
      //Print("PBuffer[",i,"] = ",PBuffer[i]);
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
Файлы:
 

Подскажите, что не так делаю

Alert(" фрактал нижний=",Фракталы(Symbol(),PERIOD_CURRENT,1,4)," фрактал верхний=",Фракталы(Symbol(),PERIOD_CURRENT,0,4));



double Фракталы(string символ,ENUM_TIMEFRAMES период,int буфер,int бар)
  {          //Номера буферов: 0 - UPPER_LINE, 1 - LOWER_LINE.
   double ЗначениеФрактал[1];
   int Fractals=iFractals(символ,период);
   CopyBuffer(Fractals,буфер,бар,1,ЗначениеФрактал);
   return(ЗначениеФрактал[0]);
  }

Если бар попадает на фрактал, то это значение правильно получается. А если не попадает то возвращается максимальное значение типа double 1.7976931348623158e+308

а должен возвращаться ноль 

 
Dmitriy2:

Подскажите, что не так делаю

Если бар попадает на фрактал, то это значение правильно получается. А если не попадает то возвращается максимальное значение типа double 1.7976931348623158e+308

а должен возвращаться ноль 

 

Вам отдаётся EMPTY_VALUE, прочитать можно тут
 

Добрый день!

 

Начал изучать MQL5, пока не очень получается. Как преобразовать эту функцию в MQL5 ?

 

val1=(Low[iLowest(NULL,PERIOD_M15,MODE_LOW,3 ,1)]

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 

mql5:
Вам отдаётся EMPTY_VALUE, прочитать можно тут

 

понятно, спасибо
 
abeiks:

Добрый день!

 

Начал изучать MQL5, пока не очень получается. Как преобразовать эту функцию в MQL5 ?

 

val1=(Low[iLowest(NULL,PERIOD_M15,MODE_LOW,3 ,1)]

А со статьей Переход с MQL4 на MQL5 уже знакомы?
 
Interesting:
А со статьей Переход с MQL4 на MQL5 уже знакомы?

Как раз смотрю эту статю, но мне как непрограмисту не всё понятно. Поетому и хотьел увидеть преобразованую функцию в MQL5, чтобы сровнить с мне понятнои функцию в MQL4.

 
Interesting:
А со статьей Переход с MQL4 на MQL5 уже знакомы?

Также мне была простая функция if(DayOfWeek()==5) {...

Но счас непонятно как преобразить в MQL5.

 

А не делал случайно кто такую библиотеку(Русифицированная stdlib.mqh) на МКЛ5? всмысле с новыми кодами

Русифицированная и немного переделанная stdlib.mqh - может кому пригодится. . . - MQL4 форум
  • www.mql5.com
Русифицированная и немного переделанная stdlib.mqh - может кому пригодится. . . - MQL4 форум
 
Dmitriy2:

А не делал случайно кто такую библиотеку(Русифицированная stdlib.mqh) на МКЛ5? всмысле с новыми кодами

Для кодов ошибок имеется ErrorDescription.mqh
Причина обращения: