ライブラリ: MT4Orders - ページ 77 1...707172737475767778798081828384...95 新しいコメント fxsaber 2022.07.20 08:24 #761 Aleksey Vyazmikin GetLastErrorについて勉強した 結果、補足するのは合理的ではないという結論に達しました。 // 変更リスト:// 08.02.2017:// 追加: MT4ORDERS::LastTradeRequest およびMT4ORDERS::LastTradeResult 変数 содержат соответствующие данные MT5-OrderSend. これでMT5-OrderSendの全データを取得できるようになりました。 Print(MT4ORDERS::LastTradeResult.retcode); // オペレーションのリターンコード Print(MT4ORDERS::LastTradeResult.retcode_external); // 外部取引システムのリターンコード MT5のコード自体はこちら。MT4のコードと 比較してください。 MT5 では、GetLastError() は取引エラーを返さないことに注意してください。したがって、MT4 のようにしたい場合は、SetUserError を 使用して対応する独自のエラーを生成する必要があります。しかし、そこでもERR_USER_ERROR_FIRST は MT4 バージョンを返しません。 fxsaber 2022.07.20 09:00 #762 取引、自動取引システム、取引戦略のテストに関するフォーラム ライブラリ: MT4Orders fxsaber, 2022.07.20 00:39 // 変更リスト: // 20.07.2022 // 追加:OrderLotsOpen() を追加 - 決済/削除前にポジション/注文の全量を表示。ByPass-modeでのみ正しく動作します。 例 #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 取引環境の同期を待つ最大時間(単位:µs #include <MT4Orders.mqh> #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define PRINT(A) Print(#A + " = " + (string)(A) + "\n") void OnStart() { const ulong Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); // ロット分のポジションを開設。 for (int i = 1; i <= 4; i++) if (OrderSelect(Ticket, SELECT_BY_TICKET) && !OrderCloseTime()) { OrderClose(OrderTicket(), 0.1 * i, OrderClosePrice(), 0); // 0.1、0.2、0.3、...で閉じる。で閉じる。 if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { OrderPrint(); PRINT(OrderLotsOpen()); // 対応するクローズ前のポジション量。取引履歴から取得。 } } } 結果 #50167020751 2022.07.20 09:58:58.401 buy 0.10 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.457 1.02468 0.00 0.00 -0.29 0 OrderLotsOpen() = 1.0 #50167020753 2022.07.20 09:58:58.401 buy 0.20 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.512 1.02468 0.00 0.00 -0.59 0 OrderLotsOpen() = 0.9 #50167020754 2022.07.20 09:58:58.401 buy 0.30 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.567 1.02468 0.00 0.00 -0.88 0 OrderLotsOpen() = 0.7 #50167020755 2022.07.20 09:58:58.401 buy 0.40 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.622 1.02468 0.00 0.00 -1.17 0 OrderLotsOpen() = 0.4 fxsaber 2022.07.20 09:27 #763 MT5と比較したライブラリによるクローズドポジションの 表示の特殊性。 取引状況。 BuyLimitを1ロット建てた。 12:00に0.4ロットのBuyLimitが一部約定。 0.4ロットのポジションは13:00に決済されました。 14:00に0.6ロットのBuyLimitの残りが約定。 0.6ロットのポジションは15:00に決済されました。 MT5では、12:00にオープンし、15:00にクローズしたポジションが1つあったことがわかります。このポジションの始値/終値は非常に奇妙です。 MT4Ordersでは、12:00にオープンして13:00にクローズしたポジションと、14:00-15:00にオープンしたポジションの2つが表示されます。始値/終値は適切なものになります。 Aleksey Vyazmikin 2022.07.20 14:00 #764 fxsaber #:MT5-Marketの一部はこのライブラリを使って書かれている。主な理由は使いやすさである。 たしかにそれは成果である。しかし、市場受け入れ時のエラー・チェックは、すべての状況を再現するわけではありません。 fxsaber#: エラーについて。MT5のコード自体はここに あります。MT4のコードと 比較してください。MT5では、GetLastError()は取引エラーを返さないことに注意してください。したがって、MT4のようにしたい場合は、SetUserErrorを介して 対応する独自のエラーを生成する必要があります。しかし、そこでもERR_USER_ERROR_FIRST は MT4 バージョンを返しません。 情報ありがとうございます。 私の理解は正しいでしょうか? int er=GetLastError(); を int er=MT4ORDERS::LastTradeResult.retcode_external; に置き換えるだけで、すでに新しいエラーコードを処理しているという理解でよろしいでしょうか? ところで、私はMT5のエラーの類似を見つけられませんでした:135、145、146です。 fxsaber 2022.07.20 14:21 #765 Aleksey Vyazmikin #:そう、それは成果だ。しかし、マーキーの入場エラーチェックは、すべての状況を再現するわけではない。 残念ながら、私はマーケットについて理論的な考えしか持っていない。チェックをパスする練習はしていません。 新しいエラーコードを交換し、すでに処理すれば十分だという理解で合っていますか? 正しい。retcodeだけです。ResetLastErrorのアナログは同じスキームです - ゼロの割り当て。 ところで、私はMT5用のエラーのアナログを見つけられませんでした:135、145、146です。 エラーの種類は、戦闘エキスパート・アドバイザーで使用していないため、まったくわかりません。おそらく、MT4で各エラーを再現してみて、その性質を明確に把握し、MT5の同様のエラーと比較すべきです。もしかしたら、すでにどこかに対応表があるかもしれません。すべてのコードに別のプラットフォームでの別名があるわけではありません。 Aleksey Vyazmikin 2022.07.20 14:37 #766 fxsaber #:その通りだ。retcodeだけだ。同じスキームでResetLastErrorのアナログ - ゼロの割り当て。 では、エラー・リセットはどうにかしてあなたのクラスに統合できないでしょうか?4つ目のクラスはどうにかしてそれを必要としなかったからだ。 それとも、最後のエラーに関する情報を呼び出してすぐにリセットするだけでいいのでしょうか。 fxsaber#: 私はエキスパート・アドバイザーを使っていないので、エラーの種類はわかりません。おそらく、MT4で各エラーを再現してみて、その性質を明確に把握し、MT5での類似のエラーと比較すべきです。もしかしたら、すでにどこかに対応表があるかもしれません。すべてのコードが別のプラットフォームで同じ名前を持つという事実はありません。 私はそのような表を探していましたが、見つかりませんでした。エラーはコードにあるとは限りません。ブローカー・センター側の問題もあります。 注文の処理に何らかの問題がある場合、GetLastError(); はコード4756を返すと理解しました。 fxsaber 2022.07.20 16:10 #767 Aleksey Vyazmikin #:では、エラーリセットをクラスに組み込むことはできるのでしょうか?つまり、4人はそれを必要としていないように見えた。それとも、最後のエラーに関する情報を呼び出し、それを一度にリセットするだけでいいのでしょうか? リセットする必要はないと思います。私は、MT4が動作すると仮定している方法との互換性を追加するために言いました。 Aleksey Vyazmikin 2022.07.20 17:16 #768 fxsaber #:リセットの必要はないと思います。MT4が動作すると仮定した方法との互換性を追加するために言いました。 私はまだ明確にする必要があります、これらのエラーは呼び出されたコードの下にありますか? Print(MT4ORDERS::LastTradeResult.retcode); // オペレーションのリターンコード 似たようなことなので - 何が必要なのか私は理解していない - 下の同じコードはMqlTradeResult 構造体からエラーを返しますか? Print(MT4ORDERS::LastTradeResult.retcode_external); // 外部取引システムのリターンコード fxsaber 2022.07.20 22:25 #769 Aleksey Vyazmikin #:これらのエラーはコードと呼ばれるものですか?似たようなことなので - 何が必要なのか私は理解していない - 以下の同じコードは、MqlTradeResult 構造体からエラーを返す? retcode - MT5エラー。retcode_external - オプションでサードパーティ製のブリッジの開発者によって記入することができるフィールド。 Aleksey Vyazmikin 2022.07.20 23:43 #770 fxsaber #:retcode - MT5のエラー。retcode_external - サードパーティ製ブリッジの開発者が任意で入力できるフィールド。 わかった。今のところ、標準のもので十分だと思う。 1...707172737475767778798081828384...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
// 08.02.2017:
// 追加: MT4ORDERS::LastTradeRequest およびMT4ORDERS::LastTradeResult 変数 содержат соответствующие данные MT5-OrderSend.
これでMT5-OrderSendの全データを取得できるようになりました。
MT5のコード自体はこちら。MT4のコードと 比較してください。
MT5 では、GetLastError() は取引エラーを返さないことに注意してください。したがって、MT4 のようにしたい場合は、SetUserError を 使用して対応する独自のエラーを生成する必要があります。しかし、そこでもERR_USER_ERROR_FIRST は MT4 バージョンを返しません。
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ: MT4Orders
fxsaber, 2022.07.20 00:39
例
結果
MT5と比較したライブラリによるクローズドポジションの 表示の特殊性。
取引状況。
MT5では、12:00にオープンし、15:00にクローズしたポジションが1つあったことがわかります。このポジションの始値/終値は非常に奇妙です。
MT4Ordersでは、12:00にオープンして13:00にクローズしたポジションと、14:00-15:00にオープンしたポジションの2つが表示されます。始値/終値は適切なものになります。
MT5-Marketの一部はこのライブラリを使って書かれている。主な理由は使いやすさである。
たしかにそれは成果である。しかし、市場受け入れ時のエラー・チェックは、すべての状況を再現するわけではありません。
エラーについて。
MT5のコード自体はここに あります。MT4のコードと 比較してください。
MT5では、GetLastError()は取引エラーを返さないことに注意してください。したがって、MT4のようにしたい場合は、SetUserErrorを介して 対応する独自のエラーを生成する必要があります。しかし、そこでもERR_USER_ERROR_FIRST は MT4 バージョンを返しません。
情報ありがとうございます。
私の理解は正しいでしょうか?
を
に置き換えるだけで、すでに新しいエラーコードを処理しているという理解でよろしいでしょうか?
ところで、私はMT5のエラーの類似を見つけられませんでした:135、145、146です。
そう、それは成果だ。しかし、マーキーの入場エラーチェックは、すべての状況を再現するわけではない。
残念ながら、私はマーケットについて理論的な考えしか持っていない。チェックをパスする練習はしていません。
新しいエラーコードを交換し、すでに処理すれば十分だという理解で合っていますか?
正しい。retcodeだけです。ResetLastErrorのアナログは同じスキームです - ゼロの割り当て。
ところで、私はMT5用のエラーのアナログを見つけられませんでした:135、145、146です。
エラーの種類は、戦闘エキスパート・アドバイザーで使用していないため、まったくわかりません。おそらく、MT4で各エラーを再現してみて、その性質を明確に把握し、MT5の同様のエラーと比較すべきです。もしかしたら、すでにどこかに対応表があるかもしれません。すべてのコードに別のプラットフォームでの別名があるわけではありません。
その通りだ。retcodeだけだ。同じスキームでResetLastErrorのアナログ - ゼロの割り当て。
では、エラー・リセットはどうにかしてあなたのクラスに統合できないでしょうか?4つ目のクラスはどうにかしてそれを必要としなかったからだ。
それとも、最後のエラーに関する情報を呼び出してすぐにリセットするだけでいいのでしょうか。
私はエキスパート・アドバイザーを使っていないので、エラーの種類はわかりません。おそらく、MT4で各エラーを再現してみて、その性質を明確に把握し、MT5での類似のエラーと比較すべきです。もしかしたら、すでにどこかに対応表があるかもしれません。すべてのコードが別のプラットフォームで同じ名前を持つという事実はありません。
私はそのような表を探していましたが、見つかりませんでした。エラーはコードにあるとは限りません。ブローカー・センター側の問題もあります。
注文の処理に何らかの問題がある場合、GetLastError(); はコード4756を返すと理解しました。
では、エラーリセットをクラスに組み込むことはできるのでしょうか?つまり、4人はそれを必要としていないように見えた。
それとも、最後のエラーに関する情報を呼び出し、それを一度にリセットするだけでいいのでしょうか?
リセットする必要はないと思います。私は、MT4が動作すると仮定している方法との互換性を追加するために言いました。
リセットの必要はないと思います。MT4が動作すると仮定した方法との互換性を追加するために言いました。
私はまだ明確にする必要があります、これらのエラーは呼び出されたコードの下にありますか?
似たようなことなので - 何が必要なのか私は理解していない - 下の同じコードはMqlTradeResult 構造体からエラーを返しますか?
これらのエラーはコードと呼ばれるものですか?
似たようなことなので - 何が必要なのか私は理解していない - 以下の同じコードは、MqlTradeResult 構造体からエラーを返す?
retcode - MT5エラー。retcode_external - オプションでサードパーティ製のブリッジの開発者によって記入することができるフィールド。
retcode - MT5のエラー。retcode_external - サードパーティ製ブリッジの開発者が任意で入力できるフィールド。
わかった。今のところ、標準のもので十分だと思う。