MQL4(MT4) OrdersTotalの使い方

MQL4 Reference
スポンサーリンク

OrdersTotal()の使い方

MQL4 (MT4)のOrdersTotal()の使い方をChatGPTに教えてもらいました。
なかなかいい感じで教えてもらえます。内容も特に問題なさそうです。

使用GPTs:EA Creator

MT4 MQL4のOrdersTotalの利用方法を装例を教えて下さい。補足で気を付ける点なども教えて下さい。

回答

OrdersTotal関数は、MetaTrader 4 (MT4) プラットフォームで現在保持している注文の合計数を返すMQL4言語の関数です。この関数は、特に複数の注文を管理する必要があるExpert Advisor (EA) を開発する際に便利です。

OrdersTotal関数の使用例

OrdersTotal関数は非常にシンプルで、引数を取らずに現在の注文総数を整数で返します。

注文数のチェックと基本情報の表示

void OnStart()
{
    // 現在の注文総数を取得
    int totalOrders = OrdersTotal();

    // 注文総数を表示
    Print("現在の注文総数: ", totalOrders);

    // 各注文の基本情報を表示
    for(int i = 0; i < totalOrders; i++)
    {
        if(OrderSelect(i, SELECT_BY_POS)) // 注文を選択
        {
            // 注文情報の表示
            Print("注文 #", OrderTicket(), ": ", OrderType(), " ", NormalizeDouble(OrderLots(), 2), " ロット ", OrderSymbol(), " at ", NormalizeDouble(OrderOpenPrice(), 5));
        }
    }
}

この例では、OrdersTotalを使用して現在の注文総数を取得し、その後でOrderSelect関数を使って各注文にアクセスし、注文の基本情報を表示しています。

注意点

  • ループ内での注文選択: OrdersTotalで取得した注文数に基づいてループを行い、その中でOrderSelectを使用して各注文にアクセスする場合、SELECT_BY_POSモードを使用して注文を選択します。これにより、ループのインデックスをそのまま注文の位置として使用できます。
  • ループの方向: 注文をループ処理する際には、新しい注文から古い注文へと逆順で処理することが一般的です。これは、注文が閉じられたり削除されたりすると、注文リストのインデックスが変わる可能性があるためです。ただし、上記の例ではこのような操作を行っていないため、順方向のループを使用しています。
  • エラーハンドリング: OrderSelect関数は、指定された注文が選択できなかった場合にfalseを返します。選択した注文にアクセスする前に、この関数の戻り値を常にチェックすることが重要です。
  • マルチスレッド環境との互換性: MT4はシングルスレッドアプリケーションですが、注文処理中に外部からの注文更新(例えば、他のEAや手動操作による)が発生する可能性があります。そのため、注文の総数や特定の注文の状態を取得する際は、常に最新の情報を参照していることを確認する必要があります。

OrdersTotal関数とこれに関連する注文操作関数を理解し、適切に使用することで、EAの注文管理機能を効果的に実装することができます。

MQL4リファレンス

式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/trading/orderstotal

他のトレード関数の使用方法

以下のそれぞれのリンク先で確認していますので、ご参照ください。

関数名概要
OrderClose指定されたチケット番号、ロット数、クローズ価格、スリッページを指定して特定の注文を閉じるために使用されます。成功した場合、真を返します。
OrderCloseBy2つの相反する注文を相殺するために使用され、一方の注文を閉じ、もう一方には相当する利益または損失が記録されます。
OrderClosePrice最後に閉じられた注文のクローズ価格を返します。注文が選択されている必要があります。
OrderCloseTime注文が閉じられた正確な日時を返します。注文が閉じられていない場合は、ゼロを返します。
OrderComment注文に関連付けられたコメントを返します。
OrderCommission注文にかかるコミッションの金額を返します。
OrderDelete指定されたチケット番号の保留中の注文を削除します。成功した場合、真を返します。
OrderExpiration保留注文の有効期限を日時形式で返します。有効期限が設定されていない場合は、ゼロを返します。
OrderLots注文のロット数を返します。
OrderMagicNumber注文に割り当てられたマジックナンバーを返します。これは注文を識別するためにEAによって使用される数値です。
OrderModify既存の注文のパラメータ(価格、ストップロス、テイクプロフィット、有効期限等)を変更します。成功した場合、真を返します。
OrderOpenPrice注文が開かれた価格を返します。
OrderOpenTime注文が開かれた正確な日時を返します。
OrderProfit選択された注文の詳細情報をエキスパートログに出力します。
OrderProfit注文から得られた利益または損失を返します。
OrderSelect指定されたチケット番号の注文を選択するか、全注文の中から特定の注文を選択します。成功した場合、真を返します。
OrderSend新しい注文を送信します。注文のタイプ、量、価格、ストップロス、テイクプロフィット等を指定できます。成功した場合、注文のチケット番号を返します。
OrdersHistoryTotalアカウントの取引履歴に含まれる注文の総数を返します。これには閉じられた注文とキャンセルされた注文が含まれます。
OrderStopLoss注文のストップロスレベルを返します。
OrdersTotal現在開いている注文の総数を返します。
OrderSwap注文にかかるスワップ料金を返します。
OrderSymbol注文が関連する通貨ペアを返します。
OrderTakeProfit注文のテイクプロフィットレベルを返します。
OrderTicket注文のユニークなチケット番号を返します。
OrderType注文のタイプ(買い、売り、買い停止、売り停止、買いリミット、売りリミット)を表す整数値を返します。

関連記事

スポンサーリンク
海外FXキャッシュバック口座開設ならTariTali(タリタリ)

コメント

タイトルとURLをコピーしました