int OnInit()
{
...
account=AccountNumber();
...
}
voidOnTick()
{
staticbool first_run = true;
if(first_run)
{
if(account==0) { // Если терминал не успел получить данные с сервера
OnInit(); // пробуем снова всё инициализировать
return;
}
first_run = false;
}
MT4ではこのようなことがあり、口座変更後にOnInitがトリガーされた場合、口座番号が 環境に反映される時間がないのか、それとも他のバグなのか分かりませんが、タイマーしてみることにしました。
EAが動作しているターミナルをリロードするといろいろとおかしくなる
テスター用でないのであれば、初期化は最初のカチカチ音がしたときに行うのがよいでしょう。
EAが動作している端末に負荷がかかると、いろいろなことがうまくいかなくなる
テスター用でないなら、初期化は最初のカチカチ 音がしたときに行うのがよいでしょう - そうすれば、99.9%は正しく初期化されます。
私もそう思いますが、おそらく0.1%はあると思います ))
EAが動作している端末に負荷がかかると、いろいろなことがうまくいかなくなる
テスター用でないなら、最初のティックが来たときにすべてを初期化する方がよいでしょう - そうすれば99.9%すべてが正しく初期化されるでしょう
最初のティックが来たときにすべての初期化を行う方が良い - そうすれば、99.9%のものが正しく初期化される...いかがお過ごしでしょうか。
すべての初期化は、最初のティックが来たときに行う方が良い - そうすれば、99.9%のものが正しく初期化される...いかがお過ごしでしょうか。
マイタイプのスペーサーを避けて素直にできる
"My "の形でパディングを避けることで、直接的に行うことができます。
パディングではなく、構造化されたコード です。
あなたの例は、文字の余分なカップルを書いて、非体系的なコードを取得する方法怠惰の例です - ここでは、少なくとも2回は、それが必要になるという事実ではなく、EAを実行すると、OnInit()と呼ばれる、というか前に書かれたものを壊さない - あなたが見た質問のレベル、右か)))。
それはパッドではなく、構造化されたコード です。
あなたの例は、文字の余分なカップルを書いて、構造化されていないコードを取得する方法怠惰の例です - ここでは、少なくとも2回は、それが必要になるという事実ではなく、前に書かれたものを壊すことはありません起動EAでOnInit()を呼び出します - あなたが見た質問のレベル、右か?)
first_run = true;
また、最初の初期化時にInitでチェックする必要があり、もしかしたら既に "0 "になっているかもしれません。
それ以外は賛成です。
追伸:サーバーに接続して実際のデータを取得することができれば、2回も呼び出されることはないのですが、それは納得できません。
は動作しません。なぜなら、OnTick()はインジケータでは動作 しないことがドキュメントに書かれているからです!
は動作しません。ドキュメントによると、OnTick() はインジケータでは動作しないそうです!
まあ、これが限界なんですけどね :(
OnTick() を次のように置き換えます。
そして、もう一つの支店に行く。まあ、それが限界なんですけどね :(
上に書いたのは、質問のレベルについてです ;)
そして、OnTick/OnInitで初期化の最適化を探し始めたとします。そこではすべてがシンプルで、見つけたコードを同じ友人と共有するために保護が必要です ))) 。)