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

 
Vitaly Muzichenko:

いや、でも、もしかしたら話が違うかもしれませんね。

これなら必ずうまくいく。

それでも端末を開いて確認したところ...。同じスクリプトを3回実行し、3つの結果を紹介します。

台本には1行しかない。

  Print("OrdersHistoryTotal ", OrdersHistoryTotal());
2020.01.27 18:28:51.063 Script 00 EURGBP,H4: removed
2020.01.27 18:28:51.063 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:51.063 00 EURGBP,H4: OrdersHistoryTotal 48
2020.01.27 18:28:51.063 00 EURGBP,H4: initialized
2020.01.27 18:28:51.043 Script Test\00 EURGBP,H4: loaded successfully
2020.01.27 18:28:38.203 Script 00 EURGBP,H4: removed
2020.01.27 18:28:38.193 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:38.193 00 EURGBP,H4: OrdersHistoryTotal 47
2020.01.27 18:28:38.193 00 EURGBP,H4: initialized
2020.01.27 18:28:38.183 Script Test\00 EURGBP,H4: loaded successfully
2020.01.27 18:28:16.443 Script 00 EURGBP,H4: removed
2020.01.27 18:28:16.443 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:16.443 00 EURGBP,H4: OrdersHistoryTotal 4
2020.01.27 18:28:16.443 00 EURGBP,H4: initialized
2020.01.27 18:28:16.423 Script Test\00 EURGBP,H4: loaded successfully

つまり、あるEAが動作しているときに、ユーザーがいたずらで履歴の表示範囲を変更しようとした場合、2回目の切り替え時にEAがおかしくなってしまうということです。今度は小さく、今度は大きく、暗記したものとは違うものになるはずです。また、仮に線

  if(HT!=__TotalHist)

の代わりに > を入れても、状況は変わりません。設定が「今日」の時にEAを動かしていて、「すべての履歴」に切り替えると・・・どうなるのでしょうか?

 
Aleksandr Volotko:

OrderHistoryTotal()を触ろうとは思わないが、なぜ触る必要があるのか?

念のため:))))))

 
Alexey Viktorov:

念のため:))))))

:))OrdersTotal() で十分です。

多分2つのタイマーを作るために?1つは100ミリ秒に一度でもOrdersTotal()の値を比較し、ループで1分(またはそれ以下の頻度)で一度安全のための第二 - ないマウスは、2ダースの取引のいずれかが100500回で1分後に閉じたり開いた場合、そこに見逃すことはできません - 私は確かに死ぬことはありませんが、私はあまりにも預金と仮定します。

 
Aleksandr Volotko:

:)) OrdersTotal()で十分です。

多分私は2つのタイマーを作るべきでしょうか? それらの一つは、100ミリ秒に一度でもOrdersTotal()の値を比較し、第二のものは - 1分(またはそれ以下の頻度)でループを通過 - ない単一のマウスは、2ダース注文のいずれかが100500回より、1分後に閉じたり開いたりする場合は、そこを通り抜けることができます - 私は確かに死ぬことはないと私はそう私の預金になると仮定します。

また、同時にいくつの注文を開けるかは、アルゴリズムによって提供されるのですか?

 
Alexey Viktorov:

それでも端末を開いて確認したところ...。同じスクリプトを3回実行し、3つの結果を紹介します。

スクリプトには1行しかありません

どういうことかというと、EAが動作しているときに、ユーザーがいたずらで履歴の表示範囲を変更しようとすると、2回目の切り替え時にEAが狂ってしまうということです。今度は小さく、今度は大きく、暗記したものとは違うものになるはずです。また、仮に線

!= の代わりに > を入れても状況は変わらない。Expert Advisorを「今日」の設定で起動し、「すべての履歴」に切り替えると...どうなるのでしょうか?

いずれにせよ、イコールにはならず、コードはさらに進みます。しかし、if(HT>__TotalHist) とした場合、問題に直面することになります。

 
Alexey Viktorov:

また、アルゴリズムは全部でいくつの未決済注文を規定しているのでしょうか?

せいぜい2、3ダース。

 
Vitaly Muzichenko:

いずれにせよ、イコールにはならず、コードは先に進むことになる。ただし、 (HT>__TotalHist) の場合は 問題があります。

Vitaly いずれにしても、問題は発生します。どう考えても、履歴の注文量の 変化に反応するEAであれば、注文量がどう変化しても反応するはずです。実のところ、履歴の中の注文量は増える一方なので、だからこそ危険は少ないだろうと提案したのですが、それでは問題が解決しません。自分だけのために書いたとしても、手動で切り替える可能性は否定できません。どんなテキストメッセージが来るかわからない)))

 
Aleksandr Volotko:

せいぜい2〜3ダース

このような数値の場合、チケットの配列、あるいは注文プロパティを持つ構造体の配列を作成し、ティックごとに種類と終値の変化を確認する方が簡単だと思います。これにより、保留中の注文の 有効化やポジションの決済を追跡することができます。そしてOrderSend()を送信した直後にオープニングを行い、配列のサイズを追加し、必要なものをすべてそこに入れる。

 
それこそ、1日に86400回も注文を振ればいいのですが、その気がなかったのでしょう。
 
Aleksandr Volotko:
それこそ、1日に86400回も注文を振ればいいのですが、その気がなかったのでしょう。

その場合、アーテムのライブラリーがないと生きていけない。