
この記事では、論理演算子として知られる演算子のクラスについて説明します。 この完全な MQL4 論理演算子のチュートリアルでは、AND、GREATER THAN、その他の関数について学び、独自のトレーディング EA を作成するのに役立ちます。 私たち人間は、これらの演算子をあまり考えずに毎日使用しています。
たとえば、私たちは常に AND および OR 論理演算を扱います。 私は、外気温が 10 度のときは、暖かい冬用のジャケットと帽子をかぶって、どこか暖かい場所に行かない限り、家から出ません。 無数の羊を数えたり、17 世紀のオランダの風景の一部であることを想像したり、分厚いロシアの小説を読んだりすれば、今夜はベッドで眠りに落ちるでしょう。 私たちはこれらの論理演算を常に使用しますが、通常はそれらを機械命令として書き留める (または考える) ことはありません。
MT4 プログラムは正しいか間違っているかを決定する必要があり、これらの決定には論理演算子の使用が必要です。
単純な論理演算子は true または false に評価され、2 つ以上の引数または条件間の関係を示唆することが多いため、関係演算子と呼ばれることがよくあります。 これは論理 (関係) 演算子テーブルです:
| Sign | Meaning | Function | Example |
|---|---|---|---|
| == | 同等 | true,左側の引数が右側の引数と同じ値である場合 | x == y の場合、条件は true |
| != | 等しくない, 不平等 | 等価に反して、左側のパラメータが右側のパラメータと同じ値を持たない場合 | If x != y、条件は false |
| > ; | ... よりも優れています | true (左のパラメータがright パラメータ td> | If x > y、条件は true です |
| < | 未満 | 左側のパラメータが右側のパラメータより小さい場合は true | x < y の場合、条件は true | >= | 以上 | true (左側のパラメータが右側のパラメータ以上の場合) td> | 条件は、x >= y の場合に true |
| <= | 以下< /td> | true (左側のパラメータが以下の場合)または右側のパラメータと等しい | x <= y の場合、条件は true |
| && | AND td> | true (左右のパラメータが true の場合) span> | 条件は x && の場合に true ; y |
| || | OR< /td> | 左側または右側のパラメータが true の場合は True | x の場合 || はい、条件は true |
| ! | < td >そうではありません引数が false の場合は true; それ以外の場合は false | !x の場合、条件は true |
最後のエントリを除くすべては、関係演算子または比較演算子です。 これらの関係演算子のより具体的な例を提供してみます。
カスタム OrdersTotalMagicOpen() 関数から抽出されたコードの一部を次に示します。
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber )
これらの 2 行に、等しい (==)、等しくない (!=)、および (&& ) の 4 つの関係演算子を含めます。または (||)。 コードの最初の行は、等しくない (!=) 演算子と or (||) 演算子をうまく表しています。 これは、オープントレードのシンボルが EA の基本チャートのシンボルではない場合、またはオープントレードのマジックナンバーがストラテジーのマジックナンバーではない場合、プログラムを続行できることを示します。 続ける とはどういう意味ですか? これは、while 演算子または for 演算子に最も近い外向きループの開始を制御する別の演算子です。つまり、適用されなくなった直後の一連の計算をスキップします。 2 行目と 3 行目は、等号 (==) 演算子と AND (&&) 演算子の良い例です。 これは、オープントレードのシンボルが EA の基礎となるチャートのシンボルであり、オープントレードが EA のマジックナンバーを持っている場合、計算の次のステップに進むことができることを意味します。
価格ポイントやインジケーターを比較するとき、関係演算子より大きいか小さいことがよくあります。 たとえば、ボリンジャー バンドの購入条件を表現する 1 つの方法を見てみましょう。
bool BuyCondition1 == false;if (iBands(NULL,bandp,bandpx , Banddev,0,PRICE_CLOSE,MODE_LOWER,1) < iClose (NULL,0,1)
&& iBands(NULL,bandp,bandpx,banddev,0,PRICE_CLOSE,MODE_LOWER,0) > ;= iClose (NULL,0,0)
購入条件 1 == true;
ここで購入条件を確認できます。これは、AND (&&) で接続された 2 つのパラメーターも true である場合にのみ true になります。最初のパラメーターには有効な小なり (<) 演算子があり、2 番目のパラメーターには以上 (> ;= ) 演算子が機能します。最初の引数は、前の BB の下限が前の終値よりも低くなければならないことを示します。2 番目の引数は、現在の BB の下限が現在の終値以上である必要があることを示します。これら 2 つの引数を組み合わせると、翻訳すると: 終値が下限バンドを横切ったときに購入する クロスオーバー機能が常駐していないため、クロスオーバーは 2 つの部分で構成する必要があります: 最近起こったこと (下限バンドが終値よりも低かった) と現在起こっていること (下のバンドは現在終値に接触しているか、終値を超えています) .
次の条件を満たす限り、任意の 2 つの値を比較できます。それらは同じデータ型です。 ブール値を定数 true または false と比較できます。
ブール演算
ブール演算子 AND (&&) と OR (||) を使用してリレーショナルを結合しますオペレーション。 AND 演算子は、すべての条件が true かどうかを評価します。 そうであれば、記述全体が真実です。 いずれかの条件が false の場合、ステートメント全体が false になります。
if (BooleanVar1 == true && Indicator1 > Indicator2)
{
// オープン注文
}
BooleanVar1 が true に等しく、Indicator1 がインジケータ 2 より大きい場合、ステートメントは true と評価され、中かっこ内のコードが実行されます。 これらの条件のいずれかが false の場合、ステートメント全体が false と評価され、中かっこで囲まれたコードは実行されません。 && 演算子と組み合わせた条件はいくつでもあり、それらはすべて true と評価される必要があります。
OR 演算子は、どちらかの条件が true かどうかを評価します。 少なくとも 1 つの条件が真であれば、ステートメント全体が真になります。 すべての条件が false の場合、ステートメントは false と評価されます。
if (BooleanVar1 = true || Indicator1 > Indicator2)
if Booleanvar1が true に等しい、または Indicator1 が Indicator2 より大きい場合、ステートメントは true として評価されます。 両方の条件が false の場合、ステートメントは false と評価されます。
AND 演算と OR 演算を組み合わせて、より複雑な取引条件を作成できます。 その際、括弧を使用して操作の順序を確立します。
if (BooleanVar1 == true && Indicator1 > Indicator2 || BooleanVar1 == false)
括弧で囲まれたステートメントが最初に評価されます。 両方の条件が true の場合、ステートメントは true と評価され、OR 演算が実行されます。