記事"DLLを使用せず、名前のつけられたパイプを使っての MetaTrader 5との通信"についてのディスカッション - ページ 6

 
Igor Semyonov:

こんな質問がある:

記事には次のように書かれています:

RemoteServerName'という名前のリモート・コンピューターかローカル・コンピューターかをダブルチェックしてサーバーに接続してください。ローカルのコンピュータではすべてうまくいき、何の問題もありません。

しかし、リモートのVPSでPipeServer.exeを実行し、 RemoteServerNameをVPSの名前に変更して、別のPCのチャートにクライアントスクリプトを投げると 、サーバーとクライアントはお互いを見ることができません。

何が問題なのでしょうか。特定のVPSの名前をPipeServer.exeに最初に書くべきなのでしょうか、それとも何なのでしょうか。

解決策をお聞かせいただければ幸いです、

開発者がリモートコンピュータに使用する可能性を指定したのであれば、おそらくうまくいくはずです。

開発者がリモートコンピュータに 使用する可能性を指定したのであれば、おそらくうまくいくはずです。ここの開発者が、リモートコンピュータで これを実現する方法の例を教えてくれることを願っています。

 

このクライアント・セーバーを使っている人はいますか?何のために、どのように?

冒頭にこうある:

「端末のスクリプトがこのサーバーに接続し、データを交換します。

このサーバーを経由して、2つの異なる端末で動作している2つのクライアントをどのように接続できるのでしょうか?私が理解している限りでは、サーバーとテストは1つのクライアントだけがサーバーに接続し、このサーバーは受信したメッセージで何ができるのでしょうか?

次のようなものが必要ではないでしょうか?

1) 複数のクライアントを待つ独立したサーバー、

2) 各クライアントが自分自身のユニークなIDを送信して接続を開始する、

3) サーバーが受信したメッセージを、接続しているすべてのクライアントに送信する、

4) サーバーが、メッセージを送信したクライアントの固有IDで始まる各メッセージを送信する。

- こうすることで、クライアントは自分自身のメッセージを検知し、サーバーから送り返されたメッセージを削除することができます。

- このようにして、クライアントは自分がリッスンすべきクライアントを検出することができます。

 
ポイントが全く理解できません!
ここで私は合理的な解決策を予測しました:英語の議論へのリンク。おそらく、誰かが英語の答えを書くことができますか?
多くのおかげで、Calli
 

ここで紹介する解決策は、非同期名前付きパイプでは 機能しません。https://www.mql5.com/en/forum/94343 を参照してください。

ニューゲル

MQL5 Asynchronous named pipes?
MQL5 Asynchronous named pipes?
  • www.mql5.com
I´m trying to integrate MT5 with an external Named Pipe Server application written in C# through named pipes...
 

こんにちは、MetaQuotesです。

WinAPIからMQL4/5にWaitNamedPipe()の類似関数を追加する計画があるかどうか教えていただけますか?

そのような関数があれば、MQLクライアントが、サーバーがチャネルのインスタンスを開くのを待つ間、無限ループでFileOpen()を介して チャネルに問い合わせる必要がなくなります。これは特に待ち時間が長い場合に便利です。

 
codesurfer:

こんにちは、MetaQuotesです。

WinAPIからMQL4/5にWaitNamedPipe()の類似関数を追加する計画があるかどうか教えていただけますか?

そのような関数があれば、MQLクライアントが、サーバーがチャネルのインスタンスを開くのを待つ間、無限ループでFileOpen()を介してチャネルに問い合わせる必要がなくなります。これは特に待ち時間が長い場合に便利です。



このような質問は、プロファイルを通してサービスデスクで尋ねるのが一番です。
 

こんにちは。

PipeServer.exeを起動し、デバッグモードで pipeclient.mq5スクリプトを実行しています。スクリプトはここでループしています:

//--- パイプサーバーを待つ
   while(!IsStopped())
     {
      if(ExtPipe.Open("\\\\REN\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      if(ExtPipe.Open("\\\\.\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      Sleep(250);
     }

何が間違っているのでしょうか?

System: Windows 7 Ultimate (x64 based PC), IE 11.00, RDP, UAC, AMD FX-8300 Eight-Core Processor , RAM: 5601 / 8190 Mb, HDD: 14763 / 114370 Mb, GMT+02:00
Terminal: MetaTrader 5 x64 build 1643 started (MetaQuotes Software Corp.).

P.S. 私はPipeServerを管理者として実行しています。

 

MQL5+pythonテストバインダーの立ち上げを手伝ってくれる人はいますか?人件費を補償する用意があります。

Pythonスクリプトからの関数呼び出しの 実装 例が必要です。

MQL5でPythonスクリプトと対話する関数を 作ろうとしています 。引数の素早いやり取りが必要です。

例えば、MTからいくつかの数値を渡すと、Pythonスクリプトは例えば数値の合計をMTに返します。


 
mavar:

MQL5+pythonテストバインダーの立ち上げにご協力いただける方は?人件費を補償する用意がある。

Pythonスクリプトからの関数呼び出しの 実装 例が必要です。

MQL5でPythonスクリプトと対話する関数を 作ろうとしています 。引数の素早いやり取りが必要です。

例えば、MTからいくつかの数値を渡すと、Pythonスクリプトは例えば数値の合計をMTに返します。


サーバはC#で実装していますが、問題ないと思います。Pythonではもっと難しくないと思います。

 

サーバーへの接続が開いているかどうかをチェックする関数をライブラリに追加する予定はありますか?私の理解では、現在そのような関数はありません。

サーバーとの接続が切れてもハンドルはゼロ以外の値を保持します。