ChatGPT(GPTs)でMQL4用の関数作成:買い/売りポジションをすべて決済する

スポンサーリンク

買い/売りポジションをすべて決済する関数の作成

ChatGPT(GPTs)を活用して、買いポジションをすべて決済する関数、および、売りポジションをすべて決済する関数を作成しました。

使用GPTs:EA Creator

買いポジションの全決済関数

“買いポジションをすべて決済する“関数を作成します。

依頼内容と実行結果

比較的に単純な処理であったこともあり、あっさり期待した関数を作成してもらえました。

依頼内容

買いポジションをすべて決済する関数を作ってもらえますか。

ChatGPT出力結果

買いポジションをすべて決済する関数を作成するには、まず現在のオープンポジションを確認し、買いポジション(OP_BUY)を特定してそれらを閉じる必要があります。MetaTrader 4 (MT4) の MQL4 では、OrderSelect()OrderClose() 関数を使用してこの処理を行います。

以下は、買いポジションをすべて決済する関数の例です。

買いポジションを決済する関数

void CloseAllBuyPositions()
{
    // すべてのオープンポジションをループ
    for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if(OrderSelect(i, SELECT_BY_POS) && // 注文を選択
           OrderType() == OP_BUY &&         // 注文が買いポジションの場合
           OrderSymbol() == _Symbol)         // 現在の通貨ペアの注文のみ
        {
            double closePrice = MarketInfo(_Symbol, MODE_BID); // 現在の売り値
            int slippage = 3;                                  // スリッページ

            // ポジションを閉じる
            if(!OrderClose(OrderTicket(), OrderLots(), closePrice, slippage, clrRed))
            {
                Print("Failed to close order #", OrderTicket(), " Error: ", GetLastError());
            }
        }
    }
}

注意点

  • OrdersTotal() は、現在のアカウントにあるオープン注文の総数を返します。
  • OrderSelect() は、指定されたインデックスの注文を選択するために使用します。
  • OrderType()OP_BUY である場合、その注文は買いポジションです。
  • OrderClose() 関数は、選択された注文を閉じるために使用します。
  • エラーハンドリングを行うために、OrderClose() が失敗した場合の処理を含めています。

この関数は、現在の通貨ペアに関連するすべての買いポジションを閉じます。必要に応じて、他の通貨ペアのポジションも閉じるようにコードを調整できます。また、実際のトレーディング環境で使用する前に、デモアカウントで十分にテストすることをお勧めします。

売りポジションの全決済関数

“売りポジションをすべて決済する“関数を作成します。

依頼内容と実行結果

買いポジション決済の関数を作った後なので、雑な依頼をしてみましたが、賢いですね、ちゃんと期待された関数を作成してくれました。

依頼内容

同じく売りポジションをすべて決済する関数を作ってもらえますか。

ChatGPT出力結果

売りポジションをすべて決済する関数も、買いポジションを決済する関数と同様の方法で作成できますが、売りポジションの場合は決済に買い値(Ask価格)を使用します。以下は、すべての売りポジションを決済する関数の例です。

売りポジションを決済する関数

void CloseAllSellPositions()
{
    // すべてのオープンポジションをループ
    for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if(OrderSelect(i, SELECT_BY_POS) && // 注文を選択
           OrderType() == OP_SELL &&        // 注文が売りポジションの場合
           OrderSymbol() == _Symbol)         // 現在の通貨ペアの注文のみ
        {
            double closePrice = MarketInfo(_Symbol, MODE_ASK); // 現在の買い値
            int slippage = 3;                                  // スリッページ

            // ポジションを閉じる
            if(!OrderClose(OrderTicket(), OrderLots(), closePrice, slippage, clrBlue))
            {
                Print("Failed to close order #", OrderTicket(), " Error: ", GetLastError());
            }
        }
    }
}

注意点

  • この関数は、現在の通貨ペアに関連するすべての売りポジションを閉じます。必要に応じて他の通貨ペアのポジションも閉じるようにコードを調整できます。
  • OrderClose() 関数は、選択された注文を閉じるために使用しますが、売りポジションの場合は決済価格として買い値(Ask価格)を使用します。
  • エラーハンドリングを行うために、OrderClose() が失敗した場合の処理を含めています。

この関数を実際のトレーディング環境で使用する前に、デモアカウントでのテストを行うことをお勧めします。これにより、関数が期待通りに動作することを確認できます。

関連記事

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

コメント

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