MQLによる非同期・マルチスレッドプログラミング - ページ 2 123456789...40 新しいコメント Roman 2019.07.24 15:42 #11 Koldun Zloy: すでにMT開発会社の担当者から聞いていることを翻訳します。 MQLからスレッドを作成することはできません。WinAPIでもダメ。 これは、自分でDLLを書くしかないのです。 WinAPIで、標準のDLLを使用 ! kernel32.dll ユーザー32.dll など マルチスレッドはWinAPI関数で行うことを想定しており、mql関数で行うことは想定していません。 しかし、mqlの関数でマルチスレッド作業ができないのは残念です。 Igor Makanu 2019.07.24 16:46 #12 Roman: WinAPIで、標準のDLLを使用 ! kernel32.dllユーザー32.dll WinAPIは、kernel32.dll、user32.dllなどのダイナミックライブラリで実装されているのですが・・・。 純粋なC++で、いつものWindowsのウィンドウに "Hello Word!" というテキストを書こうとしたことはないだろう。- ネットに例があるので、最初の「Hello Word!」を書いてみてください。- 勝手に治る) Roman 2019.07.24 17:15 #13 Igor Makanu: WinAPIは、kernel32.dll、user32.dllなどのダイナミックライブラリとして実装されています。 純粋なC++で、いつものWindowsのウィンドウに "Hello Word!" というテキストを書こうとしたことはないだろう。- ネットに例があるので、最初の「Hello Word!」を書いてみてください。- を使えば自ずと解決する) 標準はWindows標準のDLLを意味し、標準は静的な.libであることを意味しない イゴール、道を間違えてる...。 Hello Word!" と、DLLの初期化、およびスレッド内でのDLLからの関数呼び出しと、どんな関係があるのでしょうか ! 例えば、こんな感じです。 WinAPI関数 MessageBoxW()があります。 独自のスレッドで呼び出す必要があります。 そのためには、DLL自身とエクスポートされた関数を 初期化する必要がありますが、これを正しく行うための例を教えてください。 LoadLibraryW("user32.dll"); GetProccAddress(hMyDll, "MessageBoxW"); FreeLibrary(hMyDll); и т.д. そして、初期化後、CreateThread()でMessageBoxW();を呼び出します。 関数実行後、リソースを解放し、スレッドをクローズします。 mqlで正しく行うための例を教えてください。 Yuriy Asaulenko 2019.07.24 17:23 #14 現在、マルチスレッドに取り組んでいます。しかし、MCLではなく、標準のC++で。ああ、熊手ってこんなにあるんだ) Igor Makanu 2019.07.24 17:35 #15 Roman: 標準はWindows標準のDLLを意味し、標準は静的な.libを意味するものではありません。 イゴール、方向性が違うぞ...。 Hello Word!" と、DLLの初期化、およびスレッド内でのDLLからの関数呼び出しと、どんな関係があるのでしょうか ! 例えば、こんな感じです。 WinAPI関数 MessageBoxW()があります。 独自のスレッドで呼び出す必要があります。 そのためには、DLL自身とエクスポートされた関数を 初期化する必要がありますが、これを正しく行うための例を教えてください。 そして、初期化後、CreateThread()でMessageBoxW();を呼び出します。 関数実行後、リソースを解放し、スレッドをクローズする。 mqlで正しく行うための例を教えてください。 あなたは間違った方向に進んでいる、あなたは言われました - dllを書く(その中で、メモリを割り当て、新しいスレッドを登録する必要があります!)。- そして、終了時に慎重にすべてを破棄してください!)そして、MQLからそれを呼び出します。 MessageBoxの呼び出しは、MQLプログラムがリソースを割り当てたが、別のスレッドを作成していないことを意味します。 確認する気もありませんが、MessageBoxを呼び出すと、ターミナルがフリーズするはずです。 Roman 2019.07.24 17:48 #16 Igor Makanu: だから、DLLを書いて、MQLから呼び出せばいいんだよ。 MessageBoxを呼び出したということは、MQLプログラムがリソースを提供しただけで、別のスレッドを作成したわけではないということです。 確認する気もありませんが、MessageBoxを呼び出すと、ターミナルがフリーズするはずです。 Igor、私は、私が言っていることを理解するために、例として初期化DLL関数を引用しました。 しかし、私は、mqlでそれを正しく行う方法を認識していません、純粋なC++は、誤解を招く可能性があります。 mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。 WinAPIはdllで構築され、呼び出し可能な関数は、例えば、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私はmqlでそれを正しく行う方法の質問を理解し、あなたはメモリ割り当てと プロセス登録がどこにあるのか教えてください))、トピックを作成しました。 mqlでどのように行うか、適切な例を示してください。 または、良いガイドを指示してください。 Dmitry Fedoseev 2019.07.24 17:52 #17 Roman: Igor、私が言いたいことを理解するために、DLLの初期化関数を例に挙げましたが、mqlで正しく行う方法はわかりません、純粋なC++は誤解を招く可能性があります。 mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。 WinAPIはdll上で構築され、呼び出し可能な関数は、例えば、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私は質問を理解するためにトピックを作成しました、mqlでそれを正しく行う方法、あなたはメモリ割り当てと プロセス登録がどこにあるかを教えてください)). mqlでどのように行うか、適切な例を示してください。 または、良いガイドを指示してください。 WinAPIを使用しても、mqlプログラムからスレッドを作成することはできません。 Igor Makanu 2019.07.24 18:02 #18 Roman: Igor、私が言いたいことを理解するために、DLLの初期化関数の例を挙げましたが、mqlでそれを正しく行う方法は、私は知りません、純粋なC++は誤解を招く可能性があります。 mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。 WinAPIはdll上で構築され、呼び出し可能な関数は、例えば、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私は質問を理解するためにトピックを作成しました、mqlでそれを正しく行う方法、あなたはメモリ割り当てと プロセス登録がどこにあるかを教えてください)). mqlでどのように行うか、適切な例を示してください。 または、良いガイドを指示してください。 もう一度言いますが、これはMQLではできません。ヘッド側からではなく、テール側から問題を解決するのです dllを書き、それをMQLから呼び出してデータを渡し、MQLプログラムを続ける必要がある場合(複雑な計算)、dll内に新しいスレッドを作成し、このスレッドでデータを処理します。 dllの書き方については、フォーラムで "dll "と検索すると20件ほど出てきます。 チュートリアルはありませんが、DLLを書くのに使うリソースなので、スレッドの作り方などの解答を探します。 Roman 2019.07.24 18:03 #19 Dmitry Fedoseev: WinAPIを使用しても、mqlプログラムからフローを作成することはできません。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム MQLによる非同期・マルチスレッドプログラミング メタクォーツ・ソフトウェア株式会社, 2019.07.24 16:31 DLLからMQL関数を 呼び出すことはできません。 しかし、DLLコールを介して複数のスレッドを実行 し、その環境でMQL5から独立して動作するようにすることは可能です。 例えば、MQLからデータを用意して、どこかに置いたり、DLLに渡したりすると、今度はDLLが複数のスレッドでタスクを実行し、追加の関数で結果を返します。 Windows API関数の呼び出しはdllからの呼び出し なので、CreateThread(); を使ってWindows API関数用のスレッドを 作成できることになります。CreateThread();がmql標準ライブラリに移植 されたのは無駄なことではありません。 Igor Makanu 2019.07.24 18:12 #20 Roman: Windows API関数の呼び出しはdllからの呼び出しなので、Windows API関数の場合はCreateThread();でスレッドを作成 することが可能です。CreateThread();は訳あってmql標準ライブラリに移植 されました。 誰も何も移植していません。パッケージに書かれているのは、単なる関数のシグネチャです。 フローを作成するには、関数本体が必要です - これがフローの中で実行される本体です! Windowsでスレッドを登録するには、構造体を記入する必要があります。 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, __drv_aliasesMem LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); lpStartAddressを 参照- これはスレッドで実行される関数のエントリポイントアドレスで、メモリの割り当てについては 心配しないでください。 この問題を解決するには、MyFunc()のアドレスを取得する機会を見つける必要があります - メモリ内で、それは不在です - まあ、どこにもすべての...とんでもない 他にどう説明したらいいのかわからないのですが.というのは、実際には存在しないのですが )))) 123456789...40 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
すでにMT開発会社の担当者から聞いていることを翻訳します。
MQLからスレッドを作成することはできません。WinAPIでもダメ。
これは、自分でDLLを書くしかないのです。
WinAPIで、標準のDLLを使用 !
kernel32.dll
ユーザー32.dll
など
マルチスレッドはWinAPI関数で行うことを想定しており、mql関数で行うことは想定していません。
しかし、mqlの関数でマルチスレッド作業ができないのは残念です。
WinAPIで、標準のDLLを使用 !
kernel32.dll
ユーザー32.dll
WinAPIは、kernel32.dll、user32.dllなどのダイナミックライブラリで実装されているのですが・・・。
純粋なC++で、いつものWindowsのウィンドウに "Hello Word!" というテキストを書こうとしたことはないだろう。- ネットに例があるので、最初の「Hello Word!」を書いてみてください。- 勝手に治る)
WinAPIは、kernel32.dll、user32.dllなどのダイナミックライブラリとして実装されています。
純粋なC++で、いつものWindowsのウィンドウに "Hello Word!" というテキストを書こうとしたことはないだろう。- ネットに例があるので、最初の「Hello Word!」を書いてみてください。- を使えば自ずと解決する)
標準はWindows標準のDLLを意味し、標準は静的な.libであることを意味しない
イゴール、道を間違えてる...。
Hello Word!" と、DLLの初期化、およびスレッド内でのDLLからの関数呼び出しと、どんな関係があるのでしょうか !
例えば、こんな感じです。
WinAPI関数 MessageBoxW()があります。
独自のスレッドで呼び出す必要があります。
そのためには、DLL自身とエクスポートされた関数を 初期化する必要がありますが、これを正しく行うための例を教えてください。
そして、初期化後、CreateThread()でMessageBoxW();を呼び出します。
関数実行後、リソースを解放し、スレッドをクローズします。
mqlで正しく行うための例を教えてください。
標準はWindows標準のDLLを意味し、標準は静的な.libを意味するものではありません。
イゴール、方向性が違うぞ...。
Hello Word!" と、DLLの初期化、およびスレッド内でのDLLからの関数呼び出しと、どんな関係があるのでしょうか !
例えば、こんな感じです。
WinAPI関数 MessageBoxW()があります。
独自のスレッドで呼び出す必要があります。
そのためには、DLL自身とエクスポートされた関数を 初期化する必要がありますが、これを正しく行うための例を教えてください。
そして、初期化後、CreateThread()でMessageBoxW();を呼び出します。
関数実行後、リソースを解放し、スレッドをクローズする。
mqlで正しく行うための例を教えてください。
あなたは間違った方向に進んでいる、あなたは言われました - dllを書く(その中で、メモリを割り当て、新しいスレッドを登録する必要があります!)。- そして、終了時に慎重にすべてを破棄してください!)そして、MQLからそれを呼び出します。
MessageBoxの呼び出しは、MQLプログラムがリソースを割り当てたが、別のスレッドを作成していないことを意味します。 確認する気もありませんが、MessageBoxを呼び出すと、ターミナルがフリーズするはずです。
だから、DLLを書いて、MQLから呼び出せばいいんだよ。
MessageBoxを呼び出したということは、MQLプログラムがリソースを提供しただけで、別のスレッドを作成したわけではないということです。 確認する気もありませんが、MessageBoxを呼び出すと、ターミナルがフリーズするはずです。
Igor、私は、私が言っていることを理解するために、例として初期化DLL関数を引用しました。 しかし、私は、mqlでそれを正しく行う方法を認識していません、純粋なC++は、誤解を招く可能性があります。
mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。
WinAPIはdllで構築され、呼び出し可能な関数は、例えば
、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私はmqlでそれを正しく行う方法の質問を理解し、あなたはメモリ割り当てと プロセス登録がどこにあるのか教えてください))、トピックを作成しました。
mqlでどのように行うか、適切な例を示してください。
または、良いガイドを指示してください。
Igor、私が言いたいことを理解するために、DLLの初期化関数を例に挙げましたが、mqlで正しく行う方法はわかりません、純粋なC++は誤解を招く可能性があります。
mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。
WinAPIはdll上で構築され、呼び出し可能な関数は、例えば
、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私は質問を理解するためにトピックを作成しました、mqlでそれを正しく行う方法、あなたはメモリ割り当てと プロセス登録がどこにあるかを教えてください)).
mqlでどのように行うか、適切な例を示してください。
または、良いガイドを指示してください。
WinAPIを使用しても、mqlプログラムからスレッドを作成することはできません。
Igor、私が言いたいことを理解するために、DLLの初期化関数の例を挙げましたが、mqlでそれを正しく行う方法は、私は知りません、純粋なC++は誤解を招く可能性があります。
mql自体の特殊性が混乱を招いているのかもしれません。そのため、Googleではなく、フォーラムに助けを求めたのです。
WinAPIはdll上で構築され、呼び出し可能な関数は、例えば
、user32.dllにすでにあるとき、なぜ私はdllを書く必要がありますか? 私は質問を理解するためにトピックを作成しました、mqlでそれを正しく行う方法、あなたはメモリ割り当てと プロセス登録がどこにあるかを教えてください)).
mqlでどのように行うか、適切な例を示してください。
または、良いガイドを指示してください。
もう一度言いますが、これはMQLではできません。ヘッド側からではなく、テール側から問題を解決するのです
dllを書き、それをMQLから呼び出してデータを渡し、MQLプログラムを続ける必要がある場合(複雑な計算)、dll内に新しいスレッドを作成し、このスレッドでデータを処理します。
dllの書き方については、フォーラムで "dll "と検索すると20件ほど出てきます。
チュートリアルはありませんが、DLLを書くのに使うリソースなので、スレッドの作り方などの解答を探します。
WinAPIを使用しても、mqlプログラムからフローを作成することはできません。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
MQLによる非同期・マルチスレッドプログラミング
メタクォーツ・ソフトウェア株式会社, 2019.07.24 16:31
DLLからMQL関数を 呼び出すことはできません。
しかし、DLLコールを介して複数のスレッドを実行 し、その環境でMQL5から独立して動作するようにすることは可能です。
例えば、MQLからデータを用意して、どこかに置いたり、DLLに渡したりすると、今度はDLLが複数のスレッドでタスクを実行し、追加の関数で結果を返します。
Windows API関数の呼び出しはdllからの呼び出し なので、CreateThread(); を使ってWindows API関数用のスレッドを 作成できることになります。
CreateThread();がmql標準ライブラリに移植 されたのは無駄なことではありません。
Windows API関数の呼び出しはdllからの呼び出しなので、Windows API関数の場合はCreateThread();でスレッドを作成 することが可能です。
CreateThread();は訳あってmql標準ライブラリに移植 されました。
誰も何も移植していません。パッケージに書かれているのは、単なる関数のシグネチャです。
フローを作成するには、関数本体が必要です - これがフローの中で実行される本体です!
Windowsでスレッドを登録するには、構造体を記入する必要があります。
lpStartAddressを 参照- これはスレッドで実行される関数のエントリポイントアドレスで、メモリの割り当てについては 心配しないでください。
この問題を解決するには、MyFunc()のアドレスを取得する機会を見つける必要があります - メモリ内で、それは不在です - まあ、どこにもすべての...とんでもない
他にどう説明したらいいのかわからないのですが.というのは、実際には存在しないのですが ))))