ライブラリ: MT4Orders - ページ 23 1...161718192021222324252627282930...95 新しいコメント fxsaber 2018.06.10 10:26 #221 Sergey Likho:同時に、ログにはすべてが正常であるというメッセージも表示される。この トピックについては、この ページにいくつかのリンクがあります。簡単に言うと、ログにResult.dealがnullであることがわかります。ログ(Request.positionがNULLではない)を見ると、OrderCloseが行われ、正常に完了したはず(Result.code)ですが、同時に、それに関する記録(DEAL_ENTRY_OUT deal)がターミナルに一瞬表示されませんでした(ライブラリが待機していました)。これは、2つのシナリオを示しています: MT5 取引注文は正常に送信されたが、MT5 取引は通過しなかった。取引は成立したが、取引履歴に表示されなかった。どちらのシナリオも、MT5にとっては必ずしも良いことではありません(詳細な議論については、上記のリンクを参照してください)。残念ながら、ライブラリは明確に機能した。このようなニュアンスはすべて一度熟慮して分析され、それに応じてライブラリは合理的な反応を開発しました。 fxsaber 2018.06.18 12:00 #222 Sergey Likho:テスト用に fhtm デモブローカーを使用すると、OrderSend 関数は取引を開始しますが、エラーを返します。再試行したところ、私のミスであることがわかりました。この取引サーバーでのMT5の動作は興味深い。 修正しました。必要であれば、PMに送ります。それで、モデレーターを困らせないために、開発者が新しいビルドでDEAL_SL/TPを解決する ときに、KBに投稿します。 Sergey Likho 2018.06.19 19:04 #223 fxsaber:リプレイしたところ、私のせいだとわかりました。この取引サーバーでのMT5の興味深い動作が判明しました。修正しました。必要であれば、PMに送ります。それで、モデレーターを煩わせないように、開発者が新しいビルドでDEAL_SL/TPを解決する ときに、KBに投稿します。はい、PMに送ってください。 fxsaber 2018.06.20 07:48 #224 Sergey Likho:はい、PMを送ってください送信しました。 まれですが、このようなアラートが発生することがあります。 Alert: OrderSend(2210958493) - BUG! Alert: Please send the logs to the author - https://www.mql5.com/en/users/fxsaber ::AccountInfoString(ACCOUNT_SERVER) = ForexTimeFXTM-Demo01 (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true ::TerminalInfoInteger(TERMINAL_PING_LAST) = 66676 ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 13.63636363636363 ::TerminalInfoInteger(TERMINAL_BUILD) = 1861 (bool)::TerminalInfoInteger(TERMINAL_X64) = true MT4ORDERS::IsHedging = true Res = true MT4ORDERS::OrderSendBug = 1 Request.action = TRADE_ACTION_DEAL (1) Request.magic = 0 Request.order = 0 Request.symbol = EURUSD Request.volume = 1.0 Request.price = 1.15758 Request.stoplimit = 0.0 Request.sl = 0.0 Request.tp = 0.0 Request.deviation = 0 Request.type = ORDER_TYPE_SELL (1) Request.type_filling = ORDER_FILLING_FOK (0) Request.type_time = ORDER_TIME_GTC (0) Request.expiration = 1970.01.01 00:00:00 Request.comment = Request.position = 0 Request.position_by = 0 Result.retcode = 10009 Result.deal = 2208425527 Result.order = 2210958493 Result.volume = 1.0 Result.price = 0.0 Result.bid = 0.0 Result.ask = 0.0 Result.comment = Request executed 180.441 + 9.521 (1) ms. Result.request_id = 153 Result.retcode_external = 0 これは、MT5-OrderSendがエラーで動作していることを示す、純粋に情報提供のためのアラートです(取引には影響しません)。このエラーについては、こちらで 詳しく説明しています。しかし、開発者はこれが MT5 の誤った動作だとはまだ考えていません。 ZYMT5の微妙な点が明らかになりました。ライブラリ経由の取引ではファントムオーダーは発生しません。 fxsaber 2018.07.06 01:06 #225 Andrey Khatimlianskii:長い歴史に裏打ちされた仕事は、今や飛ぶ鳥を落とす勢いだ!予期せぬ結果もあった。スクリプトは最後の "ポジション "のオープン/クローズの時間を計算する。 取引、自動取引システム、取引戦略のテストに関するフォーラム OrderCloseTimeエキスパートアドバイザーMQL5 fxsaber, 2018.07.06 00:49 #include <MT4Orders.mqh> //https://www.mql5.com/en/code/16006 void LastTimeMQL4( datetime &OpenTime, datetime &CloseTime ) { if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { OpenTime = OrderOpenTime(); CloseTime = OrderCloseTime(); } } void LastTimeMQL5( datetime &OpenTime, datetime &CloseTime ) { if (HistorySelect(0, INT_MAX)) { for (int i = HistoryDealsTotal() - 1; i >= 0; i--) { const ulong Ticket = HistoryDealGetTicket(i); if (HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT) { CloseTime = (datetime)HistoryDealGetInteger(Ticket, DEAL_TIME); if (HistorySelectByPosition(HistoryDealGetInteger(Ticket, DEAL_POSITION_ID))) OpenTime = (datetime)HistoryDealGetInteger(HistoryDealGetTicket(0), DEAL_TIME); break; } } } } typedef void (*GetLastTime)( datetime&, datetime& ); void Bench( GetLastTime LastTime, const int Amount = 10000 ) { datetime OpenTime, CloseTime; datetime Tmp = 0; for (int i = 0; i < Amount; i++) { LastTime(OpenTime, CloseTime); Tmp += CloseTime - OpenTime; } Print(Tmp); } #define BENCH(A) \ { \ const ulong StartTime = GetMicrosecondCount(); \ A; \ Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \ } #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { if (HistorySelect(0, INT_MAX)) PRINT(HistoryDealsTotal()); BENCH(Bench(LastTimeMQL4)) BENCH(Bench(LastTimeMQL5)) } 結果 HistoryDealsTotal() = 343 1970.01.01 00:00:00 Time[Bench(LastTimeMQL4)] = 88705 1970.01.01 00:00:00 Time[Bench(LastTimeMQL5)] = 749410 なぜライブラリのパフォーマンスが純粋なMQL5よりはるかに優れているのかは分析していません。HistorySelectがリアルタイムで遅くなると推測しています。テスターでは確認していません。 ZЫはい、HistorySelectは遅くなります。 fxsaber 2018.07.10 11:52 #226 取引、自動取引システム、取引戦略のテストに関するフォーラム ライブラリ: MT4Orders fxsaber, 2017.09.03 18:52 // 変更リスト: // 03.09.2017: // 追加: OrderTicketOpen()を追加 - ポジション開始取引のMT5チケット // OrderOpenReason() - MT5が取引を開始する理由 (ポジションを開く理由) //OrderCloseReason() - причина проведения MT5-сделки закрытия (причина закрытия позиции) SLによってクローズされたすべてのポジションのプリントアウト 取引、自動売買システム、取引戦略のテストに関するフォーラム ポジションがストップロスに入ったときの終値を知るには? fxsaber, 2018.07.10 11:46 AM #include <MT4Orders.mqh> //https://www.mql5.com/en/code/16006 void OnStart() { const int Total = OrdersHistoryTotal(); for (int i = 0; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL)) OrderPrint(); } Vitaly Muzichenko 2018.07.19 09:33 #227 fxsaber:ちょっと予想外の結果。スクリプトは最後の "ポジション "の開閉時間を計算する。なぜライブラリーのパフォーマンスが純粋なMQL5よりはるかに優れているのかは分析していない。HistorySelectがリアルタイムで遅くなると推測しています。テスターでは確認していません。ZЫはい、HistorySelectは遅くなります。これはライブラリの最新バージョンですか? fxsaber 2018.07.19 21:29 #228 Vitaly Muzichenko:これはライブラリーの最新バージョンですか?はい。 fxsaber 2018.07.24 09:46 #229 取引、自動取引システム、取引戦略のテストに関するフォーラム ライブラリ: MT4Orders fxsaber, 2017.02.16 15:16 このスクリプトでMT5での約定問題を見つけることができました。ターミナルとトレーディングサーバーの接続を確認し、問題がある場合はサービスデスクに報告することをお勧めします。アプリケーションのスクリプトを更新しました。例えば、以下のような問題を素早く見つけることができます。 2018.07.24 10:24:19.177 Trades '35247942': market buy 0.01 USDHKD 2018.07.24 10:24:19.246 Trades '35247942': failed market buy 0.01 USDHKD [No prices] 2018.07.24 10:24:19.246 Trades '35247942': buy limit 0.01 USDHKD at 7.83618 2018.07.24 10:24:19.315 Trades '35247942': failed buy limit 0.01 USDHKD at 7.83618 [No prices] 2018.07.24 10:24:19.316 Trades '35247942': buy stop 0.01 USDHKD at 7.85618 2018.07.24 10:24:19.384 Trades '35247942': failed buy stop 0.01 USDHKD at 7.85618 [No prices] ファイル: OrderSend-Test2.mq5 15 kb fxsaber 2018.08.01 13:14 #230 取引、自動取引システム、取引戦略のテストに関するフォーラム ライブラリ: MT4Orders Andrey Khatimlianskii, 2018.06.06 01:53 pm. // 30.05.2018 // 追加:取引履歴を使った作業を加速させ、パフォーマンスと実現性の黄金平均を選択した。 // メモリ消費 - VPSでは重要。標準的なGenericライブラリを使用。 // もしジェネリック・ライブラリーを使いたくないのであれば、ヒストリーを扱う古いモードが利用できる。 // これを行うには、MT4Orders-libraryの前に以下の行を記述する必要があります。 // // #define MT4ORDERS_FASTHISTORY_OFF // 高速取引履歴の実装をオフにする - Genericライブラリを使用しない。 長い履歴での作業は、今はただ飛ぶだけです! 一般的な賞金を数字で確認する#define MT4ORDERS_FASTHISTORY_OFF // 取引履歴の高速実装をオフにする - Genericライブラリを使用しない。 #include <MT4Orders.mqh> double HistoryToDouble( void ) { double Res = 0; for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) Res += OrderCloseTimeMsc() - OrderOpenTimeMsc() + OrderProfit() + OrderTicket() - OrderTicketOpen(); return(Res); } #define BENCH(A) \ { \ const ulong StartTime = GetMicrosecondCount(); \ A; \ Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \ } #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { if (HistorySelect(0, INT_MAX)) { PRINT(HistoryDealsTotal()); PRINT(HistoryOrdersTotal()); } for (int i = 0; i < 3; i++) { PRINT(i); BENCH(Print(HistoryToDouble())) } }ジェネリックなしの結果HistoryDealsTotal() = 10063 HistoryOrdersTotal() = 20296 i = 0 1195028482.07 Time[Print(HistoryToDouble())] = 829525 i = 1 1195028482.07 Time[Print(HistoryToDouble())] = 885207 i = 2 1195028482.07 Time[Print(HistoryToDouble())] = 918911ジェネリックありの結果 HistoryDealsTotal() = 10063 HistoryOrdersTotal() = 20296 i = 0 1195028482.07 Time[Print(HistoryToDouble())] = 52603 i = 1 1195028482.07 Time[Print(HistoryToDouble())] = 39051 i = 2 1195028482.07 Time[Print(HistoryToDouble())] = 34409 10K 取引と 20K 注文の履歴では、Generic バリアントは ~30 倍高速です。取引履歴が大きいほど、加速は顕著になる。 1...161718192021222324252627282930...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
同時に、ログにはすべてが正常であるというメッセージも表示される。
この トピックについては、この ページにいくつかのリンクがあります。簡単に言うと、ログにResult.dealがnullであることがわかります。ログ(Request.positionがNULLではない)を見ると、OrderCloseが行われ、正常に完了したはず(Result.code)ですが、同時に、それに関する記録(DEAL_ENTRY_OUT deal)がターミナルに一瞬表示されませんでした(ライブラリが待機していました)。これは、2つのシナリオを示しています:
どちらのシナリオも、MT5にとっては必ずしも良いことではありません(詳細な議論については、上記のリンクを参照してください)。残念ながら、ライブラリは明確に機能した。このようなニュアンスはすべて一度熟慮して分析され、それに応じてライブラリは合理的な反応を開発しました。
テスト用に fhtm デモブローカーを使用すると、OrderSend 関数は取引を開始しますが、エラーを返します。
再試行したところ、私のミスであることがわかりました。この取引サーバーでのMT5の動作は興味深い。
修正しました。必要であれば、PMに送ります。それで、モデレーターを困らせないために、開発者が新しいビルドでDEAL_SL/TPを解決する ときに、KBに投稿します。
リプレイしたところ、私のせいだとわかりました。この取引サーバーでのMT5の興味深い動作が判明しました。
修正しました。必要であれば、PMに送ります。それで、モデレーターを煩わせないように、開発者が新しいビルドでDEAL_SL/TPを解決する ときに、KBに投稿します。
はい、PMに送ってください。
はい、PMを送ってください
送信しました。
まれですが、このようなアラートが発生することがあります。
これは、MT5-OrderSendがエラーで動作していることを示す、純粋に情報提供のためのアラートです(取引には影響しません)。このエラーについては、こちらで 詳しく説明しています。しかし、開発者はこれが MT5 の誤った動作だとはまだ考えていません。
ZYMT5の微妙な点が明らかになりました。ライブラリ経由の取引ではファントムオーダーは発生しません。
長い歴史に裏打ちされた仕事は、今や飛ぶ鳥を落とす勢いだ!
予期せぬ結果もあった。スクリプトは最後の "ポジション "のオープン/クローズの時間を計算する。
取引、自動取引システム、取引戦略のテストに関するフォーラム
OrderCloseTimeエキスパートアドバイザーMQL5
fxsaber, 2018.07.06 00:49
結果
なぜライブラリのパフォーマンスが純粋なMQL5よりはるかに優れているのかは分析していません。HistorySelectがリアルタイムで遅くなると推測しています。テスターでは確認していません。
ZЫはい、HistorySelectは遅くなります。
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ: MT4Orders
fxsaber, 2017.09.03 18:52
SLによってクローズされたすべてのポジションのプリントアウト
取引、自動売買システム、取引戦略のテストに関するフォーラム
ポジションがストップロスに入ったときの終値を知るには?
fxsaber, 2018.07.10 11:46 AM
ちょっと予想外の結果。スクリプトは最後の "ポジション "の開閉時間を計算する。
なぜライブラリーのパフォーマンスが純粋なMQL5よりはるかに優れているのかは分析していない。HistorySelectがリアルタイムで遅くなると推測しています。テスターでは確認していません。
ZЫはい、HistorySelectは遅くなります。
これはライブラリの最新バージョンですか?
これはライブラリーの最新バージョンですか?
はい。
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ: MT4Orders
fxsaber, 2017.02.16 15:16
このスクリプトでMT5での約定問題を見つけることができました。ターミナルとトレーディングサーバーの接続を確認し、問題がある場合はサービスデスクに報告することをお勧めします。
アプリケーションのスクリプトを更新しました。例えば、以下のような問題を素早く見つけることができます。
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ: MT4Orders
Andrey Khatimlianskii, 2018.06.06 01:53 pm.
長い履歴での作業は、今はただ飛ぶだけです!
ジェネリックなしの結果
ジェネリックありの結果
10K 取引と 20K 注文の履歴では、Generic バリアントは ~30 倍高速です。取引履歴が大きいほど、加速は顕著になる。