Защита кода советника

Zeliboba

Интересующийся
Дорогие друзья поделитесь скриптом или частью котом который можно вживить в советник для его защиты
То есть привязка советника к определенному номеру счета или брокеру
Если есть какие варианты при помощи сервера пишите
Не судите строго я новичок в этом деле ))
 

AlexeNP

Гуру форума
если AccountInfoInteger(ACCOUNT_LOGIN) не равен какому-то заданному, то делаешь выход из OnInit с ошибкой
 

ИванМН

Местный знаток
Если нужна именно защита кода от декомпиляции, то сервис "Cloud Protector" в МетаЭдиторе. Но для использования этой функции у Вас должен иметься эккаунт на сайте mql5.
 

FEEX

Местный житель
Код:
void OnTick()
{
   int Number = AccountNumber(); // получить номер счета
   if (Number  != 1234567)       // сравнить его с заданным, и если не равен,
   {
      Comment("Работа на счете ",Number," запрещена!");   // вывести комментарий о запрете работы
      return;     // принудительно завершить работу
   }
   // ... дальнейший код советника
}
Дорогие друзья поделитесь скриптом или частью котом который можно вживить в советник для его защиты
То есть привязка советника к определенному номеру счета или брокеру
Если есть какие варианты при помощи сервера пишите
Не судите строго я новичок в этом деле ))
 

FEEX

Местный житель
вопрос по данной защите:
Код:
extern int Parol = 12345;     // поле для ввода ключа
//
bool Check()  {                                
   int Key=AccountNumber()*2+1000001;  // Вычисляем ключ
   if (Parol==Key) return(true); // Если пароль верный, то..    
   Alert("Неправильный пароль. Эксперт не работает.");
   return(false);
}
//
int OnTick() {
   //
   if(Check()==false) return;                      
   //------------------------------------------ 3 -- основной код ниже
При не правильном вводе пароля срабатывает алерт, но сигналит просто без остановки. Как ограничить кол-во активаций алерта? Например, один раз сработал и всё.
Или, как вариант, как заменить алерт на Comment, чтобы вместо алерта на экране выводилось сообщение об ошибке?
Если можно, именно сам КОД нарисуйте)
 
Последнее редактирование:

FEEX

Местный житель
вопрос по данной защите:
Код:
extern int Parol = 12345;     // поле для ввода ключа
//
bool Check()  {                               
   int Key=AccountNumber()*2+1000001;  // Вычисляем ключ
   if (Parol==Key) return(true); // Если пароль верный, то..   
   Alert("Неправильный пароль. Эксперт не работает.");
   return(false);
}
//
int OnTick() {
   //
   if(Check()==false) return;                     
   //------------------------------------------ 3 -- основной код ниже
При не правильном вводе пароля срабатывает алерт, но сигналит просто без остановки. Как ограничить кол-во активаций алерта? Например, один раз сработал и всё.
Или, как вариант, как заменить алерт на Comment, чтобы вместо алерта на экране выводилось сообщение об ошибке?
Если можно, именно сам КОД нарисуйте)
Никто не подскажет вариант решения моего вопроса?
 

ИванМН

Местный знаток
Никто не подскажет вариант решения моего вопроса?
Потому что у Вас обращение к функции проверки ключа идёт на каждом тике, а, поскольку внешняя переменная Parol не меняется, а проверка производится на каждом тике, и она заканчивается неудачно, то и выдаётся алёрт.
Вместо

if(Check()==false) return;

вбейте

if(!Check())
{
ExpertRemove();
return;
}

Тогда после однократного неудачного прохождения проверки советник выгрузится с графика, и алёрт будет выдан также однократно.
 
Последнее редактирование:
Верх