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

 
これはバグではなく、設計上の欠陥です。問題は、証拠金が口座のプロパティのレベルで計算されるのに対し、シンボルのプロパティの レベルで計算されることです。
 
fxsaber:

画期的なライブラリの更新!MT5取引環境の恒常的な同期ズレを補正できる世界で唯一のライブラリ。控えめですが、真実です。

このアップデートの後、異なるブローカーの実際の口座で 数千の取引が行われました。分析では、同期メカニズムが完璧に機能することが示されました。

私はそれを使用することをお勧めします。貴社の製品の信頼性をさらに高めてください。

 

コンパイルエラー:

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'   MT4Orders.mqh   2448    55

念のためKBから最新版をダウンロードしたが、どうやらhttps://www.mql5.com/ru/forum/170952/page203#comment_22563132

 
Igor Makanu:

コンパイルエラー :

念のためKBから最新版をダウンロードしたが、どうやらhttps://www.mql5.com/ru/forum/170952/page203#comment_22563132

問題が 解決したら、すぐに更新します。

 
// 変更リスト:
// 01.06.2021
// 修正:b2449+コンパイラーとの互換性。
// 修正:同期の改善。ByPass.mqhは 最新バージョンでなければならない。
// 追加: OrderLots(true) - 選択されたポジションの同期されたサイズ。
// 問題解決https://www.mql5.com/ru/forum/368178/page27#comment_22565676

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(単位:µs
#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  MT4ORDERS::OrderSend_MaxPause = 0;
    
  // そして今、ポジション数量が1に等しい場合、0.1ロットをクローズする。
  // サイクル - スクリプトの実行をエミュレートする。
  while (!IsStopped() && OrderSelect(Ticket, SELECT_BY_TICKET) && (OrderLots(true) == 1))
    OrderClose(OrderTicket(), 0.1, OrderClosePrice(), 0);
}
 

私のリクエストにより、MetaQutoesはライブラリの最新アップデートを完全に英語にローカライズしました。ライブラリの最新ビルドは、ソースコードのコメントが英語に翻訳され、英語ページで利用できるようになりました。


英語ページで公開されていた以前のバージョンとの違い。

// 変更点のリスト:
// 02.11.2018
// 修正: MT4 のポジションをトリガーする前にオープン価格をゼロにすることはできなくなりました。
// 修正: 特定の取引サーバーの稀な実行面を考慮しました。
// 26.11.2018
// 修正:MT4のクローズポジションのマジックとコメント:新規取引の関連フィールドの優先順位が、決済取引のそれよりも高い。
// 修正:MT4-OrdersTotal および MT4-OrderSelect の計算中に、MT5-OrdersTotal および MT5-PositionsTotal の稀な変更が考慮されます。
// 修正:ライブラリは、MT5 から削除されていないポジションをオープンした注文を考慮しません。
// 17.01.2019
// 修正:保留中の注文を選択する際の不運なエラーを修正しました。
// 08.02.2019
// 追加:ポジションのコメントは、OrderCloseを経由して部分決済時に保存される。
// 部分決済時にオープンポジションのコメントを変更する必要がある場合は、OrderClose で指定できます。
// 20.02.2019
// 修正: MT5注文がない場合、ライブラリは既存のMT5トランザクションからの履歴同期を期待します。失敗した場合、そのことを通知します。
// 13.03.2019
// 追加:追加された OrderTicketID() - MT5 トランザクションまたは MT5 ポジションの PositionID、および保留中の MT4 注文のチケット。
// 追加します:SELECT_BY_TICKET は、すべての MT5 チケット (および MT5-PositionID) に対して機能します。
// 02.11.2019
// 修正:CloseByポジションのロット、手数料、クローズ価格を修正しました。
// 12.01.2020
// 修正:残高取引の OrderTicketID() が正しい値を返すようになりました。
// 修正:SELECT_BY_TICKET - OrderTicketID() (MT5-PositionID)による選択を修正しました。
// 修正:マクロとの互換性を高めるため、内部ライブラリのメソッド名を変更。
// 10.04.2020
// 修正:部分的に執行されたライブの未決注文が OrdersTotal() に入らなかった。
// 09.06.2020
// 追加:クローズしたポジションのStopLoss/TakeProfit/ClosePriceRequestがより明確に定義されるようになりました。
// 10.06.2020
// 追加:OrderPrint()にミリ秒を追加し、価格と注文の丸めを削除しました。
// 13.08.2020
// 追加:MT4ORDERS_BENCHMARK_MINTIMEマクロを使用してライブラリパーツのパフォーマンスをチェックする機能を追加しました。
// 20.08.2020
// 修正:明らかになった部分的なオーダー実行の特徴を考慮に入れる。
// 29.08.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 24.09.2020
// 追加します:SELECT_BY_TICKET (同じチケット) によってライブ MT4 注文を選択するときに、MT5 ポジションよりも MT5 注文の優先度を上げる必要がある場合、
// これはチケットのサイズをマイナスに変更することで可能である:OrderSelect(-Ticket, SELECT_BY_TICKET).
// 追加:MT4 のライブ注文(同じチケット)を変更する際に、MT5 注文のみの選択を指定する必要がある場合、
// これはチケットサイズをマイナスに変更することで可能である:OrderModify(-Ticket, ...).
// 追加:OrderSelect(INT_MAX, SELECT_BY_POS) - 存在を確認して更新することなく、MT5のポジションに切り替える。
// OrderSelect(INT_MIN, SELECT_BY_POS) - 存在を確認して更新することなく、MT5のライブ注文に切り替える。
// 修正:取引履歴をより高速に処理できるようにした。
// 30.09.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 08.10.2020
// 修正:新しいMT5取引検索の欠陥により、成行注文のOrderSendが長く実行される可能性がありました。
// 21.10.2020
// 追加:MT4用の互換性を提供するために、OrderTicketID() を追加 - OrderTicket() を返します。
// 11.11.2020
// 修正:OrderTicketID() および OrderTicketOpen() は、TICKET_TYPE で指定された値の型を返します。
// 06.12.2020
// 修正: MT5の取引履歴でSL/TPの実行記録が正しくないケースが考慮されるようになりました。
// 追加:MT4ORDERS_TESTER_SELECT_BY_TICKET マーケットでは、OrderTicketID() を介してのみ、SELECT_BY_TICKET がテスターで機能するように強制されます。
// 04.05.2021
// 修正: ポジションをオープンしたMT5注文が消えない場合、MT4注文のリストに追加されなくなりました。
// 修正:クローズバイ MT5 注文が MT4 注文のリストに表示されなくなった。
// 12.05.2021
// 追加します:MT4ORDERS_BYPASS_MAXTIMEマクロは、MT5で常に発生する取引環境の非同期のケースを変更します。
// 13.05.2021
// 修正:OrderOpenReason() のバグを修正しました。
// 14.05.2021
// 修正: BYPASSメカニズムがOrderSelect(INT_MAX, SELECT_BY_POS)とOrderSelect(INT_MIN, SELECT_BY_POS)に影響しなくなりました。
// 01.06.2021
// 修正:コンパイラのビルド 2449 以上との互換性。
// 修正:同期の改善。ByPass.mqhは 最新バージョンでなければならない。
// 追加:OrderLots(true) - 選択されたポジションの同期サイズ。このポジションをクローズする全ての注文を考慮する。


同期メカニズムとともに最新版を使うことをお勧めする。そうすれば、他のトレーディング・ライブラリーでは解決できないような問題はすべて感知できなくなる。

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(マイクロ秒単位
#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

このメカニズムが機能するためには、このライブラリを ダウンロードする必要がある。取引ロジックを書く際にユーザーの気を散らさずに、取引環境の正しさの複雑で効果的なチェックがすべて自動的に行われます。

TradesID
TradesID
  • www.mql5.com
Быстрая работа с POSITION_ID
 

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

ライブラリ: MT4Orders

fxsaber, 2021.06.02 10:09

私のリクエストにより、MetaQutoesはライブラリの最新アップデートを完全に英語にローカライズしました。 ライブラリの最新ビルドは現在ライブラリの最新ビルドは、ソースコードのコメントを英語に翻訳した英語ページで利用できるようになりました。


ライブラリの最新ビルドは、ソースコードのコメントを英語に翻訳した英語ページで利用できるようになりました。

// 変更点のリスト。
// 02.11.2018
// 修正: MT4 のポジションをトリガーする前にオープン価格をゼロにすることはできなくなりました。
// 修正: 特定の取引サーバーの稀な実行面を考慮しました。
// 26.11.2018
// 修正: MT4 のクローズポジションのマジックとコメント: 取引開始時の関連フィールドの優先順位が、クローズ時のそれよりも高い。取引開始の関連フィールドの優先順位は、取引終了の関連フィールドの優先順位よりも高い。
// 修正: MT4-OrdersTotal および MT4-OrdersTotal の計算中に、MT5-OrdersTotal および MT5-PositionsTotal のまれな変更が考慮されます。OrderSelect.
// 修正: ライブラリでは、MT5からまだ削除されていないポジションをオープンした注文が考慮されません。
// 17.01.2019
// 修正: 保留注文を選択する際の不運なエラーを修正しました。
// 08.02.2019
// 追加: ポジションのコメントは、OrderCloseを経由して部分決済時に保存される。
// 部分クローズ時にオープンポジションのコメントを修正する必要がある場合は、次のように指定できます。で指定できます。
// 20.02.2019
// 修正: MT5注文がない場合、ライブラリは既存のMT5トランザクションからの履歴同期を期待します。 失敗した場合、次のように通知します。を通知します。
// 13.03.2019
// 追加: OrderTicketID() を追加 - MT5 トランザクションまたは MT5 ポジションの PositionID、および保留中の MT4 注文のチケット。
// 追加: SELECT_BY_TICKET は、すべての MT5 チケット (および MT5-PositionID) に対して機能します。
// 02.11.2019
// 修正: CloseByポジションのロット、手数料、クローズ価格を修正しました。
// 12.01.2020
// 修正: 残高取引のOrderTicketID()が正しい値を返すようになりました。
// 修正: SELECT_BY_TICKET - OrderTicketID()による選択(MT5-PositionID)を修正しました。
// 修正:マクロとの互換性を高めるため、内部ライブラリのメソッド名を変更。
// 10.04.2020
// 修正: 部分的に執行されたライブの未決注文がOrdersTotal()に入らなかった。
// 09.06.2020
// 追加:クローズしたポジションのStopLoss/TakeProfit/ClosePriceRequestがより明確に定義されました。
// 10.06.2020
// 追加: ミリ秒を追加し、OrderPrint()の価格と注文の丸めを削除しました。
// 13.08.2020
// 追加: MT4ORDERS_BENCHMARK_MINTIMEマクロを使用してライブラリパーツのパフォーマンスをチェックする機能を追加しました。
// 20.08.2020
// 修正:明らかになった部分的なオーダー実行の特徴を考慮に入れる。
// 29.08.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 24.09.2020
// 追加: SELECT_BY_TICKET(同じチケット)でライブ MT4 注文を選択する際に、MT5 注文の優先順位を MT5 ポジションよりも上げる必要がある場合、MT5 注文の優先順位は MT5 ポジションよりも高くなります。チケット)を選択する際に
// これは、チケットのサイズをマイナスに変更することで可能である。TICKET).
// 追加:ライブ MT4 注文(同じチケット)を修正する際に、MT5 注文のみの選択を指定する必要がある場合、MT5 注文をリストに追加できます。
// これはチケットのサイズをマイナスに変更することで可能である: OrderModify(-Ticket, ...).
// 追加: OrderSelect(INT_MAX, SELECT_BY_POS) - 存在を確認し更新することなく、MT5のポジションに切り替える。
// OrderSelect(INT_MIN, SELECT_BY_POS) - 存在と更新を確認せずにMT5のライブ注文に切り替える。存在と更新。
// 修正:取引履歴をより高速に処理できるようにした。
// 30.09.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 08.10.2020
// 修正: MT5の新規取引検索の欠陥により、成行注文のOrderSendが長く実行される可能性がありました。
// 21.10.2020
// 追加: MT4との互換性を提供するため、OrderTicketID() を追加 - OrderTicket() を返す。
// 11.11.2020
// 修正:OrderTicketID() および OrderTicketOpen() は、TICKET_TYPE で指定された値タイプを返します。
// 06.12.2020
// 修正: MT5の取引履歴でSL/TPの実行記録が正しくないケースが考慮されるようになりました。
// 追加: MT4ORDERS_TESTER_SELECT_BY_TICKET マーケットでは、OrderTicketID() を介してのみ、SELECT_BY_TICKET がテスターで機能するようになっています。
// 04.05.2021
// 修正: ポジションをオープンしたMT5注文が消えない場合、MT4注文のリストに追加されなくなりました。
// 修正: MT5のクローズバイ注文がMT4の注文リストに表示されなくなりました。
// 12.05.2021
// 追加: MT4ORDERS_BYPASS_MAXTIMEマクロは、MT5における取引環境の非同期化について、常に出現するケースを変更します。
// 13.05.2021
// 修正: OrderOpenReason()のバグを修正しました。
// 14.05.2021
// 修正: BYPASSメカニズムがOrderSelect(INT_MAX, SELECT_BY_POS)とOrderSelect(INT_MIN, SELECT_BY_POS)に影響しなくなりました。
// 01.06.2021
// 修正: コンパイラ・ビルド2449以降との互換性。
 // ByPass.mqhは 最新バージョンでなければならない。
// 追加: OrderLots(true) - 選択されたポジションの同期されたサイズ。


同期メカニズムとともに最新版を使用することをお勧めします。 そうすれば、他のトレーディング・ライブラリでは解決できないすべての問題が解決されます。そうすれば、他のトレーディング・ライブラリーでは解決できないような問題は、すべて気づかれなくなる。

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(マイクロ秒単位
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

このメカニズムが機能するためには、 このライブラリを ダウンロードする必要があります。 取引環境が正しく動作しているかどうかの複雑で効果的なチェックはすべて自動的に行われ、取引環境が動作していないときにユーザーの注意をそらすことはありません。取引ロジックを記述する際に、ユーザーの注意をそらすことなく、取引環境の正しさに関する複雑で効果的なチェックがすべて自動的に行われます。


 

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

ライブラリ: MT4Orders

fxsaber, 2021.06.02 10:09

私のリクエストにより、MetaQutoesはライブラリの最新アップデートを完全に英語にローカライズしました。ライブラリの最新ビルドは、ソースコードのコメントが英語に翻訳され、英語のページで利用できるようになりました。


英語ページで公開されていた以前のバージョンとの違い。

// 変更点のリスト:
// 02.11.2018
// 修正: MT4 のポジションをトリガーする前にオープン価格をゼロにすることはできなくなりました。
// 修正: 特定の取引サーバーの稀な実行面を考慮しました。
// 26.11.2018
// 修正: MT4 のクローズポジションのマジックとコメント:オープニングトランザクションの関連フィールドの優先順位が、クローズトランザクションのそれよりも高い。
// 修正: MT4-OrdersTotal および MT4-OrderSelect の計算中に、MT5-OrdersTotal および MT5-PositionsTotal の稀な変更が考慮されます。
// 修正: ライブラリでは、MT5からまだ削除されていない、ポジションをオープンした注文が考慮されません。
// 17.01.2019
// 修正: 保留注文を選択する際の不運なエラーを修正しました。
// 08.02.2019
// 追加: ポジションのコメントは、OrderCloseを経由して部分決済時に保存される。
// 部分決済時にオープンポジションのコメントを修正する必要がある場合は、OrderClose で指定できます。
// 20.02.2019
// 修正: MT5注文がない場合、ライブラリは既存のMT5トランザクションからの履歴同期を期待します。失敗した場合、そのことを通知します。
// 13.03.2019
// 追加: OrderTicketID() を追加 - MT5 トランザクションまたは MT5 ポジションの PositionID、および保留中の MT4 注文のチケット。
// 追加: SELECT_BY_TICKET は、すべての MT5 チケット (および MT5-PositionID) に対して機能します。
// 02.11.2019
// 修正: CloseByポジションのロット、手数料、クローズ価格を修正しました。
// 12.01.2020
// 修正: 残高取引のOrderTicketID()が正しい値を返すようになりました。
// 修正: SELECT_BY_TICKET - OrderTicketID()による選択(MT5-PositionID)を修正しました。
// 修正:マクロとの互換性を高めるため、内部ライブラリのメソッド名を変更。
// 10.04.2020
// 修正: 部分的に執行されたライブの未決注文がOrdersTotal()に入らなかった。
// 09.06.2020
// 追加:クローズしたポジションのStopLoss/TakeProfit/ClosePriceRequestがより明確に定義されました。
// 10.06.2020
// 追加: ミリ秒を追加し、OrderPrint()の価格と注文の丸めを削除しました。
// 13.08.2020
// 追加: MT4ORDERS_BENCHMARK_MINTIMEマクロを使用してライブラリパーツのパフォーマンスをチェックする機能を追加しました。
// 20.08.2020
// 修正:明らかになった部分的なオーダー実行の特徴を考慮に入れる。
// 29.08.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 24.09.2020
// 追加: SELECT_BY_TICKET(同じチケット)でライブ MT4 注文を選択する際に、MT5 ポジションよりも MT5 注文の優先度を上げる必要がある場合、
// これは、チケットのサイズをマイナスに変更することで可能です: OrderSelect(-Ticket, SELECT_BY_TICKET).
// 追加:MT4のライブ注文(同じチケット)を変更する際に、MT5注文のみの選択を指定する必要がある場合、
// これは、チケットのサイズをマイナスに変更することで可能である: OrderModify(-Ticket, ...)。
// 追加: OrderSelect(INT_MAX, SELECT_BY_POS) - 存在を確認し更新することなく、MT5のポジションに切り替える。
// OrderSelect(INT_MIN, SELECT_BY_POS) - 存在を確認して更新することなく、MT5のライブ注文に切り替える。
// 修正:取引履歴をより高速に処理できるようにした。
// 30.09.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 08.10.2020
// 修正: MT5の新規取引検索の欠陥により、成行注文のOrderSendが長く実行される可能性がありました。
// 21.10.2020
// 追加: MT4との互換性を提供するため、OrderTicketID() を追加 - OrderTicket() を返す。
// 11.11.2020
// 修正:OrderTicketID() および OrderTicketOpen() は、TICKET_TYPE で指定された値タイプを返します。
// 06.12.2020
// 修正: MT5の取引履歴でSL/TPの実行記録が正しくないケースが考慮されるようになりました。
// 追加: MT4ORDERS_TESTER_SELECT_BY_TICKET マーケットでは、OrderTicketID() を介してのみ、SELECT_BY_TICKET がテスターで機能するようになっています。
// 04.05.2021
// 修正: ポジションをオープンしたMT5注文が消えない場合、MT4注文のリストに追加されなくなりました。
// 修正: MT5のクローズバイ注文がMT4の注文リストに表示されなくなりました。
// 12.05.2021
// 追加: MT4ORDERS_BYPASS_MAXTIMEマクロは、MT5における取引環境の非同期化について、常に出現するケースを変更します。
// 13.05.2021
// 修正: OrderOpenReason()のバグを修正しました。
// 14.05.2021
// 修正: BYPASSメカニズムがOrderSelect(INT_MAX, SELECT_BY_POS)とOrderSelect(INT_MIN, SELECT_BY_POS)に影響しなくなりました。
// 01.06.2021
// 修正:コンパイラ・ビルド2449以降との互換性。
// 修正:同期の改善。ByPass.mqhは 最新バージョンでなければならない。
// 追加: OrderLots(true) - 選択されたポジションの同期されたサイズ。


同期メカニズムとともに最新版を使うことをお勧めする。そうすれば、他のトレーディング・ライブラリーでは解決できないような問題はすべて感知できなくなる。

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(マイクロ秒単位
#include <MT4Orders.mqh> //https://www.mql5.com/en/code/16006

このメカニズムが機能するためには、このライブラリを ダウンロードする必要がある。取引ロジックを書く際にユーザーの気を散らさずに、取引環境の正しさの複雑で効果的なチェックがすべて自動的に行われます。


 

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

ライブラリ: MT4Orders

fxsaber, 2021.06.02 10:09

私のリクエストにより、MetaQutoesはライブラリの最新アップデートを完全に英語にローカライズしました。ライブラリの最新ビルドは、ソースコードのコメントが英語に翻訳され、英語のページで利用できるようになりました。


英語ページで公開されていた以前のバージョンとの違い。

// 変更点のリスト:
// 02.11.2018
// 修正: MT4 のポジションをトリガーする前にオープン価格をゼロにすることはできなくなりました。
// 修正: 特定の取引サーバーの稀な実行面を考慮しました。
// 26.11.2018
// 修正: MT4 のクローズポジションのマジックとコメント:オープニングトランザクションの関連フィールドの優先順位が、クローズトランザクションのそれよりも高い。
// 修正: MT4-OrdersTotal および MT4-OrderSelect の計算中に、MT5-OrdersTotal および MT5-PositionsTotal のまれな変更が考慮されます。
// 修正: ライブラリでは、MT5 から削除されていないポジションをオープンした注文が考慮されません。
// 17.01.2019
// 修正: 保留注文を選択する際の不運なエラーを修正しました。
// 08.02.2019
// 追加: ポジションのコメントは、OrderCloseを経由して部分決済時に保存される。
// 部分決済時にオープンポジションのコメントを変更する必要がある場合は、OrderClose で指定できます。
// 20.02.2019
// 修正: MT5注文がない場合、ライブラリは既存のMT5トランザクションからの履歴同期を期待します。失敗した場合、そのことを通知します。
// 13.03.2019
// 追加: OrderTicketID() を追加 - MT5 トランザクションまたは MT5 ポジションの PositionID、および保留中の MT4 注文のチケット。
// 追加: SELECT_BY_TICKET は、すべての MT5 チケット (および MT5-PositionID) に対して機能します。
// 02.11.2019
// 修正: CloseByポジションのロット、手数料、クローズ価格を修正しました。
// 12.01.2020
// 修正: 残高取引のOrderTicketID()が正しい値を返すようになりました。
// 修正: SELECT_BY_TICKET - OrderTicketID()による選択(MT5-PositionID)を修正しました。
// 修正:マクロとの互換性を高めるため、内部ライブラリのメソッド名を変更。
// 10.04.2020
// 修正: 部分的に執行されたライブの未決注文がOrdersTotal()に入らなかった。
// 09.06.2020
// 追加:クローズしたポジションのStopLoss/TakeProfit/ClosePriceRequestがより明確に定義されました。
// 10.06.2020
// 追加: ミリ秒を追加し、OrderPrint()の価格と注文の丸めを削除しました。
// 13.08.2020
// 追加: MT4ORDERS_BENCHMARK_MINTIMEマクロを使用してライブラリパーツのパフォーマンスをチェックする機能を追加しました。
// 20.08.2020
// 修正:明らかになった部分的なオーダー実行の特徴を考慮に入れる。
// 29.08.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 24.09.2020
// 追加: SELECT_BY_TICKET(同じチケット)でライブ MT4 注文を選択する際に、MT5 ポジションよりも MT5 注文の優先度を上げる必要がある場合、
// これは、チケットのサイズをマイナスに変更することで可能です: OrderSelect(-Ticket, SELECT_BY_TICKET).
// 追加:MT4のライブ注文(同じチケット)を変更する際に、MT5注文のみの選択を指定する必要がある場合、
// これは、チケットのサイズをマイナスに変更することで可能である: OrderModify(-Ticket, ...)。
// 追加: OrderSelect(INT_MAX, SELECT_BY_POS) - 存在を確認し更新することなく、MT5のポジションに切り替える。
// OrderSelect(INT_MIN, SELECT_BY_POS) - 存在を確認して更新することなく、MT5のライブ注文に切り替える。
// 修正:取引履歴をより高速に処理できるようにした。
// 30.09.2020
// 修正:取引履歴をより高速に処理できるようにした。
// 08.10.2020
// 修正: MT5の新規取引検索の欠陥により、成行注文のOrderSendが長く実行される可能性がありました。
// 21.10.2020
// 追加: MT4との互換性を提供するため、OrderTicketID() を追加 - OrderTicket() を返す。
// 11.11.2020
// 修正:OrderTicketID() および OrderTicketOpen() は、TICKET_TYPE で指定された値タイプを返します。
// 06.12.2020
// 修正: MT5の取引履歴でSL/TPの実行記録が正しくないケースが考慮されるようになりました。
// 追加: MT4ORDERS_TESTER_SELECT_BY_TICKET マーケットでは、OrderTicketID() を介してのみ、SELECT_BY_TICKET がテスターで機能するように強制されています。
// 04.05.2021
// 修正: ポジションをオープンしたMT5注文が消えない場合、MT4注文のリストに追加されなくなりました。
// 修正: MT5のクローズバイ注文がMT4の注文リストに表示されなくなりました。
// 12.05.2021
// 追加: MT4ORDERS_BYPASS_MAXTIMEマクロは、MT5における取引環境の非同期化について、常に出現するケースを変更します。
// 13.05.2021
// 修正: OrderOpenReason()のバグを修正しました。
// 14.05.2021
// 修正: BYPASSメカニズムがOrderSelect(INT_MAX, SELECT_BY_POS)とOrderSelect(INT_MIN, SELECT_BY_POS)に影響しなくなりました。
// 01.06.2021
// 修正:コンパイラ・ビルド2449以降との互換性。
// 修正:同期の改善。ByPass.mqh は最新バージョンでなければならない。
// 追加: OrderLots(true) - 選択されたポジションの同期されたサイズ。


同期メカニズムとともに最新版を使用することをお勧めします。そうすれば、他のトレーディング・ライブラリーでは解決できないような問題はすべて感知できなくなる。

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待機する最大時間(マイクロ秒)
#include <MT4Orders.mqh> //https://www.mql5.com/en/code/16006

このメカニズムが機能するためには、このライブラリを ダウンロードする必要があります。取引ロジックを書く際にユーザーの気を散らさずに、取引環境の正しさの複雑で効果的なチェックがすべて自動的に行われます。


 

Forum on trading, automated trading systems and testing trading strategies

Libraries: MT4Orders

fxsaber, 2021.06.02 10:09

At my request, the MetaQutoes has completely localized the latest update of the library into English. The latest build of the library is now available on the English page with comments in the source code translated into English.


Difference from the previous version that was available on the English-language page.

// List of changes:
// 02.11.2018
//   Fix: Now the MT4 position Open price cannot be zero before its triggering.
//   Fix: Some rare execution aspects of certain trading servers have been taken into account.
// 26.11.2018
//   Fix: Magic and comment of a closed MT4 position: Priority of the relevant fields of opening transactions is higher than that of closing ones.
//   Fix: Rare changes in MT5-OrdersTotal and MT5-PositionsTotal are taken into account while calculating MT4-OrdersTotal and MT4-OrderSelect.
//   Fix: Library does not take into account the orders which have opened a position, but have not been yet deleted from MT5.
// 17.01.2019
//   Fix: Fixed an unfortunate error in selecting pending orders.
// 08.02.2019
//   Add: Comment of a position is saved at partial closing via OrderClose.
//        If you need to modify the comment on an open position at partial closing, you can specify it in OrderClose.
// 20.02.2019
//   Fix: In case of no MT5 order, the library will expect the history synchronization from the existing MT5 transaction. In case of failure, it will inform about it.
// 13.03.2019
//   Add: Added OrderTicketID() - PositionID of an MT5 transaction or MT5 position, and the ticket of a pending MT4 order.
//   Add: SELECT_BY_TICKET works for all MT5 tickets (and MT5-PositionID).
// 02.11.2019
//   Fix: Corrected lot, commission, and Close price for CloseBy positions.
// 12.01.2020
//   Fix: OrderTicketID() for balance deals returns now a correct value.
//   Fix: Fixed SELECT_BY_TICKET - selection by OrderTicketID() (MT5-PositionID).
//   Fix: Changed name of the internal library method for greater compatibility with macros.
// 10.04.2020
//   Fix: Partially executed live pending order did not get into OrdersTotal().
// 09.06.2020
//   Add: StopLoss/TakeProfit/ClosePriceRequest for closed positions are now better defined.
// 10.06.2020
//   Add: Added milliseconds, removed price and order rounding in OrderPrint().
// 13.08.2020
//   Add: Added ability to check the performance of library parts via the MT4ORDERS_BENCHMARK_MINTIME macro.
// 20.08.2020
//   Fix: Taking into account the revealed features of partial order execution.
// 29.08.2020
//   Fix: Implemented faster working with the history of trades.
// 24.09.2020
//   Add: If you need to increase the priority of an MT5 order over an MT5 position when selecting a live MT4 order by SELECT_BY_TICKET (the same tickets),
//        this can be done by changing the ticket size to negative: OrderSelect(-Ticket, SELECT_BY_TICKET).
//   Add: If you need to specify the selection of only MT5 order when modifying a live MT4 order (the same tickets),
//        this can be done by changing the ticket size to negative: OrderModify(-Ticket, ...).
//   Add: OrderSelect(INT_MAX, SELECT_BY_POS) - switch to an MT5 position without checking the existence and updating.
//        OrderSelect(INT_MIN, SELECT_BY_POS) - switch to a live MT5 order without checking the existence and updating.
//   Fix: Implemented faster working with the history of trades.
// 30.09.2020
//   Fix: Implemented faster working with the history of trades.
// 08.10.2020
//   Fix: OrderSend of a market order could be executed longer due to a flaw in a fresh MT5 deal search.
// 21.10.2020
//   Add: To provide compatibility for MT4, added OrderTicketID() - returns OrderTicket().
// 11.11.2020
//   Fix: OrderTicketID() and OrderTicketOpen() return the value type specified in TICKET_TYPE.
// 06.12.2020
//   Fix: The cases of incorrect SL/TP execution records in the MT5 trading history are now taken into account.
//   Add: The MT4ORDERS_TESTER_SELECT_BY_TICKET market forces SELECT_BY_TICKET to work in the Tester only via OrderTicketID().
// 04.05.2021
//   Fix: The MT5 orders that open positions and fail to disappear are no longer added to the list of MT4 orders.
//   Fix: CloseBy MT5 orders no longer appear in the list of MT4 orders.
// 12.05.2021
//   Add: The MT4ORDERS_BYPASS_MAXTIME macro changes the constantly emerging cases of trading environment desynchronization in MT5.
// 13.05.2021
//   Fix: Fixed bug in OrderOpenReason().
// 14.05.2021
//   Fix: The BYPASS mechanism no longer affects OrderSelect(INT_MAX, SELECT_BY_POS) and OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
//   Fix: Compatibility with the compiler build 2449 and higher.
//   Fix: Improved synchronization. ByPass.mqh must be of the latest version.
//   Add: OrderLots(true) - synchronized size of the selected position, taking into account all orders which close this position.


I recommend using the latest version along with the synchronization mechanism. Then all the problems that no other trading library can solve will be imperceptible.

#define MT4ORDERS_BYPASS_MAXTIME 1000000 // Max time (in microseconds) to wait for the trading environment synchronization
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

For this mechanism to work, you need to download this library. All complex and effective checks of the correctness of the trading environment will be done automatically, without distracting the user when writing trading logic.