написал систему поставки сигналов в MT4 - тестирование, обсуждение

 

Для одной компании я написал систему автоматической поставки сигналов (надеюсь, меня не будут ругать за рекламу).

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

Опытные преподаватели компании торгуют на своих счетах и предоставляют клиентам рекомендации по сделкам. Раньше они отправляли эти рекомендации при помощи по e-mail рассылки, теперь после совершения сделки спустя несколько секунд клиенты получают сигнал о ней в своем торговом терминале MT4. Клиент может по своему усмотрению исполнить сигнал, предварительно скорректировав такие параметры, как величина лота, цена открытия, Stop Loss и Take Profit. Автоматического исполнения сигналов нет и не будет, клиент должен сам принимать решение о совершении сделки. Было требование реализовать клиентскую часть средствами языка MQL4 без применения внешних библиотек и API.

Предлагаю вашему вниманию то, что получилось (в приложении к этому сообщению находится советник, а также, инструкция по его запуску и использованию, есть видеоинструкция). Сейчас проводится публичное тестирование. Любой желающий может принять участие в нем, для этого нужно загрузить советник и запустить его в своем терминале MT4. Для каждого торгового счета сигналы поставляются в течении 30 дней (для клиентов, имеющих реальные счета в этой компании с депозитом не менее минимально необходимого, подписка на сигналы постоянная). Задавайте вопросы; сообщайте о найденных ошибках; предлагайте варианты по улучшению, повышению удобства; пишите отзывы.

Что мне не нравится (слабые места).

1. Советник долго запускается и долго завершает работу (несколько секунд). Это связано с тем, что для получения информации о нажатии пользователем на графические объекты используется индикатор (он отслеживает активность пользователя и передает советнику). Индикатор автоматически присоединяется к графику советником с помщью шаблона. Это занимает сравнительно большое время (около 0.2 секунды на каждый график).

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

  1.2. Если закрыть термнал MT4 с работающим советником, он не успеет убрать за собой индикаторы и графические объекты.

  1.3. Индикатор не удалось вложить в советник в качестве ресурса (точнее, вложить удалось, но не удалось запустить). Поэтому пользователю для того, чтобы запустить советник, приходится копировать два файла, вместо одного (а это в два раза сложнее, учитывая то, что многие пользователи с компьютером на "вы").

2. Неудобная навигация и поиск сигналов - приходится просматривать поочередно все графики чтобы найти сигнал. В будущем (если будет целесообразно), возможно, будет реализован показ списка торговых систем по щелчку на значке сервера. В этом списке можно будет включать/выключать поставку сигналов по каждой ТС (сейчас это сделано в параметрах советника). При щелчке по названию ТС будет показан список сигналов, при щелчке по сигналу будет осуществлен переход к графику с сигналом.

3. Некоторые торговые системы имеют русские названия. Файлы изображений и звуков, относящиеся к каждой ТС имеют имена, соответствующие названиям ТС. В MT4 после build 765 не поддерживаются русские буквы в именах ресурсов. Прийдется изменить присвоение имен файлам для компиляции в новых версиях.

Файлы:
subscriber.zip  3584 kb
 
Инструкция по использованию.
Файлы:
 

Если скорость не критична, то через WebRequest вы можете копировать и штатные сигналы (абсолютно бесплатно): опрашивайте изменение позиций нужного сигнала, например, раз в секунду. Проблема только одна - нарваться на автоматический бан за слишком частое обращение к MQL5.com.

Для сигналов с высоким МО - вплоне хак. А для сигналов с низким МО скорость критична, поэтому для улучшения показателей штатного сигнального сервиса, подписывался бы на демо, а с демо копировал торговлю своим копировщиком не через маркеты, а через лимитные ордера. Прошу прощения за оффтоп.

 

Кстати, вы замеряли latency своего решения? Сравнивали с latency штатного сервиса сигналов

 

Скорость не критична, так как большинство сигналов - среднесрочные и долгосрочные.

Спасибо за предложение по штатным сигналам, но пока такой надобности нет, была задача транслировать только сигналы преподавателей компании.

Что вы подразумеваете под latency - я не знаю. Советник сейчас обращается на сервер с интервалом 20 секунд (этот параметр можно менять на сервере сигналов) - это определяет максимальную задержку в получении сигнала.

Среднее время от отправки запроса до получения ответа функцией WebRequest составляет примерно 64 мс, максимальное время ожидания ответа - 500 мс (если в течении этого времени не поступит ответ, будет считаться, что нет связи).

 
latency - в каком диапазоне варьируется интервал времени от открытия мастер-позиции до ее непосредственного копирования: открытия слэйв-позиции. latency штатных сигналов не знаю. Может, кто измерял.
 
Для штатных сигналов - не измерял, для сигналов упомянутой выше ситемы - максимальная задержка составляет чуть больше 20 секунд. В случае необходимости можно сделать меньше (более частые обращения советника на сервер), или больше (если будет большая нагрузка на сервер). Как я уже писал, частота обращений советника указывается на сервере и может быть изменена.
 

4 Mb?

что то тяжелый експерт получился

 
wlad:

4 Mb?

что то тяжелый експерт получился

В нем много картинок и звуков.
 
hrenfx:

через WebRequest вы можете копировать и штатные сигналы (абсолютно бесплатно): опрашивайте изменение позиций нужного сигнала, например, раз в секунду.


Вы имеете ввиду получение информации о текущих сделках со страницы сигнала (в том случае если поставщик сигнала показывает свои сделки)? Или использование того протокола, который используется в MT4 для получения данных при копировании сигнала?
 
zdd:
Вы имеете ввиду получение информации о текущих сделках со страницы сигнала (в том случае если поставщик сигнала показывает свои сделки)? Или использование того протокола, который используется в MT4 для получения данных при копировании сигнала?
Вы можете с задержкой в секунду (разработчики не предусмотрели специальный лаг) видеть появление новой (или закрытие) позиции: символ, лот и направление. Время и цену открытия не светят, но это и ни к чему. Т.к. постоянно мониторя соответствующую страничку сигнала, вы и так узнаете, в какое время и по какой цене было открытие. Так что есть все для копирования штатных сигналов с высоким МО бесплатно.
 
hrenfx:
Вы можете с задержкой в секунду (разработчики не предусмотрели специальный лаг) видеть появление новой (или закрытие) позиции: символ, лот и направление. Время и цену открытия не светят, но это и ни к чему. Т.к. постоянно мониторя соответствующую страничку сигнала, вы и так узнаете, в какое время и по какой цене было открытие. Так что есть все для копирования штатных сигналов с высоким МО бесплатно.
Не сможет. Бан по ай-пи будет. Хотя если мониторить раз в минут 15, то возможно будет все нормально
Причина обращения: