mql4でOnTradeTransaction()の代わりになるものは何ですか? - ページ 2

 
Ihor Herasko:

光やインターネットの有無も?通常のネットワークパケットロスはもちろんのこと。クールなメタクオーツになった!~すべてを保証してくれる))

イゴール、すべての解決策は単純というか、非常にシンプルです。停電が頻繁にある場合は、VPSをレンタル する。VPSでもこのような問題が発生する場合は、サービスプロバイダーを変更してください。ユーザー側でインターネットを喪失した場合も同様です。インターネットプロバイダを切り替えるオプションを追加することのみ可能です。DC側で問題が発生した場合...どこにどうやって送ればいいのか...。
 
Ihor Herasko:

光やインターネットの有無も?通常のネットワークパケットロスはもちろんのこと。クールなメタクオーツになった!~すべてを保証してくれる))

もしかして、あなたもパソコンを持っていないのでは?

 
Alexey Viktorov:
イゴール、すべての解決策は単純というか、非常にシンプルです。停電が頻繁にある場合は、VPSをレンタル する。VPSでもこのような問題が発生する場合は、サービスプロバイダーを変更してください。ユーザー側でインターネットを喪失した場合も同様です。インターネットプロバイダを切り替えるオプションを追加することのみ可能です。DC側で問題が発生した場合...どこにどうやって送ればいいのか...。

しかも、それを専門家と一緒に仕事をしている一般ユーザーに伝えるのか?ユーザーはそんなことを気にする必要はなく、そうでなければ、このようなソフトウェアは何の価値もない。

 
prostotrader:

もしかして、あなたもパソコンを持っていないのでは?

そうです、インターネット上では私はテレパシーなのです ))

 
Ihor Herasko:

そうです、インターネット上では私はテレパシーなのです ))

なるほど、でもそれなら誤解を招くような曖昧な表現はやめてほしい。

このフォーラムのメンバーは混乱しています。

 
prostotrader:

なるほど、でもそれなら誤解を招くような曖昧な表現はやめてほしい。

このフォーラムのメンバーは誤解を招く。

この記述は誤りです

取引時にVPSのクリフハンガーがないことを理由にバンクすることは、さらなる金融リスクとなります。

 
prostotrader:

なるほど、でもそれなら誤解を招くような曖昧な表現はやめてほしい。

このフォーラムのメンバーは混乱しています。

誤解がないように。ソフトウェアを開発する場合、まず求められるのは正しく、確実に動作することです。Expert Advisor が OnTrade とOnTradeTransaction のみを 使用してポジションと注文をサポートしている場合、それらからの情報の受信にわずかな障害が発生すると全体像が歪んでしまいます(サーバからのパケットが失われたかどうかは確実には分かりません)。この情報を収集する唯一の方法は、ポジション/オーダーのリストをループすることで、より/より確実です。たとえそうなっても、パケットロスは永久に続くとは限りません。最終的には(2〜3回問い合わせれば)データが取り出され、全体像が現実と完全に一致するようになる。

とはいえ、OnTrade()やOnTradeTransaction()を使うことが無意味だと言っているのではありません。データを取得するための代替チャネルとして利用することができます。このルートで情報が入ってきたのであれば、あまりリストを確認する必要はないでしょう。

 

私はポータブルなコードを書いています。MT4/MT5 - fxsaber氏からMT4Orders.mqhに感謝します。そしてテスター/ファイト-条件付きコンパイルのおかげです。

Strategy Testerでは、OnTradeTransactionと 環境状態を変数に格納することで、最適化を大幅にスピードアップしています。リアル - サーバーのポーリング、ここでは速度は重要ではありません。

 
Edgar Akhmadeev:

テスターではOnTradeTransactionと 環境状態を変数に格納することで、最適化のスピード アップを図っています。

何か再現性のある例(取引履歴の照会なし)を提示していただけるとありがたいです。

 

もし、迅速な解決策が必要なら、すべてのチケットをCArrayIntに 配置し、オープンオーダーのチケットをCArrayIntと比較します。Search()メソッドがあり、チケットがなければ、CArrayIntの比較を停止します。未決済注文のカウンターで、CArrayInt をリセットし、すべてのチケットを CArrayInt に再度書き込み、グローバルに記述されたフラグ MyOnTradeTransaction - 注文リストが変更されたというサイン - をセットすると、コードはかなりコンパクトになります。