Erros, bugs, perguntas - página 109

 

Olá a todos! Estou a tentar escrever um indicador Pivot Point, os cálculos estão correctos, mas a linha não está desenhada correctamente, por favor ajude-me a compreender o problema no meu código ou no terminal

#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
Arquivos anexados:
 

Pode dizer-me o que estou a fazer mal?

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]);
  }

Se a barra atingir um fractal, o valor é correcto. Mas se falhar, devolve o valor máximo do tipo duplo 1,7976931348623158e+308

e zero deve ser devolvido

 
Dmitriy2:

Pode dizer-me o que estou a fazer mal?

Se a barra atingir um fractal, o valor é correcto. Mas se falhar, devolve o valor máximo do tipo duplo 1,7976931348623158e+308

e zero deve ser devolvido

EMPTY_VALUE é-lhe dado, pode lê-lo aqui
 

Boa tarde!

Comecei a estudar MQL5, mas até agora não sou muito bom nisso. Como converter esta função para MQL5 ?

val1=(Baixo[iLowest(NULL,PERÍODO_M15,MODE_LOW,3,1)]

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

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

Estou a ver, obrigado.
 
abeiks:

Boa tarde!

Comecei a estudar MQL5, mas até agora não sou muito bom nisso. Como converter esta função para MQL5 ?

val1=(Baixo[iLowest(NULL,PERÍODO_M15,MODE_LOW,3,1)]

Está familiarizado com o artigo Migração de MQL4 para MQL5?
 
Interesting:
Já leu o artigo "Migração de MQL4 para MQL5 "?

Estou a analisar este artigo, mas nem tudo é claro para mim como não-programador. É por isso que eu gostaria de ver a função convertida em MQL5, a fim de a comparar com a que eu compreendo em MQL4.

 
Interesting:
Já leu o artigo Migration from MQL4 to MQL5?

Também tinha uma função simples if(DayOfWeek()==5) {.

Mas agora não sei como convertê-lo para MQL5.

 

Alguém por acaso já feztal biblioteca (russified stdlib.mqh) em MKL5? quero dizer com novos códigos

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

Alguém por acaso já feztal biblioteca (russified stdlib.mqh) em MKL5? quero dizer com novos códigos

Para códigos de erro, existe ErrorDescription.mqh