OnTradeTransaction - ページ 7

 
fxsaber:

同意見です。しかし、残念ながらMT5では、MT4と異なり、取引環境が現実と一致しない場合があります。例えば、保留中の注文が数ミリ秒間実行されたとき、それがどこにもないことがあります。そして、ここではOnTradeTransactionでさえも 役に立ちません。

多分、OnTradeは、私が理解しているように、すでに端末自体に取引に基づいて生成されています。

それとも、OnTrade ハンドラで保留中の注文がトリガーされたときに、新しいオープンポジションが検出されないということでしょうか?

 
Aleksey Mavrin:

多分、OnTradeは、私が理解しているように、取引に基づいて端末自体に生成されます。

それとも、保留中の注文がトリガーされたときに、新しいオープンポジションがOnTradeハンドラで検出されないことがあるということでしょうか?

任意のOn-functionにおいて。その意味で、MT5には穴がある。パッチを当てることはまずない。

 
fxsaber:

任意のOn機能において。そういう意味で、MT5には穴がある。パッチを当てることはまずない。

もしそうなら、残念なことです。実質的にOnTradeのセンスが失われているのです。確認する必要があります。理想的には、注文がトリガーされたときに、OnTradeがおよそ何回呼ばれる必要があります。

を停止する。

- 成行注文が作成され、送信される

- 保留中のオーダーは履歴に移動しました。

- 注文が実行され、取引が記録されました。

- 成行注文は履歴に移動しました。

- ポストクリエイト

はLimit注文の場合。

- 指値注文有効化書換取引

- 保留中のオーダーは履歴に移動しました

- 役職に就いた

後者を想定すると、すでにポジションがあるはずで、これまでのポジションはないはずと論理的に考えて、えっ、そうなの?

OnTradeで取引、ポジション、注文など、すべての取引状態をチェックする関数を呼び出した。今のところ、すべてうまくいっているようですが、あまり複雑な取引はして いません。

 
 
fxsaber:

なぜフォーラムに来たかというと、未解決の問題がたくさんあるからです))

ありがとうございます、調べてみます。今のところハイライトの方は、問題ではなく、機能として読んでいます。データベースにおいて、また一般的に、トランザクションの概念とは、ALL

クエリを実行し、データベースの正しさを維持するために必要な処理が行われ、トランザクションがデータベースで動作できるようになった後、エラーが発生することはありません。

何かアクションがあれば(そして、任意のテーブルに行を書き込むために、複数回実行し、前のアクションが正常に実行されたことを確認する必要がある場合があります)。

変更はロールバックされ、トランザクションは拒否されます。私が言いたいのは、おそらくMTにDBMSのレベルを期待してはいけないということです :)

この場合、すべての中間処理を監視し、チェックする必要がありますが、ここでも柔軟性を高めることができます。

しかし、私にはすべてがいい感じに見えます。まず、サーバーが注文が 終わったと言い、ターミナルがそれをアーカイブに削除し、次に(後で)サーバーがポジションを開いたと言い、何らかのエラーで開かないかもしれない、それならゼロゼロになるはずだ、と言います。

調べてみて、その結果を詳しく報告します。

 
Aleksey Mavrin:

サーバーが最初に注文が執行さ れたことを報告し、ターミナルがそれをアーカイブに削除し、そして(後で)サーバーがポジションを開いたことを報告します。

その注文は履歴にもなく、現在のものにもない。そして、ポジションがない。つまり、何もないのです。

 
Aleksey Mavrin:

しかし、すべてが私には理にかなっています - サーバーが最初に注文が実行された ことを報告し、ターミナルがアーカイブにそれを削除し、次に(後で)サーバーがポジションを開いたことを報告しますが、それは何らかのエラーによって開かれないかもしれません、そしてそれはゼロゼロになるはずです。

私はこのフォーラムや管理者Renatの投稿を読んだどこの場所で言うことはできません(おそらくQuickフォーラム)、それは彼が書いたようだ唯一のチェックは、サーバー上で注文が必要証拠金を提供することです、その後注文は取引所にコネクタを介して "飛ぶ"、その後注文執行の不確実性は、原則として可能です、サーバーは、注文が実行されてどの価格で知っていないこと

 
fxsaberの例に加えて、実際には、注文とオープンポジションの 両方にチケットがあるケースもあります。この状況も数ミリ秒続きます(最新のビルドでは確認されていませんが)。
 
Igor Zakharov:
fxsaberの例とは別に、実際には、注文とオープンポジションの 両方にチケットが存在する場合があります。

この状況は、MT4のEAについては、MT5でもすべてがMT4と同じになるように処理されます。しかし、ファントムオーダーでは......書き留める必要があるのです。

 

しかし、あるケースでは、セキュリティシステムを作るように言われました。その条件は、ポジションが常にロックされていること(リアルポジションまたは保留中の注文)、つまり、買いロットの数が売りロットの数と同じであることでした。フィバーでのオーダー/ポジション/トレードカウントのニュアンスを知るきっかけになった案件です。

その違いは、4はブローカーから答えを受け取ると、まず未決済注文と履歴の「テーブル」を同期させ、ブローカーの答えをユーザーに知らせます。 5はこの答えをすぐに私たちに伝え、同時に「テーブル」を修正します(そしてすべてのmqlプログラムはこれらの「テーブル」からデータを読み込みます)。ミリ秒タイマーでキャッチする瞬間です。でも、それならテスターでキャッチすればいいのでは?

一般的には我慢しているのですが...。