maryan.dirtyn>>: в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Svinozavr>>: Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
まあ同じですね、同じ理屈です。ループの前に、ループの条件が真になるような状態に変数をもっていくのです。そして、ループの繰り返しごとにRefreshRates()を使ってデータを更新し、気配値が新しいかどうかをチェックし、何らかのアクションを実行してループを強制的に解除します。ループの下にあるコードを実行させたい場合は、breakコマンドでループを解除します。実行させたくない場合は、EAのint start()関数にreturn(0)命令で割り込みます。
どうすればいいかという理屈はわかるのですが...なぜ、どのデザインもうまくいかず、さらにいくつかのデザインが試行錯誤の末に奈落の底に落ちているのかがわかりません。
я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов
目をつぶって、サイクルの各反復で何が起こるかを想像するのです。
最初の選択肢
テンポはascと同じです。等式条件が満たされるため、ループはほぼ無限の反復に入る。新しい相場が来たとしても、それがサイクルの真実の条件を破るとは限らないからだ。数回、3回と連続して下落した場合、そのサイクルがほぼ無限大になるまで待つかもしれません...。
MQL4のチュートリアルが出たとき、私は一通り目を通しましたが、その後戻ってきませんでした。この教科書の著者は、いたるところにwhile()ループを入れているのが気にくわないのです。この本からMQLを学ぼうとした多くの人たちに足跡を残しました。
あなたのExpert Advisorは、このループがないとできないようなひどいタスクがあるのか教えてください。さて、このループを無限に繰り返して実行することがいかに簡単か、制御不能になるだけであることがおわかりいただけたと思います。あなたの場合、for()ループはなくてもいいのでは?それとも、別途簡単な関数を書くことで...?
落ちるナイフを買うのはもう嫌だ。 どんな、エレガントな解決策でもいいから欲しい。
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
ただ、なぜここにサイクルがあるのかが明確ではありません。プライスティック ごとにチェックし、現実の行動を起こす。