Обсуждение статьи "Связь с MetaTrader 5 через именованные каналы без применения DLL" - страница 5

 
Помогите плиз кто-нибудь, как добиться от сервера чтобы он принимал данные типа double
 

Так и не пойму где описана функция __countof

Code::Block ругается на неё.

В документации по С++ тоже не нашел.


Не компилится.

Заменил на sizeof. Скомпилилось.


Еще пришлось подключить три библиотеки и #define UNICODE

 

У меня такой вопрос:

В статье сказано:

Подключимся к серверу двойной проверкой: на удаленный компьютер по имени 'RemoteServerName' или на локальный. На локальном все работает и вопросов нет.

void OnStart()
  {
//--- wait for pipe server
   while(!IsStopped())
     {
      if(ExtPipe.Open("\\\\RemoteServerName\\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);
     } 

А вот если запустить PipeServer.exe на удаленном VPS, а затем кинуть скрипт клиента на чарт на другом ПК, предварительно конечно изменив RemoteServerName на имя, принадлежащее VPS, то сервер и клиент не видят друг друга, т.е. канал не работает, связи нет.

В чем здесь дело, в том что имя конкретного VPS должно быть прописано изначально в PipeServer.exe или в чем? 

 
Igor Semyonov:

У меня такой вопрос:

В статье сказано:

Подключимся к серверу двойной проверкой: на удаленный компьютер по имени 'RemoteServerName' или на локальный. На локальном все работает и вопросов нет.

А вот если запустить PipeServer.exe на удаленном VPS, а затем кинуть скрипт клиента на чарт на другом ПК, предварительно конечно изменив RemoteServerName на имя, принадлежащее VPS, то сервер и клиент не видят друг друга, т.е. канал не работает, связи нет.

В чем здесь дело, в том что имя конкретного VPS должно быть прописано изначально в PipeServer.exe или в чем? 

Могу ошибаться.

Пайпы - технология древняя и имеет проблемы с безопасностью.
Сегодня порты в ОС закрыты по умолчанию, необходимо явно разрешить их.
Кроме этого, данные порты могут прикрываться провайдерами, если это так, то придётся разговаривать со службой поддержки.

Если Вам удастся настроить пайп на удалёнку, опишите здесь рецепт.
Ну и как совет, посмотрите на функцию WebRequest, она может заменить пайпы.
 
Igor Semyonov:

У меня такой вопрос:

В статье сказано:

Подключимся к серверу двойной проверкой: на удаленный компьютер по имени 'RemoteServerName' или на локальный. На локальном все работает и вопросов нет.

А вот если запустить PipeServer.exe на удаленном VPS, а затем кинуть скрипт клиента на чарт на другом ПК, предварительно конечно изменив RemoteServerName на имя, принадлежащее VPS, то сервер и клиент не видят друг друга, т.е. канал не работает, связи нет.

В чем здесь дело, в том что имя конкретного VPS должно быть прописано изначально в PipeServer.exe или в чем? 

было бы интересно услышать решение,

если разработчики указали на возможность прменения для удалленого компьютера, то должно возможно работать

надеюсь, здесь разработчики могут помочь с примером, как ето реализовать на удаленном компьютере

 
Извинение - гуглило бы перевод.
Я не понимаю совсем смысл! Что делает сервер с данными, как я получаю оттуда в другом клиенте?
Здесь я проектировал рациональное решение: Ссылка на английское обсуждение. Вероятно, кто-то может писать английский ответ?
Большое спасибо, Calli
 

Добрый день MetaQuotes. 

Подскажите, планируется ли добавление в MQL4/5 функции-аналога WaitNamedPipe() из WinAPI?

Такая функция сняла бы необходимость у MQL-клиентов опрашивать канал через FileOpen() в бесконечном цикле, при ожидании пока сервер откроет экземпляр канала. Это особенно полезно когда ждать нужно долго.

 
codesurfer:

Добрый день MetaQuotes. 

Подскажите, планируется ли добавление в MQL4/5 функции-аналога WaitNamedPipe() из WinAPI?

Такая функция сняла бы необходимость у MQL-клиентов опрашивать канал через FileOpen() в бесконечном цикле, при ожидании пока сервер откроет экземпляр канала. Это особенно полезно когда ждать нужно долго.



такие вопросы лучше всего задавать в Сервисдеске через свой профиль.
 

Здравствуйте.

Запускаю PipeServer.exe, запускаю скрипт pipeclient.mq5 в режиме отладки. Скрипт закручивается здесь:

//--- wait for pipe server
   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);
     }

Что я не так делаю?

Система:  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
Терминал:  MetaTrader 5 x64 build 1643 started (MetaQuotes Software Corp.)

P.S. PipeServer запускаю от имени Администратора.

 

Кто может помочь запустить тестовую связку MQL5+python? Готов компенсировать трудозатраты.

Мне нужен рабочий пример реализации вызова функций из питоновского скрипта.

Пытаюсь сделать функцию на MQL5 взаимодействующую со скриптом на Python, но только не через файл. Нужен быстрый обмен аргументами.

Буду благодарен за любой пример, например передать несколько чисел из МТ, а скрипт из питона вернул бы например сумму чисел обратно в МТ.


Причина обращения: