Как защититься от копирования длительных сделок из тестера - страница 6

 
Alexey Viktorov:
 

...Ровно за месяц до окончания теста. И хоть куда переводи время компа... результат останется прежним, за месяц до окончания теста.

Но если нет вариантов узнать дату окончания теста, то и идея несбыточная.

Да, еще один вариант - это знать точную дату окончания теста. В этом случае - тоже все нормально, но как узнать-то эту дату ?
 
George Merts:

Ну как сказать... Когда-то уже была и ситуация с перепродажей сигналов, и сейчас есть клиенты, которые используют эту ТС для работы на своих ПАММах.

ТС не сильно "супер-пупер-прибыльная", однако, ее стабильность весьма высока.  А главное - возможность копирования сделок из тестера не нравится ее автору. И он предлагает мне, как программисту, подумать над возможностями решения этой проблемы.

Ну, разве что это чисто техническая задача. Но с точки зрения заказчика она все равно останется глупостью. 

 
George Merts:
Да, еще один вариант - это знать точную дату окончания теста. В этом случае - тоже все нормально, но как узнать-то эту дату ?

Дату окончания теста можно поставить в будущем, не катит.

 

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

 
Если так серьезно, можно откуда-нибудь с интернета брать время. 
 
George Merts:

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

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

Искусственно запрещать тест на последних N-баров. 
 
Dmitry Fedoseev:
Если так серьезно, можно откуда-нибудь с интернета брать время. 
Говорят, что WebRequest в тестере не работает...
 
Vitalie Postolache:
Интересно, а автор данной ветки может привести хоть один пример, когда кто-то смог воспроизвести по результатам тестирования сделки на реале и заработать при этом? Имея только демо-советника в тестере и ничего больше?
Если задаться целью, то можно и скальперские стратегии так копировать. Что мешает отслеживать сигнал из тестетра каждые 2-3 секунды ? 
 
Dmitiry Ananiev:
Если задаться целью, то можно и скальперские стратегии так копировать. Что мешает отслеживать сигнал из тестетра каждые 2-3 секунды ? 
То, что это ТЕСТЕР, он априори в прошлом работает и сколько ни тужься, не сможешь повторить сделку по тем же условиям и в то же время. Но если это не пипсовка, а долгосрок, тогда действительно кто-то может и додуматься так делать, хотя смысла всё равно мало, проще разгадать стратегию и повторить.
 
Игорь Герасько:
Говорят, что WebRequest в тестере не работает...
Попробовал сейчас. Работает. Пробовал в МТ4 в тестере, в эксперте.
 
George Merts:
...

Проблема не так проста как может показаться в начале. Можно предложить следующее (следите за мыслью):

  1. Эксперт компилируется с зашитой в него текущей датой.
  2. Пользователь получает эксперт и запускает его в тестере стратегий.
  3. При первом прогоне эксперт торгует в тестере стратегий до даты защитой в него (или за месяц до этой даты, условия - на усмотрение автора).
  4. После даты указанной в нем, он продолжает получать котировки, запоминая время последней пришедшей котировки в тестере стратегий, но не совершая торговых действий.
  5. По окончанию тестирования, он записывает запомненное последнее время в специальный файл.
  6. Сама запись зашифрована и следовательно нельзя заменить ее содержимое таким образом, что бы при расшифровки записи она указывала на дату в будущем.
  7. При последующем запуске в тестере стратегий, эксперт прочтет этот файл, расшифрует его содержимое и поймет, что уже запускался по крайней мере до даты, указанной в нем.
  8. Далее дело техники, во второй и следующие прогоны он продолжает торговать до даты указанной в файле минус один месяц.
  9. При этом получая все более новые даты в тестере стратегий или на реале, он будет постоянно автоматически двигаться вслед за новой историей, держа дистанцию один месяц.

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

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

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

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