エラー、バグ、質問 - ページ 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への移行」の記事はすでにお読みいただけましたか?

この記事を見ているのですが、ノンプログラマーの私にはすべてが明確ではありません。そのため、MQL4で理解している関数と比較するために、MQL5で変換された関数を見てみたいのです。

 
Interesting:
MQL4からMQL5への移行の 記事は既にお読みいただけましたか?

また、簡単な関数 if(DayOfWeek()==5) {.

しかし、今、MQL5に変換する方法がわかりません。

 

MKL5でこのような ライブラリ(russified stdlib.mqh)を作成された方はいらっしゃいますか? 新しいコードでということです。

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

MKL5でこのような ライブラリ(russified stdlib.mqh)を作成された方はいらっしゃいますか? 新しいコードでということです。

エラーコードについては、ErrorDescription.mqhが あります。