初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1011

 
Vitaly Muzichenko:

これはうまくいったことがあるのか、ないのか?

入力パラメータで色を変更したときに、その色が"indicator_color1" に入るようにするにはどうしたらよいでしょうか?今は、どう変えても、オリジナルの

Comment(Buffer1_Color[0]);

これはどうでしょう?

 
Сергей Таболин:

これはどうでしょう?

 
Vitaly Muzichenko:

これはうまくいったことがあるのか、ないのか?

入力パラメータで色を変更したときに、その色が"indicator_color1" に入るようにするにはどうしたらよいでしょうか?今は、どう変えても元の木阿弥です。

何かというと、こんな風にトレースさ れます。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDarkGoldenrod
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
ファイル:
Test.mq5  5 kb
 
Vladimir Karputov:

何かというと、こんな風にトレースさ れます。

PlotIndexGetInteger(0,PLOT_LINE_COLOR,0) ですね。

ありがとうございました。

 

カスタムインジケータで、任意のタイムフレームで分単位の時系列のみOnCalculate()からデータを取得するにはどうすればよいですか?CopyRates(sym,PERIOD_M1,...) を使っているのですが、何か良い方法はありますか、アドバイスお願いします。

 
Vladimir M.:

分単位の時系列のOnCalculate()から、任意の時間枠のカスタムインディケータで データを取得する方法とは?CopyRates(sym,PERIOD_M1,...)を使っていますが、何か良い方法はありますか、アドバイスはありますか?

一度に複数のバーを必要とする場合、これ以上のものはないでしょう。そして、CopyRatesによって1本のバーの値を受け取る方が良いと思います。

 
Alexey Viktorov:

一度に複数のバーを必要とする場合、これ以上のものはないでしょう。そして、私の意見では、CopyRatesを介して単一のバーの値を取得する方が良いと思います。

一方、OnCalculate() は無駄なため、インジケータから削除できません。同じデータを2回取得することが判明?
 
Vladimir M.:
OnCalculate()は不要なため、インジケータから削除することはできません。同じデータを2回取得することが判明?

OnTick()がある場合、なくても大丈夫なのでしょうか?

 
Vladimir M.:
一方、OnCalculate()は必要ないので、インジケータから削除することはできません。同じデータを2回取得することが判明?

まあ、必要なければ、2つ目のバリエーションで

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

OnTick()がある場合、なくても大丈夫なのでしょうか?

可能かどうかは疑問ですが、もう試さないことにします。とドキュメントに書かれています。

"...NewTick イベントは、Expert Advisor がアタッチされているチャートのシンボルで新しいティックを受信したときに、Expert Advisor に対してのみ生成されます。カスタムインジケーターやスクリプトでOnTick()関数を定義しても、それらにはNewTickイベントが生成されないので無駄 だ ..." と。

理由: