Как остановить выполнение программы, пока не выполнено условие ? - страница 2

 
Aleksandr Slavskii:

Sleep()  в OnInit()  действительно нельзя, в тестере вызывает ошибку.

Думал кратенько описать задачу будет достаточно, но...

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

Вот я хотел написать код, чтоб он его мог вставить в советник/индикатор скомпилировать и всё, индикатор/советник не стартанёт без ключа.

У друга уровень понимания кода на уровне , "ух ты буковки!!!".  И объяснять ему, что это надо вставить сюда, а это туда, довольно таки сложно и долго. 

Вот мне надо, чтоб пока не заполнено "поле ввода", советник не стартовал, при этом надо, чтоб код в советник можно было скопировать в два клика.

Просто лениво писать скрипт который сам будет изменять нужный советник. Хотя если не найду простого решения, придётся так делать.


вот это не понял.  Как обернуть паузой?

Ну что-то типа этого, чтобы на каждом тике не сигналил

if(delay+5<TimeLocal()) {
 Alert(...);
 delay=TimeLocal();
}
 
Konstantin Nikitin:

Sleep в индикаторах вообще не работает. Так что вам правильно показали коды. Пишите через флаг, или STATE.

тут вы правы, про Sleep()  в индикаторах я совсем не подумал.

 

Ну можно, как-то так.

class CState
  {
private:
   int               m_state;

public:
                     CState() : m_state(INITIAL_STATE) {    };
                    ~CState()                          {    };
   void              SetState(const int state)         { m_state = state;}
   bool              Result(void)                      { return(m_state==READY_TO_RUN ? true : false); }
  };
CState State;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  OnTick()
  {
   if(!State.Result())
      return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(....)
  {
   if(sparam==MY_EDIT && ...)
     {
      State.SetState(READY_TO_RUN);
     }
  }
 
Konstantin Nikitin:

Ну можно, как-то так.

Логично.  Теперь достаточно скопировать  код  который проверяет лицензию в конец советника, а в OnTick()   скопировать две строчки. 

Думаю товарищ с такой задачей справится)))

Спасибо.

 
Если это только ради ввода номера, то его надо вводить в окне свойств, а проверку делать в ините.
 
Dmitry Fedoseev:
Если это только ради ввода номера, то его надо вводить в окне свойств, а проверку делать в ините.

Спасибо, тоже вариант хороший.

Но хотелось, чтоб прям красиво, запустил советника, а он тебе окошко на экран вывел, типа "жизнь или кошелёк", то есть "введите ключ активации".  )))

 
Aleksandr Slavskii:

Спасибо, тоже вариант хороший.

Но хотелось, чтоб прям красиво, запустил советника, а он тебе окошко на экран вывел, типа "жизнь или кошелёк", то есть "введите ключ активации".  )))

рано вам ещё писать советники. Очень рано. Тем паче коммерческие с "ключом активации". 

 
Maxim Kuznetsov:

рано вам ещё писать советники. Очень рано. Тем паче коммерческие с "ключом активации". 

Сначала меня немного расстроил ваш коммент.

Потом когда перешёл в ваш профиль и увидел вашу карму на фрилансе, меня ваш коммент удивил.

Дальше я решил посмотреть, что ещё пишет этот мэтр на форуме. Немного увлёкся чтением разных тем и так по ссылочкам, по ссылочкам наткнулся на книгу  Dmitry Fedoseev   "Программирование на языке MQL5 от основ до индикаторов и экспертов".

Купил, читаю, очень вам благодарен за коммент))).

Dmitry Fedoseev
Dmitry Fedoseev
  • www.mql5.com
Профиль трейдера
 
Aleksandr Slavskii:

Сначала меня немного расстроил ваш коммент.

Потом когда перешёл в ваш профиль и увидел вашу карму на фрилансе, меня ваш коммент удивил.

Дальше я решил посмотреть, что ещё пишет этот мэтр на форуме. Немного увлёкся чтением разных тем и так по ссылочкам, по ссылочкам наткнулся на книгу  Dmitry Fedoseev   "Программирование на языке MQL5 от основ до индикаторов и экспертов".

Купил, читаю, очень вам благодарен за коммент))).

Рано не потому что хорошо-ли/плохо-ли программируете, просто не разобрались в том когда стартует/рестартует советник и чем чреват запрос лицензии на старте.

Вам просто могут набить морду :-) Если советник перезапросит лицензию через неделю-другую, при открытых ордерах

 
Maxim Kuznetsov:

Рано не потому что хорошо-ли/плохо-ли программируете, просто не разобрались в том когда стартует/рестартует советник и чем чреват запрос лицензии на старте.

Вам просто могут набить морду :-) Если советник перезапросит лицензию через неделю-другую, при открытых ордерах

Ну морду будут бить не мне ))) Я ж защиту не для своих роботов делаю.

А вообще мысль дельная, думаю стоит выводить сообщение, сколько осталось времени  до конца лицензии. Ещё раз спасибо.

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