MQL4プログラミングにおけるif文について(サンプルソースあり)

MQL4におけるif文は、条件分岐を実現するための基本的な制御構造です。以下にif文の使用方法と特徴を説明します。

目次

基本的な構文

if文の基本的な構文は次のとおりです。

if (条件式) {
    // 条件がtrueの場合に実行される処理
}

条件式がtrueの場合、中括弧{}内のコードが実行されます

if-else文

条件が偽の場合の処理を指定するには、else文を使用します。

if (条件式) {
    // 条件がtrueの場合に実行される処理
} else {
    // 条件がfalseの場合に実行される処理
}

else文は省略可能ですが、使用することで条件がfalseの場合の処理を明示的に指定できます

複数の条件分岐

複数の条件を扱う場合は、else if文を使用します。

if (条件1) {
    // 条件1がtrueの場合の処理
} else if (条件2) {
    // 条件2がtrueの場合の処理
} else {
    // どの条件もfalseの場合の処理
}

条件式の書き方

条件式には、比較演算子(==, !=, <, >, <=, >=)や論理演算子(&&, ||, !)を使用できます。例えば

if (価格 > 移動平均 && RSI < 30) {
    // 買いエントリーの条件
}

注意点

  1. 単一の文を実行する場合、中括弧{}を省略できますが、可読性のために使用することが推奨されます
  2. ネストされたif文を使用する際は、elseの配置に注意が必要です
  3. 複雑な条件分岐の場合、switch文の使用を検討することも有効です

if文を適切に使用することで、EAやカスタムインジケータの動作を細かく制御し、様々な市場状況に対応したロジックを実装することができます。

サンプルソース

  1. 単純な条件分岐の例:
void OnTick()
{
    double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
    double ma = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
    
    if(currentPrice > ma)
    {
        Print("現在の価格が20期間SMAを上回っています");
    }
    else
    {
        Print("現在の価格が20期間SMA以下です");
    }
}
  1. 複数の条件を組み合わせた例:
void OnTick()
{
    double rsi = iRSI(_Symbol, PERIOD_CURRENT, 14, PRICE_CLOSE, 0);
    
    if(rsi > 70)
    {
        Print("RSIが70を超えています。売りシグナルの可能性があります");
    }
    else if(rsi < 30)
    {
        Print("RSIが30を下回っています。買いシグナルの可能性があります");
    }
    else
    {
        Print("RSIは中立圏内です");
    }
}
  1. 注文処理を含む例:
void OnTick()
{
    if(OrdersTotal() == 0)
    {
        double ma_fast = iMA(_Symbol, PERIOD_CURRENT, 10, 0, MODE_SMA, PRICE_CLOSE, 0);
        double ma_slow = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
        
        if(ma_fast > ma_slow)
        {
            if(OrderSend(_Symbol, OP_BUY, 0.1, Ask, 3, 0, 0, "Buy Order", 0, 0, clrGreen) > 0)
            {
                Print("買い注文が出されました");
            }
        }
        else if(ma_fast < ma_slow)
        {
            if(OrderSend(_Symbol, OP_SELL, 0.1, Bid, 3, 0, 0, "Sell Order", 0, 0, clrRed) > 0)
            {
                Print("売り注文が出されました");
            }
        }
    }
}

これらの例では、if文を使って現在の市場状況に基づいて異なる処理を行っています。実際のEAを作成する際は、これらの基本的な構造を組み合わせて、より複雑なロジックを構築することができます。また、リスク管理やエラーハンドリングなども考慮に入れる必要があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

池田 直哉 池田 直哉 メタプロアカデミー創業者・講師

オリジナルのEAを作ることができるようになるWebスクール【メタプロアカデミー】を運営しています。プログラミング未経験の方が最短1ヵ月で勝てるオリジナルEAが作れるようになります。

目次