【MQL5】HistoryOrderGetString関数について

MQL5リファレンス
スポンサーリンク

HistoryOrderGetString関数の働き・役割

HistoryOrderGetString関数は、取引履歴の中から特定の注文のプロパティを取得するために使用されます。この関数は、注文プロパティが文字列型である場合に、そのプロパティの値を返します。

HistoryOrderGetString関数には2つのバージョンがあります。

1つはプロパティの値を直接返すもの、もう1つは関数の成功に応じてtrueまたはfalseを返し、プロパティの値を参照渡し変数に格納するものです。これにより、特定の注文の詳細情報にアクセスできます。

HistoryOrderGetString関数の引数について

HistoryOrderGetString関数引数は以下の通りです。

書式1

string HistoryOrderGetString(
  ulong ticket_number,                // チケット番号
  ENUM_ORDER_PROPERTY_STRING property_id  // プロパティ識別子
);

引数の詳細

ticket_number

注文チケットを指定します。これは、取引履歴内の特定の注文を一意(1つしか存在しない)に識別するための番号です。

property_id

注文プロパティの識別子を指定します。これは、ENUM_ORDER_PROPERTY_STRING列挙型の値のいずれかで、取得したいプロパティを示します。

書式2

bool HistoryOrderGetString(
  ulong ticket_number,                // チケット番号
  ENUM_ORDER_PROPERTY_STRING property_id, // プロパティ識別子
  string& string_var                  // プロパティ値を受け取る変数
);

引数の詳細

ticket_number

注文チケットを指定します。これは、取引履歴内の特定の注文を一意(1つしか存在しない)に識別するための番号です。

property_id

注文プロパティの識別子を指定します。これは、ENUM_ORDER_PROPERTY_STRING列挙型の値のいずれかで、取得したいプロパティを示します。

string_var

プロパティ値を受け取るための文字列変数です。この引数は、関数が成功した場合にプロパティの値がこの変数に格納されます。

HistoryOrderGetString関数の戻り値について

書式1

プロパティの値を文字列型で返します。指定されたプロパティの値が返されます。

書式2

関数の実行が成功した場合はtrueを返し、失敗した場合はfalseを返します。成功した場合、プロパティの値が参照渡しでtring_varに格納されます。

HistoryOrderGetString関数を使う際の注意点

取引履歴の注文を「ツールボックス」バーの「取引」タブに表示される待機注文と混同しないように注意が必要です。待機注文はまだ実行されていない注文を指し、取引タブに表示されます。一方、取り消された注文や取引が成立した注文は、クライアント端末の「ツールボックス」バーの「履歴」タブで確認できます。

HistoryOrderGetString関数は、取引履歴にアクセスし、特定の注文のプロパティを取得するために使用されます。このため、注文が既に実行されているか、取り消されていることを確認してから使用することが重要です。また、注文プロパティの識別子としてENUM_ORDER_PROPERTY_STRING列挙型の値を正しく指定する必要があります。

HistoryOrderGetString関数を使用する前に、まずHistorySelect関数を使用して取引履歴を選択し、その後にHistoryOrderSelect関数を使用して特定の注文を選択してから、この関数を使用してプロパティの値を取得することが一般的です。

HistoryOrderGetString関数を使ったサンプルコード

// OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出されます
void OnStart()
{
    // 例として、特定の注文チケット番号を指定します
    ulong ticket = 12345678;

    // 書式1のバージョンを使用して注文シンボルを取得します
    // HistoryOrderGetString関数を使用して、指定したチケット番号の注文シンボルを取得します
    string order_symbol = HistoryOrderGetString(ticket, ORDER_SYMBOL);
    // 取得した注文シンボルをエキスパートログに出力します
    Print("注文シンボル: ", order_symbol);

    // 書式2のバージョンを使用して注文コメントを取得します
    // プロパティ値を受け取るための変数を定義します
    string order_comment;
    // HistoryOrderGetString関数を使用して、指定したチケット番号の注文コメントを取得します
    if (HistoryOrderGetString(ticket, ORDER_COMMENT, order_comment))
    {
        // 取得に成功した場合、注文コメントをエキスパートログに出力します
        Print("注文コメント: ", order_comment);
    }
    else
    {
        // 取得に失敗した場合、エラーメッセージをエキスパートログに出力します
        Print("注文コメントの取得に失敗しました。チケット番号: ", ticket);
    }
}

このサンプルコードでは、指定した注文チケットをHistoryOrderGetString関数を使用して選択し、その後に選択された注文の詳細情報(シンボルとコメント)にアクセスしています。

サンプルコードに使われた関数や文法要素の簡単な解説

OnStart関数

OnStart関数は、スクリプトの実行が開始されたときに自動的に呼び出される関数です。この関数内に必要な処理を記述します。

ulong ticket

ticketは、特定の注文を一意(1つしか存在しない)に識別するための注文チケット番号を格納する変数です。

ulong ticket = 12345678;

HistoryOrderGetString関数(書式1)

HistoryOrderGetString関数の書式1は、注文チケットとプロパティ識別子を指定して、そのプロパティの値を文字列として取得します。この関数は、指定されたプロパティの値を直接返します。

string order_symbol = HistoryOrderGetString(ticket, ORDER_SYMBOL);

このコードでは、指定した注文チケット番号の注文シンボルを取得し、その値をorder_symbol変数に格納します。

Print関数

Print関数は、メッセージや変数の値をエキスパートログに出力します。デバッグや情報の確認に使用されます。

Print("注文シンボル: ", order_symbol);

このコードでは、取得した注文シンボルをエキスパートログに出力します。

string変数の宣言

string型変数order_commentを宣言します。この変数は、HistoryOrderGetString関数の書式2によってプロパティの値を受け取るために使用されます。

string order_comment;

HistoryOrderGetString関数(書式2)

HistoryOrderGetString関数の書式2は、注文チケット、プロパティ識別子、およびプロパティ値を受け取るための変数を指定します。この関数は、関数の実行が成功した場合はtrueを返し、失敗した場合はfalseを返します。成功した場合、プロパティの値が参照渡し変数に格納されます。

if (HistoryOrderGetString(ticket, ORDER_COMMENT, order_comment))

このif文では、HistoryOrderGetString関数がtrueを返した場合にのみ、次のコードブロックが実行されます。成功すると、注文コメントがorder_comment変数に格納されます。

Print関数(成功時)

注文コメントの取得が成功した場合、その値をエキスパートログに出力します。

Print("注文コメント: ", order_comment);

このコードでは、取得した注文コメントをエキスパートログに出力します。

else文

else文は、if文の条件が偽である場合に実行されるコードブロックを指定します。ここでは、HistoryOrderGetString関数がfalseを返した場合に実行されます。

else
{
    Print("注文コメントの取得に失敗しました。チケット番号: ", ticket);
}

このelse文では、注文コメントの取得が失敗した場合に、エラーメッセージをエキスパートログに出力します。

<参照>
OrderGetString関数

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