Обсуждение статьи "Работа с сокетами в MQL, или Как стать провайдером сигналов" - страница 6

 
проверьте битность терминала и какие для них структуры используете
 
o_o:
проверьте битность терминала и какие для них структуры используете

32 битный.

 
_SERG_:

32 битный.

мне это знать ни к чему. ))
Это вам инфа к действию.

 
o_o:

мне это знать ни к чему. ))
Это вам инфа к действию.


Спасибо. Запустил. 

 

Еще одна суперполезная статья!

Этот вариант гораздо удобнее файлов и БД.

Спасибо камрад ;)

 

Запустил у себя копирование сделок, повесил по советнику (сервер/клиент) на графики каждого торгуемого символа для работы мультивалютного советника, советник нагенерил много сделок за вечер-ночь-утро, но по скопированным объемам смотрю таки какая-то сделка потерялась..

Т.е. как минимум надо добавить периодическую проверку на необходимость проведения промежуточной синхронизации объемов позиций сервера и клиентов, по аналогии с тем, как работает это в  сервисе Сигналов.

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

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

З.Ы.:

Очевидно, что данные примеры сервера, рассылающие любому клиенту информацию, не являются оптимальными. К примеру, вы наверняка захотите ограничить доступ к своей информации.  Значит, как минимум, к обязательным требованиям необходимо отнести:

  • авторизацию клиента (логин/пароль);
  • защиту от подбора пароля (бан/блокирование логина или IP).

как сие можно реализовать? нулевые познания пока в этом (даже запустив на локальной машине сервер/клиент, к серверу подключился какой-то левый клиент)

 
Aleksandr Volotko:

как сие можно реализовать? нулевые познания пока в этом (даже запустив на локальной машине сервер/клиент, к серверу подключился какой-то левый клиент)

https://www.mql5.com/en/code/15534

Adding password protection to your Indicator / Expert Advisor
Adding password protection to your Indicator / Expert Advisor
  • голосов: 19
  • 2016.05.25
  • Claude Beaudoin
  • www.mql5.com
Several methods of protecting your code have been proposed over the past, but were either too simple (less secure), required re-compilation of your code for each new customer (ok if you only plan on having a dozen or so customers) or far too complicated involving a remote host to validate the client terminal. Here I propose a simple password...
 
fxsaber:


Спасибо, пошел разбираться.

 
Aleksandr Volotko:

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

Я так понял, что всякие недоразумения с позициями происходят из-за моментов, когда терминал запустился, но ещё не законнектился к торговому серверу, а сокеты поднимаются сразу и либо сервер отправляет информацию об отсутствие позиций клиентам и те кроют имеющиеся у себя, либо клиент получает информация от сервера о позициях и пока не видит своих - спешит их открыть, задваивая имеющиеся объемы. Я так понимаю предварительная проверка на наличие связи терминала с торговым сервером решит эти недоразумения.

В остальном стабильность работы сокетов радует.

Добавлено:

Один черт таки проскакивают от сервера сообщения с нулевыми объемами позиций, что не есть правда, не пойму как такое происходит и где эти нули берутся..

2018.02.10 17:42:49.549 signalclient (USDCHF,M15)       connect OK
2018.02.10 17:42:49.555 signalclient (USDCAD,M15)       connect OK
2018.02.10 17:42:49.555 signalclient (NZDUSD,M15)       connect OK
2018.02.10 17:42:49.555 signalclient (USDJPY,M15)       connect OK
2018.02.10 17:42:49.581 signalclient (AUDUSD,M15)       connect OK
2018.02.10 17:42:49.582 signalclient (GBPUSD,M15)       connect OK
2018.02.10 17:42:49.596 signalclient (EURUSD,M15)       connect OK
2018.02.10 17:42:50.562 signalclient (USDCHF,M15)       received msg from server: <<USDCHF|0.00>>
2018.02.10 17:42:50.562 signalclient (NZDUSD,M15)       received msg from server: <<NZDUSD|0.00>>
2018.02.10 17:42:50.562 signalclient (NZDUSD,M15)       server position: NZDUSD|0.00
2018.02.10 17:42:50.562 signalclient (USDJPY,M15)       received msg from server: <<USDJPY|0.00>>
2018.02.10 17:42:50.562 signalclient (USDCHF,M15)       server position: USDCHF|0.00
2018.02.10 17:42:50.562 signalclient (USDCAD,M15)       received msg from server: <<USDCAD|0.00>>
2018.02.10 17:42:50.562 signalclient (USDJPY,M15)       server position: USDJPY|0.00
2018.02.10 17:42:50.562 signalclient (USDCAD,M15)       server position: USDCAD|0.00
2018.02.10 17:42:50.574 signalclient (USDCAD,M15)       full close position
2018.02.10 17:42:50.575 signalclient (USDJPY,M15)       nothing change
2018.02.10 17:42:50.575 signalclient (NZDUSD,M15)       full close position
2018.02.10 17:42:50.577 signalclient (USDCHF,M15)       nothing change
2018.02.10 17:42:50.593 signalclient (AUDUSD,M15)       received msg from server: <<AUDUSD|0.00>>
2018.02.10 17:42:50.593 signalclient (AUDUSD,M15)       server position: AUDUSD|0.00
2018.02.10 17:42:50.594 signalclient (GBPUSD,M15)       received msg from server: <<GBPUSD|0.00>>
2018.02.10 17:42:50.594 signalclient (GBPUSD,M15)       server position: GBPUSD|0.00
2018.02.10 17:42:50.600 signalclient (GBPUSD,M15)       full close position
2018.02.10 17:42:50.601 signalclient (AUDUSD,M15)       full close position
2018.02.10 17:42:50.609 signalclient (EURUSD,M15)       received msg from server: <<EURUSD|0.00>>
2018.02.10 17:42:50.609 signalclient (EURUSD,M15)       server position: EURUSD|0.00
2018.02.10 17:42:50.613 signalclient (EURUSD,M15)       nothing change
2018.02.10 17:42:50.701 signalclient (USDCAD,M15)       CTrade::OrderSend: market sell 3.54 USDCAD [market closed]
2018.02.10 17:42:50.701 signalclient (NZDUSD,M15)       CTrade::OrderSend: market sell 2.50 NZDUSD [market closed]
2018.02.10 17:42:50.705 signalclient (GBPUSD,M15)       CTrade::OrderSend: market sell 0.10 GBPUSD [market closed]
2018.02.10 17:42:50.705 signalclient (AUDUSD,M15)       CTrade::OrderSend: market buy 1.27 AUDUSD [market closed]

Если бы не закрытый рынок позиции схлопнулись бы, зачем-то..

З.Ы.: и такое через раз, раз перегрузишь терминалы - нормально всё, как и должно, а другой - позакрывает всё в ноль..

Алексей ( @o_o ) подскажи, если знаешь, куда копать, плиз.

Последующая перезагрузка терминалов, и никаких проблем, всё отработало как и должно..

2018.02.10 17:51:17.896 signalclient (EURUSD,M15)       close socket
2018.02.10 17:51:17.896 signalclient (AUDUSD,M15)       close socket
2018.02.10 17:51:17.896 signalclient (USDJPY,M15)       close socket
2018.02.10 17:51:17.898 signalclient (USDCAD,M15)       close socket
2018.02.10 17:51:17.899 signalclient (NZDUSD,M15)       close socket
2018.02.10 17:51:17.900 signalclient (GBPUSD,M15)       close socket
2018.02.10 17:51:17.901 signalclient (USDCHF,M15)       close socket
2018.02.10 17:52:02.337 signalclient (AUDUSD,M15)       connect OK
2018.02.10 17:52:02.340 signalclient (USDCHF,M15)       connect OK
2018.02.10 17:52:02.340 signalclient (USDCAD,M15)       connect OK
2018.02.10 17:52:02.432 signalclient (EURUSD,M15)       connect OK
2018.02.10 17:52:02.481 signalclient (GBPUSD,M15)       connect OK
2018.02.10 17:52:02.481 signalclient (NZDUSD,M15)       connect OK
2018.02.10 17:52:02.665 signalclient (USDJPY,M15)       connect OK
2018.02.10 17:52:03.350 signalclient (AUDUSD,M15)       received msg from server: <<AUDUSD|-1.27>>
2018.02.10 17:52:03.350 signalclient (USDCHF,M15)       received msg from server: <<USDCHF|0.00>>
2018.02.10 17:52:03.350 signalclient (USDCHF,M15)       server position: USDCHF|0.00
2018.02.10 17:52:03.350 signalclient (USDCAD,M15)       received msg from server: <<USDCAD|3.54>>
2018.02.10 17:52:03.350 signalclient (AUDUSD,M15)       server position: AUDUSD|-1.27
2018.02.10 17:52:03.350 signalclient (USDCAD,M15)       server position: USDCAD|3.54
2018.02.10 17:52:03.360 signalclient (AUDUSD,M15)       nothing change
2018.02.10 17:52:03.360 signalclient (USDCAD,M15)       nothing change
2018.02.10 17:52:03.360 signalclient (USDCHF,M15)       nothing change
2018.02.10 17:52:03.444 signalclient (EURUSD,M15)       received msg from server: <<EURUSD|0.00>>
2018.02.10 17:52:03.444 signalclient (EURUSD,M15)       server position: EURUSD|0.00
2018.02.10 17:52:03.449 signalclient (EURUSD,M15)       nothing change
2018.02.10 17:52:03.492 signalclient (GBPUSD,M15)       received msg from server: <<GBPUSD|0.10>>
2018.02.10 17:52:03.492 signalclient (NZDUSD,M15)       received msg from server: <<NZDUSD|2.50>>
2018.02.10 17:52:03.492 signalclient (NZDUSD,M15)       server position: NZDUSD|2.50
2018.02.10 17:52:03.492 signalclient (GBPUSD,M15)       server position: GBPUSD|0.10
2018.02.10 17:52:03.498 signalclient (NZDUSD,M15)       nothing change
2018.02.10 17:52:03.498 signalclient (GBPUSD,M15)       nothing change
2018.02.10 17:52:03.679 signalclient (USDJPY,M15)       received msg from server: <<USDJPY|0.00>>
2018.02.10 17:52:03.679 signalclient (USDJPY,M15)       server position: USDJPY|0.00
2018.02.10 17:52:03.683 signalclient (USDJPY,M15)       nothing change
 

копать в сервере. там где он определяет сколько у него открыто лотов по символу

Добавить проверки на ошибки MQL функций запроса позиций и т.д.

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