[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 556

 
ただ、条件は(Ask<tmp || Ask>tmp) ではなく、些細な もの (Ask<=tmp) が必要です。 つまり、反対 方向に1ティックが現れたらすぐに...とまさにループで...そう、本当はこの近くにあるはず))) です。)
 
maryan.dirtyn >>:
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.

まあ同じですね、同じ理屈です。ループの前に、ループの条件が真になるような状態に変数をもっていくのです。そして、ループの繰り返しごとにRefreshRates()を使ってデータを更新し、気配値が新しいかどうかをチェックし、何らかのアクションを実行してループを強制的に解除します。ループの下にあるコードを実行させたい場合は、breakコマンドでループを解除します。実行させたくない場合は、EAのint start()関数にreturn(0)命令で割り込みます。
 

どうすればいいかという理屈はわかるのですが...なぜ、どのデザインもうまくいかず、さらにいくつかのデザインが試行錯誤の末に奈落の底に落ちているのかがわかりません。

double tmp=Ask; while(Ask<=tmp) tmp=Ask; Print("Заработало");
 double tmp=0;  while(Ask<=tmp || tmp==0) { RefreshRates(); if(Ask>tmp) break;} Print("Заработало");
 
maryan.dirtyn >>:

я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов


目をつぶって、サイクルの各反復で何が起こるかを想像するのです。

最初の選択肢

テンポはascと同じです。等式条件が満たされるため、ループはほぼ無限の反復に入る。新しい相場が来たとしても、それがサイクルの真実の条件を破るとは限らないからだ。数回、3回と連続して下落した場合、そのサイクルがほぼ無限大になるまで待つかもしれません...。

 

MQL4のチュートリアルが出たとき、私は一通り目を通しましたが、その後戻ってきませんでした。この教科書の著者は、いたるところにwhile()ループを入れているのが気にくわないのです。この本からMQLを学ぼうとした多くの人たちに足跡を残しました。

あなたのExpert Advisorは、このループがないとできないようなひどいタスクがあるのか教えてください。さて、このループを無限に繰り返して実行することがいかに簡単か、制御不能になるだけであることがおわかりいただけたと思います。あなたの場合、for()ループはなくてもいいのでは?それとも、別途簡単な関数を書くことで...?

 

落ちるナイフを買うのはもう嫌だ。 どんな、エレガントな解決策でもいいから欲しい。

double tmp=Ask; 
                 while(Ask<=tmp) tmp=Ask; 
                                              Print("Заработало");
 
drknn >>:

Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.

Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...

私はmqlの初心者ではなく、2年前にマスターしました。
 
tmpは初期値がAskより大きいことを承知の上でstaticにする必要があります。または、ORで提案された構造を使用する場合は=0となります。そうでなければ、Askは常に=tmpとなります。
 
Svinozavr >>:
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
問題は単純で、価格が下がっている間は、ティックが反対側に来るまで買ってはいけない...そして、コードは一箇所でループさせなければならない、下がっている間は、何も触れてはいけない...ということです。
 

ただ、なぜここにサイクルがあるのかが明確ではありません。プライスティック ごとにチェックし、現実の行動を起こす。