Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2019

 
Tretyakov Rostyslav #:
Я бы вообще Sleep не использовал - в советнике это зло.

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

 
Andrei Sokolov #:

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

Вот именно в случае ошибок. И далеко не всех. А просто так делать паузу между открытием двух ордеров\позиций совершенно бессмысленно.

 
Andrei Sokolov #:

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

Если делать паузу, то по таймингу, а не останавливать цикл.
 
Tretyakov Rostyslav #:
Если делать паузу, то по таймингу, а не останавливать цикл.

Почему нет? 

 
Andrei Sokolov #:

Почему нет? 

потому что в цикле (при Sleep) не работают OnTick,OnChartEvent,OnTimer, OnBook,OnTradeTransaction,OnTrade..советник "висит" и эвенты копятся в очередях.

надо "выворачивать" советник до состояния чтобы внутри любой функции не было длительных и непредсказуемых циклов и всяких Sleep. 

 
Maxim Kuznetsov #:

потому что в цикле не работают OnTick,OnChartEvent,OnTimer..советник "висит" и эвенты копятся в очередях

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

 
Andrei Sokolov #:

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

Максим писал не о накоплении тиков, а о накоплении эвентов

С паузой по таймингу советник продолжает работать без накоплений

 
Tretyakov Rostyslav #:

Максим писал не о накоплении тиков, а о накоплении эвентов

С паузой по таймингу советник продолжает работать без накоплений

На сколько я знаю тик это тоже событие, те эвент, по этому он и написал тик в списке тех событий. Если не прав, поправьте. 

Ну и если не паузой, объясните как правильно делать торговые операции, когда задумано несколько попыток при определенных ошибках.

 
Andrei Sokolov #:

На сколько я знаю тик это тоже событие, те эвент, по этому он и написал тик в списке тех событий. Если не прав, поправьте. 

Ну и если не паузой, объясните как правильно делать торговые операции, когда задумано несколько попыток при определенных ошибках.

Примерно так

EventSetMillisecondTimer(100);
int Pause,cnt;
//---
void OnTick()
  {
   if(Pause<1)
     {
      if(OrderSend(......)==-1)
         Pause=3;
     }
  }
void OnTimer()
  {
//---
   if(Pause>0)
      cnt++;
   if(cnt>=Pause)
      Pause=0;
  }
 
Tretyakov Rostyslav #:

Попробуй заменить на это

хорошо, попробую. Спасибо.

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