MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1529

 
Alexey Viktorov:

ええ、私もあなたに答えるために調べました。

携帯から書いていたので、質問を書いた方が早いんです :)

 
Alexey Viktorov:

開発者が課したものではなく、一人のモデレーターが課したものです。BB値については、Artemが「すべてを直接取得する方が簡単だ」と言ったわけですが、その順序はこうです...。

  1. インジケータ値を取得するためのハンドル変数と配列の宣言。必要であれば、多くても3つ。平均が必要なければ、2つのアレイで十分です。
  2. OnInit()でインジケーターハンドルを受け取りました。
  3. OnTick()内または他の関数で、必要な数だけ、各行ごとにCopyBuffer()する。
  4. これらの配列から、それらのバー上のインジケータ・ラインの値を得ることができます。

以上です。なぜわざわざOOP¿¿¿¿を使うのか? 残念ながら、私は使っていないので、あなたの質問に直接答えることはできません。説明したように、私には簡単なことなのです。アクションは4つだけです。

Initeで動作しない理由を教えてください。そして、どうすればうまくいくのか?


#property strict

//--- индикаторные буферы
double         UpperBuffer[];
double         LowerBuffer[];
double         MiddleBuffer[];
//--- переменная для хранения хэндла индикатора iBands
int    bb_handle;

int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit()

bb_handle=iBands(NULL, 0, 20, 0, 2.0, PRICE_CLOSE);

Print("bb_handle ", bb_handle);

Print("OnInit()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

return(INIT_SUCCEEDED);
}
void OnTick(){




Print("OnTick()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

}
//-------------------------------------------------------1
double BB_up(int in_shift){
   CopyBuffer(bb_handle, 1, in_shift, 1, UpperBuffer);
   return UpperBuffer[0];
}
double BB_mi(int in_shift){
   CopyBuffer(bb_handle, 0, in_shift, 1, MiddleBuffer);
   return MiddleBuffer[0];
}
double BB_lo(int in_shift){
   CopyBuffer(bb_handle, 2, in_shift, 1, LowerBuffer);
   return LowerBuffer[0];
}
 
Andrey Sokolov:

イナテで動かない理由を教えてください。そして、どうすればうまくいくのか?


iBands - テクニカル指標 - MQL5リファレンス - MetaTrader5用アルゴリズム/自動売買言語リファレンス
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov:

では、なぜうまくいかないのでしょうか?

話をしたいのか?- それとも自分を磨く?

 
SanAlex:

話をしたいのか?- それとも、自分自身に働きかけたいですか?

なるほど、ありがとうございます。どなたかご提案いただけないでしょうか。

 
Andrey Sokolov:

イナテで動かない理由を教えてください。そして、どうすればうまくいくのか?


指標をまだ算出していないため。

https://www.mql5.com/ru/docs/series/barscalculated


OnInit()セクションは、ターミナル環境を取得するのに最適な場所ではなく、論理的に正しく動作していると思います。
 
Igor Makanu:

指標が未算出であるため

https://www.mql5.com/ru/docs/series/barscalculated

👍

 
Igor Makanu:


OnInit()セクションは、ターミナル環境を取得するのに最適な場所ではなく、論理的に正しく動作していると思います。

起動時に履歴の計算を行う必要があるため、例のように待ちを追加したところ、すべて正常に動作するようになりました。

 
Andrey Sokolov:

は、例のように待ち時間を追加しても、すべてうまくいきます。

ただ、動かなくなったり、断続的に 動作したりしても驚かないでください。