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

 

Приветствую всех.

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

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

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

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

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

Как не допустить запуска на тестере по котировкам за последний месяц ?

Что предложите делать, коллеги ?

 
Скажу больше! немного вникнув в WINAPI можно написать утилиту которая будет барабанить по кнопке "старт" в тестере, сохранять отчет и считывать оттуда новые сделки. Ну а дальше просто дублировать сделки в терминале.
 

Да, Дмитрий, это можно сделать даже без WinAPI, только с помощью скрипта на AutoIT.

При этом неуютно начинают себя чувствовать не только советники, которые работают на дневках, но даже советники, которые работают на пятиминутках.

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

Идея у меня - каким-то образом получить из тестера реальное время последних котировок из терминала. Но, пока не приложу ума, как это сделать. К тому же, очень не хочется связываться с дополнительными самописными DLL, они также "отпугивают" клиентов.

 
George Merts:

Да, Дмитрий, это можно сделать даже без WinAPI, только с помощью скрипта на AutoIT.

При этом неуютно начинают себя чувствовать не только советники, которые работают на дневках, но даже советники, которые работают на пятиминутках.

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

Идея у меня - каким-то образом получить из тестера реальное время последних котировок из терминала. Но, пока не приложу ума, как это сделать. К тому же, очень не хочется связываться с дополнительными самописными DLL, они также "отпугивают" клиентов.

Дата в терминале не переводится. TimeCurrent() выдает последнее время сервера. от него и надо плясать. 
 
Dmitiry Ananiev:
Дата в терминале не переводится. TimeCurrent() выдает последнее время сервера. от него и надо плясать. 

Так ведь TimeCurrent() в тестере моделируется... Или я чего-то не понимаю? Нужно ведь из тестера узнать реальное текущее время.

 

По идее, можно заморочиться с WebRequest, запрашивая реальное текущее время с какого-то сервера (в т. ч. со своего). А требованием для теста стратегии будет внесение адреса этого сервера в терминале. 

 
Игорь Герасько:

Так ведь TimeCurrent() в тестере моделируется... Или я чего-то не понимаю? Нужно ведь из тестера узнать реальное текущее время.

Из тестера можно узнать текущее время компьютера.

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

По идее, можно заморочиться с WebRequest, запрашивая реальное текущее время с какого-то сервера (в т. ч. со своего). А требованием для теста стратегии будет внесение адреса этого сервера в терминале. 

WebRequest в тестере стратегий не выполняется.
 

George Merts:

Следовательно, необходимо в тестере получить текущую дату, и позволять работать советнику только до даты, на месяц меньше.

--

[]...попался ушлый пользователь, который, как оказалось, переводит время на компьютере вперед, и спокойно считывает из тестера совершенные сделки.

Получать время у третьей, независимой стороны - либо через DLL, либо WebRequest-ом, как советовали выше. Других вариантов, подозреваю что нет.
 
Igor Konyashin:
Получать время у третьей, независимой стороны - либо через DLL, либо WebRequest-ом, как советовали выше. Других вариантов, подозреваю что нет.
WebRequest, как выяснилось, в тестере стратегий неприменим. Да, очень печально, но пока кроме самописной DLL и придумать-то нечего... А ведь казалось бы - надо просто знать дату последней полученной реальной котировки терминала...
 
George Merts:

Из тестера можно узнать текущее время компьютера.

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

Так и я о том же. Только вот TimeCurrent() тоже не подходит в тестере.
WebRequest в тестере стратегий не выполняется.
Не знал. Спасибо за инфу.
 
Игорь Герасько:
Так и я о том же. Только вот TimeCurrent() тоже не подходит в тестере.
TimeCurrent() - вобще не проходит, оно же возвращает не текущее время компьютера, а время котировки, которое зависит от настроек тестера стратегий.
 
George Merts:
TimeCurrent() - вобще не проходит, оно же возвращает не текущее время компьютера, а время котировки, которое зависит от настроек тестера стратегий.
а какие настройки надо вставить и где ? что-то nы заморочился совсем. TimrCurrent() время сервера. В тестере - это время прихода тиков по времени сервера. Сколько пишу  совов к локальному времени компьютера не разу не привязывался.