ライブラリ: MT4Orders - ページ 94

 
hini #:
質問は理解できましたが、明確にしたいのですが、MT5のポジション履歴と同じようなリストを、詳細まで行かずに取得することは可能ですか?
 
fxsaber #:
これを試してみましたが、MT5 のヒストリカル・ポジション・リストと同じではありません。2つのクローズバイが統合されても、出来高は0.01ロット分不足しています。
 
hini #:
数量は0.01ロットではまだ十分ではありません。
エラーの証拠を提示してください。MT4でデモ口座を開設し、そこで同じ取引を行うことをお勧めします。
 
fxsaber # :
エラーの証拠を提示してください。MT4でデモ口座を開設し、そこで同じ取引操作をしてみることをお勧めします。
分かりました、確かにMT4と同じです。
 
hini #:
MT5のポジション履歴のようなリストを取得することは可能ですか?
スナップショットを通して。
#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(単位:µs
#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

#define  VIRTUAL_SNAPSHOT_REFRESHTIME 1000 // 更新のためのスナップショットの有効期間。MT5では、MT4Orders.mqhに接続する必要があります。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/ja/code/22577

#define  Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void PrintHistory()
{
  for (uint i = OrdersHistoryTotal(); (bool)i--;)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      OrderPrint();
}

void OnStart()
{
  if (AccountInfoInteger(ACCOUNT_TRADE_MODE) == ACCOUNT_TRADE_MODE_DEMO)
  {
    const TICKET_TYPE Ticket1 = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
    const TICKET_TYPE Ticket2 = OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0);
      
    if (OrderCloseBy(Ticket1, Ticket2)) // OrderCloseBy(Ticket2, Ticket1)は別のシーケンスである。
    {
      Print("\nWith CloseBy.");
      PrintHistory(); // 結果は入力パラメータのシーケンスに依存する OrderCloseBy.
      
      Print("\nWithout CloseBy.");
      VIRTUAL::Snapshot(VIRTUAL_SNAPSHOT_REFRESHTIME, -1, false, "", false);    
      PrintHistory(); // 結果NOT зависит от последовательности входных параметров OrderCloseBy.
    }
  }  
}


結果は?

With CloseBy.
#151231378604 2025.12.16 14:59:36.869 sell 0.00 GBPJPY 207.722 0.000 0.000 2025.12.16 14:59:36.904 207.722 0.00 0.00 0.00 #151304734151  by #151304734153 0
#151231378603 2025.12.16 14:59:36.834 buy 1.00 GBPJPY 207.734 0.000 0.000 2025.12.16 14:59:36.904 207.722 0.00 0.00 -6.59 #151304734151  by #151304734153 0
#151231377009 2025.12.16 14:59:15.351 balance 0.00 0.000 0.000 0.000 2025.12.16 14:59:15.351 0.000 0.00 0.00 100000.00 0

Without CloseBy.
#151231378603 2025.12.16 14:59:36.834 buy 1.00 GBPJPY 207.734 0.000 0.000 2025.12.16 14:59:36.869 207.722 0.00 0.00 -6.59 #151304734151  by #151304734153 0: -12 (-12) - 00:00:00
#151231377009 2025.12.16 14:59:15.351 balance 0.00 0 0 0 2025.12.16 14:59:15.351 0 0.00 0.00 100000.00 0 - 00:00:00
 
fxsaber # :
スナップ写真を通して
わかりました、ありがとうございました!
 

方向が違うし、注文番号も一致しない。

With CloseBy.
#721743851 2025.12.16 06:12:03.182 buy 0.02 XAUUSDm 4285.524 0.000 0.000 2025.12.16 06:50:55.122 4289.859 0.00 0.00 8.67 0
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0
#721743835 2025.12.16 06:14:10.761 sell 0.03 BTCUSDm 86202.58 0.00 0.00 2025.12.16 06:50:54.142 86461.98 0.00 0.00 -7.78 0
#721743834 2025.12.16 06:10:41.259 sell 0.03 BTCUSDm 86199.15 0.00 0.00 2025.12.16 06:50:54.123 86461.98 0.00 0.00 -7.89 0
#721743827 2025.12.16 06:11:07.913 buy 0.02 GBPUSDm 1.33627 0.00000 0.00000 2025.12.16 06:50:54.069 1.33626 0.00 0.00 -0.02 0
#721743824 2025.12.16 06:10:55.744 buy 0.04 EURUSDm 1.17503 0.00000 0.00000 2025.12.16 06:50:54.032 1.17511 0.00 0.00 0.32 0
#721743822 2025.12.16 06:13:38.019 sell 0.00 XAUUSDm 4286.352 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 0.00 #999167005  by #999174176 0
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0

Without CloseBy.
#721743851 2025.12.16 06:12:03.182 buy 0.02 XAUUSDm 4285.524 0.000 0.000 2025.12.16 06:50:55.122 4289.859 0.00 0.00 8.67 0: +4335 (+4335) - 00:38:52
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0: +3405 (+3405) - 00:40:29
#721743835 2025.12.16 06:14:10.761 sell 0.03 BTCUSDm 86202.58 0.00 0.00 2025.12.16 06:50:54.142 86461.98 0.00 0.00 -7.78 0: -25940 (-25940) - 00:36:44
#721743834 2025.12.16 06:10:41.259 sell 0.03 BTCUSDm 86199.15 0.00 0.00 2025.12.16 06:50:54.123 86461.98 0.00 0.00 -7.89 0: -26283 (-26283) - 00:40:13
#721743827 2025.12.16 06:11:07.913 buy 0.02 GBPUSDm 1.33627 0.00000 0.00000 2025.12.16 06:50:54.069 1.33626 0.00 0.00 -0.02 0: -1 (-1) - 00:39:47
#721743824 2025.12.16 06:10:55.744 buy 0.04 EURUSDm 1.17503 0.00000 0.00000 2025.12.16 06:50:54.032 1.17511 0.00 0.00 0.32 0: +8 (+8) - 00:39:59
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:13:38.019 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0: -102 (-102) - 00:03:13


 

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: MT4Orders

hini, 2025.12.17 02:14 pm.

方向が正しくなく、注文番号も一致しないようです。

With CloseBy.
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0
#721743822 2025.12.16 06:13:38.019 sell 0.00 XAUUSDm 4286.352 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 0.00 #999167005  by #999174176 0
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0

Without CloseBy.
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0: +3405 (+3405) - 00:40:29
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:13:38.019 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0: -102 (-102) - 00:03:13

MT5では、取引履歴には取引と注文の2つのエンティティしかありません。取引履歴にはポジションはなく、長年 MT5 ではクローズしたポジションは表示されませんでした。

MQは、取引/注文履歴からポジション履歴を生成することで、このような履歴表示モードを作りました。これが生成です。そして残念なことに、状況によっては間違っています。特に上記の場合です。


この状況での取引操作の時系列を考えてみよう。

  1. 取引 2025.12.16 06:10:25.029 721657655 BUY 0.04 が約定 - ポジション 999167005 BUY 0.04 がオープンされた。
  2. 2025.12.16 06:13:38.019 721662376 SELL 0.01 - 売りポジション 999174176 SELL 0.01 をオープン。
  3. 約定 2025.12.16 06:50:54.942 721743849 SELL 0.03 - ポジション 999167005 BUY 0.03 をクローズ。

合計で、ちょうど3つの取引が行われた。そして、それはスクリプトが上の引用で示すものと完全に一致する。


取引履歴では、OrderTicket はポジションをクローズした取引のチケットです。各ポジションは独自の OrderTicket を持っています。MT4Orders はポジションの履歴を一義的に生成します。

同じPOSITION_ID(OrderTicketID)値を、存在期間中に重なることのなかった異なるポジションに使用することができます。MT5はポジション履歴を自由に生成します。


MT5のポジション履歴生成の行をご覧ください(赤字は私のものではありません)。

そこには多くの疑問がある。特に、0.05ロットの取引回転(フル・サークル)はあっただろうか?


様々な取引状況はブログで詳しく扱っています。

 

実験を繰り返したところ、MT5が生成したヒストリカル・ポジションは正しいようです:

ここでは、買い-0.04、売り-0.01、買い-0.04のポジションを手動でオープンし、1つのボタンですべてをクローズしました。

そして、CloseBy経由で生成されたヒストリカルポジションは、私が手動で作成したものとは異なっています。

With CloseBy.
#726199620 2025.12.17 08:31:37.613 buy 0.04 XAUUSDm 4315.506 0.000 0.000 2025.12.17 08:31:54.047 4315.881 0.00 0.00 1.50 0
#726199619 2025.12.17 08:31:00.023 buy 0.03 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:54.038 4315.881 0.00 0.00 -0.02 0
#726199617 2025.12.17 08:31:04.356 sell 0.00 XAUUSDm 4315.630 0.000 0.000 2025.12.17 08:31:53.880 4315.630 0.00 0.00 0.00 #1004816081  by #1004816270 0
#726199616 2025.12.17 08:31:00.023 buy 0.01 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:53.880 4315.630 0.00 0.00 -0.26 #1004816081  by #1004816270 0

Without CloseBy.
#726199620 2025.12.17 08:31:37.613 buy 0.04 XAUUSDm 4315.506 0.000 0.000 2025.12.17 08:31:54.047 4315.881 0.00 0.00 1.50 0: +375 (+375) - 00:00:17
#726199619 2025.12.17 08:31:00.023 buy 0.03 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:54.038 4315.881 0.00 0.00 -0.02 0: -4 (-4) - 00:00:54
#726199616 2025.12.17 08:31:00.023 buy 0.01 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:04.356 4315.630 0.00 0.00 -0.26 #1004816081  by #1004816270 0: -255 (-255) - 00:00:04

以下はMT5のヒストリカル・ポジションです。


 
hini #:

そして、CloseBy経由で生成されたポジション履歴は、私が手動で作成したものとは異なる。

タイムラインと完全に一致している。もう一度。MT5は取引履歴を生成する。それはクローズしたポジションの曲がった表現です。

MT5が示すものに誘導されるのではなく、常識によって誘導されるべきである。