システムトレード 게시글

MetaTrader 4の注文管理を効率化!目標利益と損切りを設定しよう

첨부파일
34194.zip (995 bytes, 다운로드 0회)

はじめに

今回は、MetaTrader 4で使えるエキスパートアドバイザー(EA)をご紹介します。このツールを使えば、目標利益を達成したり、損失を限定したりすることができます。さっそく見ていきましょう!

必要な設定項目

このEAには、次の3つの入力が必要です:

  • 利益目標
  • 損切り
  • マジックナンバー
extern double inTargetProfitMoney = 10; //利益目標($)
extern double inCutLossMoney = 0.0; //損切り($)
extern int inMagicNumber = 0; //マジックナンバー

EAの初期化

EAが実行されると、まず OnInit() 関数が呼ばれます。この中で、入力値の確認を行います。

int OnInit() {
    //---
    if (inTargetProfitMoney <= 0) {
        Alert("無効な入力");
        return(INIT_PARAMETERS_INCORRECT);
    }
    inCutLossMoney = MathAbs(inCutLossMoney) * -1;
    //---
    return(INIT_SUCCEEDED);
}

価格変動の監視

価格が動くたびに、OnTick() 関数が呼ばれ、利益や損失の計算が行われます。

void OnTick() {
    //---
    double tFloating = 0.0;
    int tOrder = OrdersTotal();
    for (int i = tOrder - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderMagicNumber() == inMagicNumber) {
                tFloating += OrderProfit() + OrderCommission() + OrderSwap();
            }
        }
    }
    if (tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0)) {
        fCloseAllOrders();
    }
}

全注文をクローズする

OnTick() 関数では、利益または損失の合計を計算し、条件に合致する場合は全ての注文をクローズします。

void fCloseAllOrders() {
    double priceClose = 0.0;
    int tOrders = OrdersTotal();
    for (int i = tOrders - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL)) {
                priceClose = (OrderType() == OP_BUY) ? MarketInfo(OrderSymbol(), MODE_BID) : MarketInfo(OrderSymbol(), MODE_ASK);
                if (!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold)) {
                    Print("WARNING: クローズ失敗");
                }
            }
        }
    }
}

まとめ

このようにして、利益目標や損切りを設定することで、トレードのリスクを効果的に管理できます!もっと詳しい情報やMQL4のコードに関する教育を受けたい方は、ぜひ私たちのTelegramグループ t.me/codeMQL に参加してください。

연관 포스트

댓글 (0)