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

 

1ティックごとにすべてのイベントをキャッチし、過去に記録されたデータと比較します。

すべてアレイで。

実は、ダニが多いときは、ブレーキがかかることもあるんです。そのため、チェック間のDelayを1秒にしたのです。

多くのポジションのモニターに関わることです。

また、特定のロボットの位置だけを監視するのであれば、もちろんそちらの方が簡単です。

 

私の仕事は単純で、仕事中のオーダーは2、3ダースもない。

したがって、私はタイマーを使ってOrdersTotal() の中身をチェックし、反復するたびに置換で新旧の変数にボリュームを書き込み、ボリュームが変化していれば-さらなるステップを踏むことにします。

 
Aleksandr Volotko:

私の仕事は単純で、仕事中のオーダーは2、3ダースもない。

したがって、私はタイマーを使ってOrdersTotal()の中身をチェックし、反復するたびに置換で新旧の変数にボリュームを書き込み、ボリュームが変化していれば-さらなるステップを踏むことにします。

保留中の注文が トリガーされた場合、出来高は変化しない。

 
Artyom Trishkin:

保留注文が トリガーされても出来高は変わりません。

まあ、ループの中で注文を種類別にフィルタリングして、オープン累積ポジションのボリュームを計算するんだけどね。

MT5では特定のイベントをストレスなく待つだけでいいのに、リソースを浪費して時間を浪費しなければならないのが悲しいです。

 
Aleksandr Volotko:

まあ、ループの中で注文を種類別にフィルタリングして、未決済の累積ポジションの数量を計算しているのですが。

MT5では特定のイベントをストレスなく待つだけでいいのに、こんな訓練をして資源を浪費するのは悲しいことです。

まあmt5はmt4より一桁高いんですけどね。

これは、他の機能にも当てはまります。

 
私の場合、1日1回の取引と1日1回のイベントで、60*60*24=86,400回のジェスチャーが追加されることになります。そして、それ以外の方法はまだないのです。

 
Aleksandr Volotko:
私の具体的な状況では、1日1回取引して1日1回イベントを受けると、60*60*24=86,400の余分な努力が発生することになるのです。そして、それ以外の方法はまだないのです。

課題によって異なります。

もし、ポジションのオープン/クローズ(部分的ではない)、オーダーの設定/削除をキャッチしたいのであれば、ループで毎回リストを通過する必要はないでしょう。

OrdersTotal()の現在値と前回値を確認すればよいのです。違いを検知したらイベントが発生し、その値を見る。

順序と 位置のプロパティの ハッシュサムを使用して、すべてを行いました。それが変化するとすぐに、つまり何らかの出来事があるとすぐに、そこで何が変わったのかを調べます。

しかし、私はすべて、そしていかなる変化も追跡するタスクを持っていました。

 
Aleksandr Volotko:
私の場合、1日1回の取引で、1日1回イベントが発生すると、60*60*24=86,400の余分な努力をしなければならない。そして、それ以外の方法はない。

また、このような方法もあります(新規注文の出現がEA側からのみ可能な場合)。

  1. EAの開始時に、リスト上のすべての注文をバイパスする手段で、その注文の配列が生成されます。
  2. 新しいティックごとに、注文の有無の確認は

if (OrderSelect(nTicket, SELECT_BY_TICKET) && OrderCloseTime() == 0)

注文がある場合は、必要に応じてそのデータを更新します。SL/TP/ボリュームのモニタリングが必要な場合です。必要なければ、それ以外のことは一切行いません。

注文がクローズされたリストにある場合 (OrderCloseTime() > 0)、配列から削除する。配列は、EAで注文がオープンされたときにのみ補充されます。

その結果、毎ティック ごとに注文の全リストを確認する必要がなくなる。操作は自前の配列でのみ可能です。

 

とりあえずOrdersTotal()の値を比較してみる(@Artyom Trishkin さんに感謝)、これで十分でしょう。部分閉鎖はしない。

初期化時に、古い注文に値-1を割り当てて、マーケットに注文があるなしにかかわらず、開始時に常にフルチェックが行われるようにします。

その後、新しい注文が出るか(イベント)、古い注文が削除されるか(イベント)、記号さえも重要ではありません。すべてを完全にチェックしても、終わりのない大騒ぎをするよりは何倍も頻度が低いのです。

 
Aleksandr Volotko:

とりあえずOrdersTotal()の値を比較してみる(@Artyom Trishkin さんに感謝)、これで十分でしょう。部分閉鎖はしない。

初期化時に、古い注文に値-1を割り当てて、マーケットに注文があるなしにかかわらず、開始時に常にフルチェックが行われるようにします。

その後、新しい注文が出るか(イベント)、古い注文が削除されるか(イベント)、記号さえも関係ない - 我々はそれらのすべてについて完全なチェックを実行することができます、それはまだ無限ドキドキよりも何倍も少ない頻度です。

しかし、それは慎重に扱う必要があります。今日、私は1つのポジションが閉じ、もう一つは別のものに開かれ、ティックの間にほぼ同時に直面している。

結局、OrdersTotal()は8個のままでした。Expert Advisorのロジックが混乱した - 新しいデータを再計算していない