В 5-ой версии языка MQL появилась масса нововведений, в том числе работа с событиями различных типов (события таймера, торговые события, пользовательские и т.д.). Возможность обработки событий позволяет создавать совершенно новый тип программ для автоматического и полуавтоматического трейдинга. В этой статье мы рассмотрим торговые события и напишем для функции OnTrade() код, который будет обрабатывать событие Trade.
mql5では、オープンポジションが現在クローズ中であるなどのステータスを追跡することは可能でしょうか?
...しかし、次のティックが来ると、上記のすべてのステップが繰り返され、ポジション選択が行われ、ボリュームが取られ、さらに1つのポジションが閉じる方向に置かれます。
これを避けるためにはどうしたらいいのでしょうか。
何もしなくていいんです。現在のティックがOnTick()関数で処理されるまで、入力されるティックはすべてスキップされます。
リアルタイムでポジションがどうなっているかは、OnTrade()関数で追跡できます。
何もする必要はありません。現在のティックがOnTick()関数で処理されていない限り、新しく到着したティックはすべてスキップされます。
リアルタイムでポジションに起こることは、OnTrade()関数を使って追跡することができます。
リクエストの非同期実行さえなければ、すべて問題ないのだが。しかし、あるティックが来るとポジションがクローズされる一方で、次のティックが来てもリストに残っているので、ポジションがオープンされたのか、開かれたのか、クローズされたのか、どう理解すればいいのでしょうか。トレードイベントはどのように処理するのですか?基本的な操作は、それほど複雑であってはいけないと思います。
理想的には、ポジションを閉じようとしたときに、「Closed」や「Processing」などのステータスが表示され、それによって現在何らかのアクションの途中であることが判断できれば、良心的に放置しておくことができるのです。
そして今、多くの歴史に目を通し、すべてがどうなったかを理解しなければならず、すべてが正しいという保証はない。
リクエストの非同期性さえなければ、すべてがうまくいくのだが。しかし、あるティックが来るとポジションがクローズされ、次のティックが来てもリストに残っているので、オープンなのかクローズなのか、どうやって理解すればいいのでしょうか?トレードイベントはどのように処理するのですか?基本的な操作は、それほど複雑であってはいけないと思います。
理想的には、ポジションを決済しようとすると、「クローズ」「処理中」などのステータスが表示され、現在何らかの処理中であることがわかり、その後、良心的に放置しておくことができるようにすることです。
そして今、多くの歴史に目を通し、すべてがどうなったかを理解しなければならず、すべてが正しいという保証はない。
なぜか...NewBarがイベントじゃないなんて誰が決めた? ))))))))))))))))))))))))))))))))))))))))))))))
OnNews - ニュースが届くと、ボットはそれを読まなければならない...公式にはWinAPIを左うちわでつつくのではありません。
1.NewBar - あなた自身が実装できるイベントです。というアドバイスがありそうです。以前、コネクトについて質問したことがあるのですが、答えは簡単で「自分で実装すること」でした。
問題ありません。私はこれを導入し、夢中になり、今では必要なものはほとんどすべてタイマーでトラッキングしています(すでに30件ほどイベントを登録しています)。私が終了したとき、ユーザーは私が興味を持っているパラメータのいずれかを変更することはできませんので、専門家はそれについて知りませんでした。
2.OnNews・・・一般的な考え方は理解できる、参加してもいいのでは?もっとも、開発者はNews.wavの存在を指摘しそうだが。
しかし、経済ニュースのカレンダーと連動できるなど、言語の機能 拡張は以前から開発者に求めていたFAです。すべてうまくいくと思いますか?そんなことはないだろう。
私はこの機会にすでに応募を送りました、希望はまだ生きているのです。専門家が自分で何か作業をしてくれるといいのですが...。
非同期リクエストさえなければ、すべてがうまくいくのですが。しかし、あるティックが来るとポジションはクローズされ、次のティックではまだリストに残っていて、オープンされたのか、開かれたのか、クローズされたのか、どうすれば理解できるのでしょうか。トレードイベントはどのように処理するのですか?基本的な操作は、それほど複雑であってはいけないと思います。
理想は、ポジションを閉じようとしたときに、「Closed」や「Processing」などのステータスが表示され、それによって現在何らかのアクションの途中であることが判断でき、その後、良心的に放置しておけることです。
そして今、多くの歴史に目を通し、すべてがどうなったかを理解しなければならず、すべてが正しいという保証はない。
今でも、やり方さえわかれば簡単にできます。開発者は、OnTrade()を書き換えて、そこに必要なパラメータを追加することを約束しています。
OnTick() や OnTime() -取引操作の 場所で、あるいは OnTrade() で、コードから直接制御されないユーザー操作や取引操作をキャッチしたい場合、そのような状況を現場で処理することを防ぐ人はいません。
1.NewBar - あなた自身が実装できるイベントです。というアドバイスがありそうです。以前、コネクトについて質問したところ、答えは簡単で、自分で実装したほうがいいというものでした。
...OnNewBarの見方がちょっとあやふやなんですが...))
OnNewBar(ulong Param), ここでParam - 新しいバーでタイムフレームの位置でビット単位で1が埋められた...- すべてのチャートがバーの数 だけ同時に更新されるわけではありません...。
例えば ...
...00001 - 1分間だけ更新されました。
...00111 - 1分のみ、2、3が更新される......といった具合に。
あくまでアイデアですが、便利だと思います。とはいえ......ですか;)
OnNewBarの見方がちょっとあやふやなんですが...)
OnNewBar(ulong Param), ここでParam - 新しいバーでタイムフレームの位置の1を埋める...- すべてのチャートがバーの本数で 同時に更新されるわけではありません...
例えば ...
...00001 - 分単位のみ更新されました。
...00111 - 1分のみ、2、3が更新される......といった具合に。
あくまでアイデアですが、便利だと思います。とはいえ......ですか;)
パラメータを犠牲にしてでも、考えることが必要なのです。それを行う価値がありますか(もしかしたら、ENUM_TIMEFRAMESとして そこにTFを置く方が簡単かもしれません)?
せめて、そういうことをしたかったのですが、断念しました...。
追記
言い忘れていたが、OnNewBarをChartクラスで作りたかったので、今やっている(現時点ではまだそこに標準的なもの+自分なりの楽しい小細工を詰め込んでいる)。
ただ、なぜ私が標準的な CChartを 好まないのかは聞かないでください ...:)
新しいバーを追跡する必要がある場合は、私のコードを見てください。
https://www.mql5.com/ru/code/107
新しいバーを追跡する必要がある場合は、私のコードをチェックしてみてください。
https://www.mql5.com/ru/code/107
シンボル期間 SERIES_LASTBAR_DATEと 比較して、最後のバーのオープンタイムに問題があるのか ?あなたのバージョンよりずっと簡単で、インジケータも必要ありません。
さらに、多通貨EAでは、各シンボルに対して新しいバーを定義する必要があり、それはすべてのシンボルに対してインジケータを初期化する必要があることを意味します。
新しいバーを追跡する必要がある場合は、私のコードを見てください。
https://www.mql5.com/ru/code/107
もう一度 - コード... コード...コードもいいけど、戦術やループもいいよね。;)
チャートに新しいバーを作成する旨のメッセージが表示されないか?信じられない...)))
イベントを作るのは問題ないのでしょうか? 少なくとも変数は定義済みなのでしょうか?
一般に、山のようなコードを埋めるより、イベントを処理する方が簡単です。しかも - エラーで (ERROR-FREE PROGRAMS DO EVER!!! )))))