Работа эксперта через удаленный сервер.

 
Много раз всплывала тема о защищенности кода советника, о том как это сделать предложений было масса, но вот реализации толковой никто не выдал.

Ставим задачу.
1. Есть советник, прибыльный или нет не суть важна.
2. Есть куча народу которые хотят его попробывать.
3. Реальный советник пишет сигналы на сервер
4. Советник у "народа" эти сигналы забирает и торгует.

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

3) Запись сигналов или как в моём случае передача внутренних настроек через сервер посредству файла. Можно конечно закрутить это еще более хитроумными спосабами, но некчему это.

4) Выполняя торговые функции, модифицируя открытые ордера, эксперт является независимым, т.е. даже если по какой-то причине нету связи с сервером, эксперт доведет каждую открытую сделку.

Данная практика подобной торговли реализована тут, на данный момент это еще бета-тестирование, но тем неменее уже рабочий вариант.

Чем удобно именно подобное тестирование, тем что можно не опасаться за воравство исходного кода. Передовать пользователю эксперта можно в открытом коде, т.к. в эксперте есть только торговые функции и т.д. А эту информацию можно найти в справочнике MQL4.

Если кому-то интересно сама реализация, тонкости в настройки пишите в этой ветке. Обсудим. Возможно даже новые мыли какие-то напишем и запустим.
 
Как вариант, есть такое решение, которое я уже неоднократно проверял в реалтайме.

1. Заводим отдельный торговый счёт.
2. На него у себя ставим своего советника.
3. Пользователям сигналов этого советника даём номер счёта и инвест-пароль и даём им программу SyncroTrade (она платная).
4. Пользователи ставят у себя программу SyncroTrade и получают возможность копировать сигналы торгового советника на свой торговый счёт.
 
Вопрос - как происходит обработка времени задержки сигнала на установку ордера? тоесть предположим индикатор (сервер) выдал сигнал на покупку (допустим Period M15), но советник получил сигнал с задержкой в 10 минут , тоесть в рынок входить уже позно .... как советник "у клиента" обрабатывает эту задержку?
 

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

к примеры

if (Signal==1) BUY
if (Signal==-1) SELL

Как раз под 1 или -1 и заключается весь алгоритм расчета.
Сделки у пользователей при этом совершаются одновременно что и на родительском счете.

 
HIDDEN:

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

к примеры

if (Signal==1) BUY
if (Signal==-1) SELL

Как раз под 1 или -1 и заключается весь алгоритм расчета.
Сделки у пользователей при этом совершаются одновременно что и на родительском счете.


Честно сказать не понял как это? Вы собираетесь передавать условие входа в рынок?
 
Именно условия, так же можно передавать любые настройки и параметры, ограничений нет никаких.
 
HIDDEN:
ограничений нет никаких.
Включая удаленное управление компьютером клиента :-)) (это так к слову)
А по сути - передавать условие входа в рынок например: - условие1 - if(signal == 1) {..........} значение переменной Signal передается с сервера? если да то мой первый вопрос в силе, если же индикатор (или несколько) находится у клиента и передается условие анализируещее этот индикатор, то вопрос - сколько должно быть типов условий что бы их вообще имело смысл передавать? (ведь судя по замыслу условия для входа должны быть каждый раз разные иначе очень легко сохранить передаваемые сервером условия, а потом просто вставить их в советник клиента....... и зачем тогда сервер? )
 
Параметр Signal формируется и посылается на сервер после проведенного анализа полноценного эксперта, который работает у меня. Вставлять в код жестко 1, -1, 0 и. т.д. смысла нет, эти параметры меняются достаточно часто. А вот запрос от клиента на сервер, частоту запросов можно регулировать, скажем 1 раз в час, в сутки, в неделю. Получив этот параметр эксперт уже может торговать. именно по этому параметру.
 
HIDDEN:
Параметр Signal формируется и посылается на сервер после проведенного анализа полноценного эксперта, который работает у меня. Вставлять в код жестко 1, -1, 0 и. т.д. смысла нет, эти параметры меняются достаточно часто. А вот запрос от клиента на сервер, частоту запросов можно регулировать, скажем 1 раз в час, в сутки, в неделю. Получив этот параметр эксперт уже может торговать. именно по этому параметру.
Было бы лучше, чтобы разработчики добавили в MQL функции для обмена информацией по TCP/IP, хотя бы в виде текстовых сообщений. А для пущей безопасности можно было бы разрешение давать только в том случае, если пользователь прописал ip адрес и порт самостоятельно, так же, как и для отправки почты или файлов по FTP.

Для этого нужно, чтобы терминал мог выступать в качестве сервера, т.е. принимать информацию по какому нибудь сокету и выдавать ее всем установленным на нем советникам. Например: "333 EURUSD Buy 1.0" т.е. советнику, который стоит на чарте евробакса с магическим номером 333 надо встать в длинную позу на 1 лот на EURUSD. Ну, а в советниках предусмотреть функцию отправки на определенный адрес:порт сервера. Например, строчку "333 EURUSD Buy 1.0 OK", т.е. советник прикупил 1 лот успешно (если приказ не прошел, то чтобы сообщал серверу номер ошибки").
 

Похожая технология уже обсуждалось и кто-то выкладывал рабочее решение. Если память не изменяет, обмен сигналами там шел через FTP. Поищите по форуму.

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