Как создать советника (ex4) с ограничениями по сроку работы и количеству запусков.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexandr
284
Alexandr  

Подскажите, как создать советника с ограничениями:

- срок работы;

- количество запусков.

Также интересно узнать какие еще существуют варианты ограничений?

Figar0
5196
Figar0  
Боюсь ограничение по кол-ву запусков никак, ну или почти никак ... Можно по номеру счета, типу счета (например только демо), только тестер, времени использования... А как - дополнительным условием перед выполнением основного кода эксперта.


Напр. if (!IsDemo() || !IsTesting()) return(0);
Dmitry Fedoseev
51181
Dmitry Fedoseev  
По количеству запусков есть варианты: 1-файл создать в какой-нибудь папке windows, или несколько файлов в разных папках, чтобы понять сложнее было. 2 - делать запись в реестр windows. Во всех случаях переустановка windows позволит советнику работать. Обновить системный диск c образа дело нескольких минут, так что делать такую защиту наверно не имеет смысла.
Alexandr
284
Alexandr  
Figar0 писал (а):
Боюсь ограничение по кол-ву запусков никак, ну или почти никак ... Можно по номеру счета, типу счета (например только демо), только тестер, времени использования... А как - дополнительным условием перед выполнением основного кода эксперта.


Напр. if (!IsDemo() || !IsTesting()) return(0);

Спасибо! Это интересно, подумаю.
Alexandr
284
Alexandr  
Integer писал (а):
По количеству запусков есть варианты: 1-файл создать в какой-нибудь папке windows, или несколько файлов в разных папках, чтобы понять сложнее было. 2 - делать запись в реестр windows. Во всех случаях переустановка windows позволит советнику работать. Обновить системный диск c образа дело нескольких минут, так что делать такую защиту наверно не имеет смысла.

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

Также, спасибо за помощь !
Figar0
5196
Figar0  
Integer писал (а):
По количеству запусков есть варианты: 1-файл создать в какой-нибудь папке windows, или несколько файлов в разных папках, чтобы понять сложнее было. 2 - делать запись в реестр windows. Во всех случаях переустановка windows позволит советнику работать. Обновить системный диск c образа дело нескольких минут, так что делать такую защиту наверно не имеет смысла.
Ну есть еще один вариант:) - с авторизацией каждого запуска на сервере продавца, переустановка системы вряд ли поможет...  Но остается "лом".
Shashev Sergei
258
Shashev Sergei  
Какая интересная тема :) Сам думаю над этой проблемой.
Если просто сделать ограничение по времени - то можно хотя бы так:

   if ( (Month()>3) || (Year()!=2007) )
   {
      Comment("Демонстрационное время советника вышло!");
      Alert("Демонстрационно время работы советника вышло");      
      return;
   }


Однако в Windows ничего не стоит отмотать календарик, не пойдет :) Ограничение на количество записей можно организовать только через работу с файлами, как правильно заметил матерый Integer
Как
вариант - можно логику советника запрограммировать в dll. А ограничение по времени через системные функции С++ реализовать.

Но дизассемблером такая защита снимается, хотся для этого нужны квалифицированные взломщики.
Самый реальный вариант - это работа через сервер, на котором крутится советник, отдающий сигналы в клиентскую часть. ЭТо очень сложно сломать :)
А кто-нибудь пробовал так делать ?
Integer , может просвятите народ о способах защиты?
Vyacheslav
46
Vyacheslav  
"...Однако в Windows ничего не стоит отмотать календарик, не пойдет :)..."
а разве терминал не запрашивает дату и время с сервака?
вот же, из хэлпа:

int Month( )
Возвращает номер текущего месяца (1-Январь,2,3,4,5,6,7,8,9,10,11,12), т.е. номер месяца последнего известного времени сервера.
Замечание: при тестировании последнее известное время сервера моделируется.

вот тоже для года:

int Year( )
Возвращает текущий год, т.е. год последнего известного времени сервера.
Замечание: при тестировании последнее известное время сервера моделируется.

имхо как раз такой вариант и пойдет и календарик можно крутить скока влезет - не сработает...
Dmitry Fedoseev
51181
Dmitry Fedoseev  
   if(Time[0]>StrToTime("2006.12.31")){
      Alert("Демо! время закончилось");
      return(0);
   }

Я так делаю
Igor Kim
2728
Igor Kim  

Задумайтесь, а действительно-ли у Вас есть нечто такое, что достойно защиты...
Женщина одна умная мне сказала, что самомнение у мужчин размером с маленькую галактику. Я тогда посмеялся, а сейчас мне грустно. ..

Был период в моей жизни, когда тоже ломал голову над способами защиты. А потом понял простую вещь, что лучшая защита - это её отсутствие. Открытость не сломаешь. А продавать нужно не программу, а отношение. За отношение клиент платит любые деньги.

Prival
4633
Prival  

KimIV. Все хорошо, но только до той поры пока ты не узнаешь, что твоя программа перепродается и за большие деньги, этим твоим клиентом с которым ты так доверительно общаешься :(. Может правда к программам разработанным для FOREX это не относится, т.к. мой печальный опыт был совершенно не связан с FOREX, но я так думаю, если люди увидят возможность заработать, то они заработают, а потом еще и посмеются над тобой. Вот тогда действительно начнешь задумываться над защитой своего ПО

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий