Fehler, Irrtümer, Fragen - Seite 109

 

Hallo zusammen! Ich versuche, einen Pivot-Punkt-Indikator zu schreiben, die Berechnungen sind korrekt, aber die Linie wird nicht richtig gezeichnet, bitte helfen Sie mir, das Problem in meinem Code oder im Terminal zu verstehen

#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
Dateien:
 

Können Sie mir sagen, was ich falsch mache?

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

Wenn der Balken auf ein Fraktal trifft, ist der Wert korrekt. Wenn es aber nicht klappt, wird der maximale Wert des Typs double 1.7976931348623158e+308 zurückgegeben.

und es sollte Null zurückgegeben werden

 
Dmitriy2:

Können Sie mir sagen, was ich falsch mache?

Wenn der Balken auf ein Fraktal trifft, ist der Wert korrekt. Wenn es aber nicht klappt, wird der maximale Wert des Typs double 1.7976931348623158e+308 zurückgegeben.

und es sollte Null zurückgegeben werden

EMPTY_VALUE gegeben wird, können Sie hier nachlesen
 

Guten Tag!

Ich habe angefangen, mich mit MQL5 zu beschäftigen, aber bisher bin ich nicht sehr gut darin. Wie kann ich diese Funktion in MQL5 umwandeln?

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

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

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

Ich verstehe, danke.
 
abeiks:

Guten Tag!

Ich habe angefangen, mich mit MQL5 zu beschäftigen, aber bisher bin ich nicht sehr gut darin. Wie kann ich diese Funktion in MQL5 umwandeln?

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

Sind Sie mit dem Artikel Migration von MQL4 zu MQL5 vertraut?
 
Interesting:
Haben Sie schon den Artikel "Migration von MQL4 zu MQL5 " gelesen?

Ich schaue mir diesen Artikel an, aber als Nicht-Programmierer ist mir nicht alles klar. Deshalb würde ich gerne die umgewandelte Funktion in MQL5 sehen, um sie mit der zu vergleichen, die ich in MQL4 verstehe.

 
Interesting:
Haben Sie schon den Artikel Migration von MQL4 zu MQL5 gelesen?

Ich hatte auch eine einfache Funktion if(DayOfWeek()==5) {.

Aber jetzt weiß ich nicht, wie ich sie in MQL5 umwandeln kann.

 

Hat jemand zufälligeine solche Bibliothek (russifizierte stdlib.mqh) auf MKL5 erstellt? Ich meine mit neuen Codes

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

Hat jemand zufälligeine solche Bibliothek (russifizierte stdlib.mqh) auf MKL5 erstellt? Ich meine mit neuen Codes

Für Fehlercodes gibt es ErrorDescription.mqh