【MQL5】HistoryDealGetDouble関数について

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

HistoryDealGetDouble関数の働き・役割

HistoryDealGetDouble関数は、特定の約定に関連するプロパティを取得するために使用されます。この関数は、指定された約定チケットとプロパティ識別子に基づいて、約定プロパティの値を返します。返されるプロパティの値はdouble型である必要があります。
HistoryDealGetDouble関数は2つのバージョンがあり、1つは即座にプロパティ値を返し、もう1つは関数の成功に応じて真偽値を返し、プロパティの値を参照渡し変数に格納します。

HistoryDealGetDouble関数の引数について

HistoryDealGetDouble関数には2つのバージョンがあり、それぞれ引数の構成が異なります。

バージョン1

  1. ticket_number
  • 種類: ulong
  • 説明: 約定チケットを指定します。このチケット番号に基づいて、取得する約定プロパティが決定されます。
  1. property_id
double HistoryDealGetDouble(
   ulong ticket_number,      // 約定チケット
   ENUM_DEAL_PROPERTY_DOUBLE property_id  // 約定プロパティ識別子
);

バージョン2

  1. ticket_number
  • 種類: ulong
  • 説明: 約定チケットを指定します。このチケット番号に基づいて、取得する約定プロパティが決定されます。
  1. property_id
  1. double_var
  • 種類: double型参照
  • 説明: リクエストされたプロパティの値を受け取るための変数です。この変数に取得したプロパティの値が格納されます。
bool HistoryDealGetDouble(
   ulong ticket_number,      // 約定チケット
   ENUM_DEAL_PROPERTY_DOUBLE property_id,  // 約定プロパティ識別子
   double& double_var       // プロパティ値を受け取る変数
);

ENUM_DEAL_PROPERTY_DOUBLEについて

ENUM_DEAL_PROPERTY_DOUBLEは、約定の特定のプロパティを識別するための列挙型です。これらのプロパティはすべてdouble型であり、約定に関する様々な情報を取得するために使用されます。

DEAL_VOLUME

DEAL_VOLUMEは、約定量を示すプロパティ識別子です。この識別子を使用することで、特定の約定における取引量を取得することができます。取引量は、取引されたロット数を示し、通常はdouble型の値で表されます。

DEAL_PRICE

DEAL_PRICEは、約定値を示すプロパティ識別子です。この識別子を使用することで、特定の約定における取引価格を取得することができます。取引価格は、約定が成立した際の価格を示し、通常はdouble型の値で表されます。

DEAL_COMMISSION

DEAL_COMMISSIONは、約定手数料を示すプロパティ識別子です。この識別子を使用することで、特定の約定に対して発生した手数料の金額を取得することができます。手数料は、取引の実行に対してブローカーが課す費用を示し、通常はdouble型の値で表されます。

DEAL_SWAP

DEAL_SWAPは、累積スワップを示すプロパティ識別子です。この識別子を使用することで、特定の約定に対して発生したスワップポイントの合計を取得することができます。スワップポイントは、ポジションを翌日に持ち越した際に発生する金利の差額を示し、通常はdouble型の値で表されます。

DEAL_PROFIT

DEAL_PROFITは、約定の利益を示すプロパティ識別子です。この識別子を使用することで、特定の約定に対して得られた利益の金額を取得することができます。利益は、取引によって得られた収益を示し、通常はdouble型の値で表されます。

DEAL_FEE

DEAL_FEEは、約定直後に請求される約定料金を示すプロパティ識別子です。この識別子を使用することで、特定の約定に対して発生する取引料金の金額を取得することができます。約定料金は、取引が実行された際にブローカーが課す費用を示し、通常はdouble型の値で表されます。

DEAL_SL

DEAL_SLは、決済逆指値レベルを示すプロパティ識別子です。この識別子を使用することで、特定の約定における決済逆指値のレベルを取得することができます。
エントリおよびリバースの約定においては、ポジションが開かれたまたは反転された元の注文の決済逆指値を使用し、エグジットの約定ではポジション決済時の決済逆指値を使用します。この値は通常double型で表されます。

DEAL_TP

DEAL_TPは、決済指値レベルを示すプロパティ識別子です。この識別子を使用することで、特定の約定における決済指値のレベルを取得することができます。
エントリおよびリバースの約定においては、ポジションが開かれたまたは反転された元の注文の決済指値を使用し、エグジットの約定ではポジション決済時の決済指値を使用します。
この値は通常double型で表されます。

HistoryDealGetDouble関数の戻り値について

HistoryDealGetDouble関数戻り値は、関数のバージョンによって異なります。

バージョン1

バージョン1では、指定された約定プロパティの値を直接返します。返される値はdouble型です。例えば、約定の価格や手数料といったプロパティの値が返されます。

バージョン2

バージョン2では、関数の実行が成功したかどうかを示すbool型の値を返します。成功した場合、リクエストされたプロパティの値が参照渡しされたdouble型変数に格納されます。
戻り値がtrueの場合、指定されたプロパティの値が変数に格納されます。
戻り値がfalseの場合、プロパティの取得が失敗したことを示します。

HistoryDealGetDouble関数を使う際の注意点

HistoryDealGetDouble関数を使用する際には、いくつかの重要な点に注意する必要があります。

まず、注文、約定、ポジションの違いを理解することが重要です。約定は注文の実行結果であり、ポジションは一つ以上の約定の結果をまとめたものです。この違いを誤解すると、正しいプロパティの取得ができない可能性があります。

次に、property_idとして指定するプロパティ識別子は、ENUM_DEAL_PROPERTY_DOUBLE型の値でなければなりません。誤った識別子を指定すると、関数は正しい値を返しません。

また、HistoryDealGetDouble関数を使用する前に、HistorySelect関数を使用して必要な約定データを選択しておく必要があります。HistorySelect関数を呼び出していない場合、期待するデータを取得できないことがあります。

最後に、バージョン2の関数を使用する場合、関数がfalseを返す可能性があるため、必ず戻り値を確認し、取得が成功したかどうかを判断する必要があります。falseが返された場合、double_varには有効な値が格納されません。

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

// スクリプトの開始時に自動的に呼び出されるOnStart関数
void OnStart()
{
    // 約定チケット番号を指定するための変数
    ulong ticket_number = 123456; // 例として任意のチケット番号を使用

    // 取得するプロパティの識別子として、約定の価格を指定
    ENUM_DEAL_PROPERTY_DOUBLE property_id = DEAL_PRICE;

    // プロパティ値を受け取るための変数
    double deal_price;

    // 直接プロパティ値を取得するバージョン1の使用例
    double price = HistoryDealGetDouble(ticket_number, property_id);
    Print("約定の価格: ", price);

    // 関数の実行が成功したかどうかを示すバージョン2の使用例
    bool result = HistoryDealGetDouble(ticket_number, property_id, deal_price);
    
    // 関数が成功した場合、約定の価格を出力する
    if(result)
    {
        Print("バージョン2で取得した約定の価格: ", deal_price);
    }
    else
    {
        Print("約定のプロパティの取得に失敗しました");
    }
}

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

OnStart関数

OnStart関数は、スクリプトが開始されたときに最初に実行される関数です。MQL5スクリプトを作成する際に必ず定義されるエントリーポイントです。

ticket_number変数

ticket_number変数は、約定チケット番号を格納するためのulong型の変数です。約定チケットは、特定の約定を一意(1つしか存在しない)に識別するための番号です。この例では、任意の値123456を使用しています。

property_id変数

property_id変数は、約定プロパティの識別子を格納するためのENUM_DEAL_PROPERTY_DOUBLE型の変数です。ENUM_DEAL_PROPERTY_DOUBLE列挙型であり、以下のようなプロパティ識別子を含みます。

この例では、DEAL_PRICEを使用しています。

deal_price変数

deal_price変数は、約定プロパティの値を受け取るためのdouble型変数です。バージョン2のHistoryDealGetDouble関数を使用する際に、プロパティの値をこの変数に格納します。

HistoryDealGetDouble関数(バージョン1)

HistoryDealGetDouble関数のバージョン1は、約定チケット番号とプロパティ識別子引数として取り、指定されたプロパティの値を直接返します。この関数は、約定の特定のプロパティ値を取得するために使用されます。戻り値double型です。

double price = HistoryDealGetDouble(ticket_number, property_id);
Print("約定の価格: ", price);

HistoryDealGetDouble関数(バージョン2)

HistoryDealGetDouble関数のバージョン2は、約定チケット番号、プロパティ識別子、およびプロパティ値を受け取るための変数引数として取ります。この関数は、関数の実行が成功したかどうかを示すbool型の値を返します。成功した場合、プロパティの値が参照渡し変数に格納されます。

bool result = HistoryDealGetDouble(ticket_number, property_id, deal_price);

関数の実行が成功した場合はtrueを返し、取得した値をdeal_price変数に格納します。失敗した場合はfalseを返します。

Print関数

Print関数は、指定されたメッセージをエキスパートログに出力するために使用されます。デバッグや情報の確認に役立ちます。

Print("約定の価格: ", price);

if文

if文は、条件分岐を行うための制御構文です。この例では、HistoryDealGetDouble関数の実行結果に応じてメッセージを出力しています。

if(result)
{
    Print("バージョン2で取得した約定の価格: ", deal_price);
}
else
{
    Print("約定のプロパティの取得に失敗しました");
}

result変数がtrueの場合は、取得した約定の価格を出力し、falseの場合はエラーメッセージを出力します。

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