forループを理解するには、まずwhileループを理解するのがよいでしょう ... forループは、初期条件とインクリメントが組み込まれたwhileループにすぎません ... ...
forの ドキュメントを見てみると、こう書いてある.
「for演算子は、次の演算子の連続と等価である。
Expression1;
while(Expression2)
{
operator;
Expression3;
};
具体的には、「なぜ、最初の例では2番目のパラメータに "condition "が含まれているのに、2番目の例では2番目のパラメータに "Expression2"が含まれているのですか?「式は条件であり、条件は真 または偽の 値、例えば (a > b) または (c || d) または (OrdersTotal() >= 0) をもたらします、また、ドキュメントには次のように記述されています。... "式2は、サイクル終了のための条件テスト です。"
サイモン
式は条件になりうる
for' 演算子のヘッダーのパラメータ 2 は、式 OR 条件になるのですか?Expression_1とExpression_3は、条件にはならず、式のままである必要があると思いますが、いかがでしょうか?式1&3が条件にならない理由はわかりません。式1、式3は、どちらも入力されるパラメータに過ぎません。(条件であることは、代わりにパラメータ2、つまりExpression_2の目的である可能性もあります)
考えを確認してください。
式は、算術演算(2+2=4)、代入などです。(すべてMetaEditor辞書に記載されています)。
条件は、真|偽(例:a>b, a>=b, a==bなど)。
演算もMetaEditor辞書に含まれています(例:Break, Continue, Return, while, for, etc)。
ありがとうございました。
サイモン
式は条件になりうる
for' 演算子のヘッダーのパラメータ 2 は、式 OR 条件になるのですか?Expression_1とExpression_3は、条件にはならず、式のままである必要があると思いますが、いかがでしょうか?式1&3が条件にならない理由はわかりません。式1、式3は、どちらも入力されるパラメータに過ぎません。(条件である代わりに、パラメータ2、つまりExpression_2の目的である可能性もあります)
ドキュメント - while
本 - while
Simonさん、while演算の使い方を練習してみます。この響きが好きなんだ!:)ありがとうございます。
ウィリアム、ブーリアンに変換された数値は、条件と なる...。(1=true,0=false)です。ありがとうございます。
ありがとうございました。
Simon,
私は、あなたが要求したようにすることができるはずのEAを書きました;)。
このEAと、ターミナルの「エキスパート」タブからの結果のスナップショットの組み合わせを共有します。
このEAはUSDJPYの注文を選択し、その情報をExpertsタブにプリントすることができるようです。なぜEAは注文の情報を印刷するだけでなく、注文を閉じないのでしょうか?
ありがとうございます。
Simon,
私は、あなたが要求したようにすることができるはずのEAを書きました;)。
このEAと、ターミナルの「エキスパート」タブからの結果のスナップショットの組み合わせを共有します。
このEAはUSDJPYの注文を選択し、その情報をExpertsタブにプリントすることができるようです。なぜEAは注文の情報を印刷するだけでなく、注文を閉じないのでしょうか?
ありがとうございます。
あなたのコードとそれが何を意味するのかを説明してください ... ... 特に、暫く私に話してください。
Simonです。
あなたのコードとその目的について説明してください ... ... 特に、その間に私に話してください。
私はコードとその目的を 説明 するために最善を尽くします。
コードの目的
1.1. USDJPYの注文を3つの注文のプールから選択します。
2.2. USDJPY注文のTPとSLを変更する。
3.OrderPrint()関数を実行する。
4.USDJPY注文をクローズする。
コードの説明
まず、変数が宣言されています。
int i; double bid_ask;
次に、'while'ループが実行されます。
while'ループのロジックです。
OrderSelect()関数 では、変数'i'を数字1、2、3などの代用として使用します。(この点だけ注意してください)
OrderSelect()関数とOrderSymbol()関数内の変数iがUSDJPYでない場合、 変数iを1つ増やす( i++; )
while(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!="USDJPY")
i++;
while」ループは、OrderSelect()関数が適切な注文券を選択し、OrderSymbol()関数がUSDJPYの注文を選択するまで変数「i」を増やします。両方の目的が達成されると、whileループはfalseになり、制御はi++;(whileループの本体)以下に渡されます。
3 番目に、OrderModify()関数が実行される。
OrderModify(i,OrderOpenPrice(),50*Point,50*Point,0,CLR_NONE);
第四に、OrderPrint()関数が実行される。
OrderPrint();
5つ目は、決済する注文が買い注文なのか売り注文なのかを判別するためのパラメータを入れることです。
if(OrderType()==OP_BUY){bid_ask=Bid;} if(OrderType()==OP_SELL){bid_ask=Ask;}
6 番目に、プログラムが注文が買いか売りかを区別したら、OrderClose()関数を実行する。
OrderClose(i,OrderLots(),bid_ask,3,CLR_NONE);
7番目(そして最後)に、ストラテジーテスターでのビジュアルテストの際に、チケット番号が本当にUSDJPYのチケットであることを確認するために、変数「i」を表示するコメントをプログラム内に記述しています。
Comment("i = " ,i);
ありがとうございました。
サイモン
'while' ループのロジック。
OrderSelect() 関数は、変数 'i' を数字 1,2,3 などの代用として使用します。(これだけは覚えておいてください)
つまり、OrderSelect()関数とOrderSymbol()関数内の変数iがUSDJPYでない場合、 変数iを1増加させる(i++; )。
while」ループは、OrderSelect()関数が適切な注文券を選択し、OrderSymbol()関数がUSDJPY注文を選択するまで変数「i」を増やします。両方の目的が達成されると、whileループはfalseになり、制御はi++;(whileループ本体)以下に渡されます。
もし、戻り値のチェックと エラー報告が含まれていれば、おそらくあなた自身が問題を発見したことでしょう。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは、MQL4コミュニティです。
最初のリファレンス:https://book.mql4.com/operators/for
1つ目のリファレンスによると、'for'演算子の書式例はこのように書かれています。
第二の文献:https://docs.mql4.com/basis/operators/for
2つ目のリファレンスによると、'for'演算子の提供される例は、このように記述されています。
この最初の例では、2番目のパラメータとして「条件」が含まれているのに、2番目の例では、 2番目のパラメータ として「Expression2」が含まれているのはなぜか?
この矛盾は何を意味するのでしょうか?
また、それは重要なことなのだろうか?
forサイクル演算子を使うには、すべてのパラメータを理解する必要があると思うのですが。
ありがとうございました。