MQLによる非同期・マルチスレッドプログラミング - ページ 8 123456789101112131415...40 新しいコメント Roman 2019.07.25 18:41 #71 Dmitry Fedoseev: 非同期とマルチスレッドの特別な違いは、一部の人を悩ませるポインタと参照の違いの問題と同じところからきているようです。 非同期は別のスレッドで実装され、このプロセスがプロセッサや他のデバイスによって提供されているかどうかはあまり重要ではありません。プロセスの作成は、並列に存在するため、非同期であることを意味します。 非同期は、同じプログラムの実行 スレッドで、EventLoopによって実装されますが、EventLoopをどのように実装するかは、開発者の特権です。 mqlの標準的なハンドラは同じで、例えばOnTimerは独自のループで動作し、これはEventLoopの一種である。 非同期メソッド用に別のハンドラを作成する場合、すべてのタスクは完全に非同期ループで実行されます。 Dmitry Fedoseev 2019.07.25 19:08 #72 Roman: 非同期はEventLoopによって同じプログラムの実行 スレッドに実装されますが、EventLoopをどのように実装するかは、開発者の特権です。 mqlの標準的なハンドラは同じで、例えばOnTimerはそれ自身のループで動作しますが、これは一種のEventLoopと言えます。 非同期メソッド用に別のハンドラを作成する場合、すべてのタスクは完全に非同期ループで実行されます。 すみません、EventLoopで非同期が実装されているのはどこですか? EventLoopのようなものはもう自分でできますから、端末の開発者はここでは全く必要ありません。 Roman 2019.07.25 19:27 #73 Dmitry Fedoseev: すみません、EventLoopで非同期が実装されているのはどこですか? EventLoopのようなものはもう自分でできますから、端末の開発者はここでは全く必要ありません。 EventLoopはasyncioで実装されていますが、他の非同期ライブラリでも同じような原理で実装されていると思います。 WinAPIでも、私の理解では、非同期はイベントの原理を利用しています。 現在のところ、標準的なツールで本格的な非同期モードを実装することはできません。 これは、例えばOnTimerハンドラでは、タスクの実行を制御せず、ループを順次実行するためである。 つまり、ハンドラには、非同期タスク実行の仕組みがない。 Roffild 2019.07.25 20:17 #74 デッドロックの概念でみんなググれ! MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。 この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。 1Cを知っている人はプログラマとはみなされない。MQL5も同様です。 Реter Konow 2019.07.25 20:25 #75 Roffild: デッドロックの概念でみんなググれ! MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。 この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。 1Cを知っている人はプログラマとはみなされない。MQL5も同様です。 マルチスレッドのMQLプログラムがテストシステムを壊すのであれば、DLLを介して添付されているか、通常のものであるか、どのような違いがあるのでしょうか?いずれにせよ、テストとマルチスレッドのどちらかを選択する必要があります。でも、MQLの中で選んだ方が、整合性が取れているので、プログラムとしてはプラスになりますね。 Dmitry Fedoseev 2019.07.25 20:26 #76 Roffild: デッドロックの概念でみんなググれ! MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。 この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。 1Cを知っている人はプログラマとはみなされない。MQL5も同様です。 テスト中は、すべてのタスクを1つずつ解決し、ある瞬間に結果を返すことができます(テスターで待つことができます)。出来るだけでなく、現実に対応するようにしなければなりません。 1Cプログラマーはどう思ってるんだろう?他人の意見に興味があるのだろうか? Реter Konow 2019.07.25 20:34 #77 Реter Konow: マルチスレッドのMQLプログラムがテストシステムを壊すのであれば、DLLを介して添付されているのか、通常のものなのか、どんな違いがあるのでしょうか?いずれにせよ、テストとマルチスレッドのどちらかを選択する必要があります。でも、MQLの中で選んだ方が、整合性が取れているので、プログラムとしてはプラスになりますね。 一般に、通常モードではマルチスレッドが必要です。テストは常に1つの小さなプログラムモジュール、つまりストラテジーで動作し、プログラムの他の機能はすべて休息を持っています。可視化など。そのため、テスト中はstrategyモジュールが配置されているスレッドのみが実行されることになります。テスターでは、一部の通常機能やイベントが無効になっているので、スレッドも無効にしておきましょう。 Roffild 2019.07.25 20:53 #78 Реter Konow: マルチスレッドのMQLプログラムがテストシステムを壊す場合、DLL経由でリンクされているか、直接リンクされているか、どのような違いがあるのでしょうか?いずれにせよ、テストとマルチスレッドのどちらかを選択する必要があります。でも、MQLの中で選んだ方が、整合性が取れているので、プログラムとしてはプラスになりますね。 違いがあるんです。クラウドではDLLは使用できません。そして、DLL自体も最初から無効化されています。DLLに対するパーミッションを有効にすることは、安全なコード実行の責任を放棄することになります。 Dmitry Fedoseev 2019.07.26 04:22 #79 Roman: EventLoopはasyncioで実装されていますが、他の非同期ライブラリでも同じような原理で実装されていると思います。 ... 他の非同期ライブラリはこの原則を採用していません。 Roman 2019.07.26 06:06 #80 Dmitry Fedoseev: 他の非同期ライブラリはこの原則を採用していません。 これはあくまで推測であり、他にどこで使われているかは調べていません。 EventLoopを使っている言語をググってみると、Py、JS、Qt、おそらくもっとあるようです。 ポイントは、どこに適用するかではなく、糸を使わない技術そのものにあります。 そこで、その技術を拝借して、mqlにイベントループを実装してみませんか? 123456789101112131415...40 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
非同期とマルチスレッドの特別な違いは、一部の人を悩ませるポインタと参照の違いの問題と同じところからきているようです。
非同期は別のスレッドで実装され、このプロセスがプロセッサや他のデバイスによって提供されているかどうかはあまり重要ではありません。プロセスの作成は、並列に存在するため、非同期であることを意味します。
非同期は、同じプログラムの実行 スレッドで、EventLoopによって実装されますが、EventLoopをどのように実装するかは、開発者の特権です。
mqlの標準的なハンドラは同じで、例えばOnTimerは独自のループで動作し、これはEventLoopの一種である。
非同期メソッド用に別のハンドラを作成する場合、すべてのタスクは完全に非同期ループで実行されます。
非同期はEventLoopによって同じプログラムの実行 スレッドに実装されますが、EventLoopをどのように実装するかは、開発者の特権です。
mqlの標準的なハンドラは同じで、例えばOnTimerはそれ自身のループで動作しますが、これは一種のEventLoopと言えます。
非同期メソッド用に別のハンドラを作成する場合、すべてのタスクは完全に非同期ループで実行されます。
すみません、EventLoopで非同期が実装されているのはどこですか?
EventLoopのようなものはもう自分でできますから、端末の開発者はここでは全く必要ありません。
すみません、EventLoopで非同期が実装されているのはどこですか?
EventLoopのようなものはもう自分でできますから、端末の開発者はここでは全く必要ありません。
EventLoopはasyncioで実装されていますが、他の非同期ライブラリでも同じような原理で実装されていると思います。
WinAPIでも、私の理解では、非同期はイベントの原理を利用しています。
現在のところ、標準的なツールで本格的な非同期モードを実装することはできません。
これは、例えばOnTimerハンドラでは、タスクの実行を制御せず、ループを順次実行するためである。
つまり、ハンドラには、非同期タスク実行の仕組みがない。
デッドロックの概念でみんなググれ!
MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。
この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。
1Cを知っている人はプログラマとはみなされない。MQL5も同様です。
デッドロックの概念でみんなググれ!
MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。
この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。
1Cを知っている人はプログラマとはみなされない。MQL5も同様です。
デッドロックの概念でみんなググれ!
MQL5では、スレッドを追加するとテストシステムが壊れ、エージェントクラウド全体がクラッシュしてしまいます。
この制限を回避するために、DLLを使用することが可能です。もしあなたがC#、C++、C、Pythonを学びたくないのなら、それはあなたの問題です。現代では、プログラマーは複数の言語を知っていなければ、特定のタスクに対応するツールを正しく選択することはできません。
1Cを知っている人はプログラマとはみなされない。MQL5も同様です。
テスト中は、すべてのタスクを1つずつ解決し、ある瞬間に結果を返すことができます(テスターで待つことができます)。出来るだけでなく、現実に対応するようにしなければなりません。
1Cプログラマーはどう思ってるんだろう?他人の意見に興味があるのだろうか?
マルチスレッドのMQLプログラムがテストシステムを壊すのであれば、DLLを介して添付されているのか、通常のものなのか、どんな違いがあるのでしょうか?いずれにせよ、テストとマルチスレッドのどちらかを選択する必要があります。でも、MQLの中で選んだ方が、整合性が取れているので、プログラムとしてはプラスになりますね。
マルチスレッドのMQLプログラムがテストシステムを壊す場合、DLL経由でリンクされているか、直接リンクされているか、どのような違いがあるのでしょうか?いずれにせよ、テストとマルチスレッドのどちらかを選択する必要があります。でも、MQLの中で選んだ方が、整合性が取れているので、プログラムとしてはプラスになりますね。
違いがあるんです。クラウドではDLLは使用できません。そして、DLL自体も最初から無効化されています。DLLに対するパーミッションを有効にすることは、安全なコード実行の責任を放棄することになります。
EventLoopはasyncioで実装されていますが、他の非同期ライブラリでも同じような原理で実装されていると思います。
...
他の非同期ライブラリはこの原則を採用していません。
他の非同期ライブラリはこの原則を採用していません。
これはあくまで推測であり、他にどこで使われているかは調べていません。
EventLoopを使っている言語をググってみると、Py、JS、Qt、おそらくもっとあるようです。
ポイントは、どこに適用するかではなく、糸を使わない技術そのものにあります。
そこで、その技術を拝借して、mqlにイベントループを実装してみませんか?