Скачать MetaTrader 5

Высоконадежный копировщик сделок/сигналов (обсуждение идеологии и разработка)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй программу в Маркете и продавай ее миллионам трейдеров!
o_o
Модератор
23690
o_o 2012.02.15 14:45 
По сабжу интересуют варианты синхронизации (передачи ордеров) терминалов
- локально
- удаленно

планирование делаем сразу в режиме один сервер - много клиентов.

при этом необходимо уделить внимание таким аспектам как
- вариант канала связи (файлы, память для локального; сокеты, http, промежуточный сервер и т.д для удаленного)
- отсутствие нагрузки на канал связи (особенно актуально для удаленной синхронизации)
- отказоустойчивость (восстановление канала в случае его потери)
- переинициализация самого эксперта в случае сбоя терминала/ОС
- недублирование/неудаление сделок при потере/восстановлении связи
и т.д.

также необходимо продумать две идеологии
- синхронизация на уровне наличия ордеров
- синхронизация на уровне отправки сигналов открытия/закрытия ордеров

по каждому предложению желательно расписать плюсы и минусы этого варианта

Хотелось бы с помощью обсуждения прийти к оптимальному решению надежности/простоте системы.

Кодинг и тестирование беру на себя.

Результаты по согласию можно выложить в кодебазу.
Рустам
3597
Рустам 2012.02.15 15:51  

Ок. Для начала нужно разделить задачи (тип эксперта) на коммерческую (через сеть), и условно некоммерческий вариант (внутри одной ОП системы).

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

Внутрисистемный - связь: маппинг, ибо скорость и надежность.

Так как терминал будет удерживать либку до своего падения, или закрытия - это будет показателем состояния самого МТ (слейва)

И протокол будет выглядеть примерно так :

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

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

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

При выгрузке (правильной) слейв должен ообщить об этом.

В свою очередь любой из слейвов может контролировать состояние мастера и принимать необходимые меры для его поднятия или подачи аварийного сигнала.

В общем около того.

Относительно связи через сеть - позже.

Комбинатор
15919
Комбинатор 2012.02.15 15:54  
Делай коммерческую версию и толкай.
Рустам
3597
Рустам 2012.02.15 15:57  
TheXpert:
Делай коммерческую версию и толкай.

Это вы мне ?
Комбинатор
15919
Комбинатор 2012.02.15 15:59  
FAQ:
Это вы мне ?
Если вы топикстартер, то да :)
o_o
Модератор
23690
o_o 2012.02.15 16:03  
FAQ:

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

При выгрузке (правильной) слейв должен ообщить об этом.

эти строки мне напомнили про необходимость обсуждение двух режимов работы

ордерной синхронизации на уровне ордер мастера->ордер клиента. И сигнальной синхронизации на уровне сигнал мастера->сигнал клиенту (нужна ли БД сигналов, подтверждление приема от клиента и т.д)

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

o_o
Модератор
23690
o_o 2012.02.15 16:04  
TheXpert:
Делай коммерческую версию и толкай.

толкать ничего не хочу и не буду. Делаю средство, а не цель. Делаю для всех.
Рустам
3597
Рустам 2012.02.15 16:24  
sergeev:

эти строки мне напомнили про необходимость обсуждение двух режимов работы

ордерной синхронизации на уровне ордер мастера->ордер клиента. И сигнальной синхронизации на уровне сигнал мастера->сигнал клиенту (нужна ли БД сигналов, подтверждление приема от клиента и т.д)

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


Не надо усложнять, достаточно в определенный промежуток (скажем раз в секунду) посылать контрольный сигнал клиенту, и если он не ответил, уж тогда и действовать.
Sergey Novokhatskiy
4758
Sergey Novokhatskiy 2012.02.15 16:27  
sergeev:

толкать ничего не хочу и не буду. Делаю средство, а не цель. Делаю для всех.

уважаю таких людей, так держать!!!
o_o
Модератор
23690
o_o 2012.02.15 16:28  
Не надо усложнять, достаточно в определенный промежуток (скажем раз в секунду) посылать контрольный сигнал клиенту, и если он не ответил, уж тогда и действовать.
это ты все говоришь про сигнальное оповещение от сервера на клиента? надо подробный механизм процесса жизни сигнала и его передачи приема. С такой системой я не сталкивался ни разу. Только ордерное копирование.
Dmitry Fedoseev
42884
Dmitry Fedoseev 2012.02.15 16:28  
Все уже придумано, но извините не забесплатно.
123456789
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий