
MQL5 MQL5 の取引関数
HistoryDealGetDouble()
- できること
- 約定(ディール)の損益・価格・ロットなどを取得する
- 対応
- MQL5
HistoryDealGetDouble() とは
MQL5 で、チケット番号を指定して、約定の小数の情報(損益・約定価格・ロット数・手数料・スワップ)を取得する関数です。先に HistorySelect() か HistoryDealSelect() で履歴を読み込んでおきます。
HistoryDealGetDouble() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
double HistoryDealGetDouble(
ulong ticket_number,
ENUM_DEAL_PROPERTY_DOUBLE property_id
)
bool HistoryDealGetDouble(
ulong ticket_number,
ENUM_DEAL_PROPERTY_DOUBLE property_id,
double &double_var
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket_number | ulong | 必須 | ディールのチケット番号。 |
property_id | ENUM_DEAL_PROPERTY_DOUBLE | 必須 | 取得する項目。DEAL_PROFIT(損益)、DEAL_PRICE(約定価格)、DEAL_VOLUME(ロット)、DEAL_COMMISSION(手数料)、DEAL_SWAP(スワップ)など。 |
double_var | double & | 必須 | 2つ目の書き方で、値を受け取る変数。 |
戻り値
1つ目の書き方は値そのもの。2つ目の書き方は成功したら true を返し、値は double_var に入ります。
HistoryDealGetDouble() の使い方(コード例)
if(HistorySelect(0, TimeCurrent()))
{
double win = 0, loss = 0;
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong d = HistoryDealGetTicket(i);
if(d == 0 || HistoryDealGetInteger(d, DEAL_ENTRY) != DEAL_ENTRY_OUT) continue;
double p = HistoryDealGetDouble(d, DEAL_PROFIT);
if(p >= 0) win += p; else loss += p;
}
Print("総利益=", win, " 総損失=", loss);
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
HistoryDealGetDouble() の注意点
- 決済の損益は、決済側のディール(DEAL_ENTRY が DEAL_ENTRY_OUT)の DEAL_PROFIT に入ります。エントリー側のディールの DEAL_PROFIT は通常 0 です。
MQL4 と MQL5 の違い
MQL4 では OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) で選んで OrderProfit() などを読みます。
関連する関数
MQL5 の取引関数の関数一覧
- OrderCheck
- OrderCalcMargin
- OrderCalcProfit
- PositionsTotal
- PositionGetTicket
- PositionGetSymbol
- PositionSelect
- PositionSelectByTicket
- PositionGetDouble
- PositionGetInteger
- PositionGetString
- OrderGetTicket
- OrderGetDouble
- OrderGetInteger
- HistorySelect
- HistoryDealsTotal
- HistoryDealGetTicket
- HistoryDealSelect
- HistoryDealGetDouble
- HistoryDealGetInteger
- HistoryDealGetString












