Ошибки, баги, вопросы - страница 3580

 
Aleksandr Slavskii #:

Мультивалютный советник, получает событие "новый тик" с помощью индикатора Spy.

В OnChartEvent получает пользовательское событие, и после этого идёт расчёт по символу, на котором пришёл новый тик.

Spy в советнике запускаю примерно так.

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

В лог попадают не все символы из советника, обычно только половина.

Подскажите в чём может быть причина такой ошибки? Что в этом индикаторе Spy может тормозить?

тоже иногда проскакивает, но работа не останавливается

не понятно, как может индикатор пройти в данном случае 4 цикла и выдать одинаковый замер 3063 мс, у меня так же в начале серия одинаковых и потом пара с отличием, 

похоже особенность терминала, на последнем то проце i7, да еще и передается только id, и 7 пар участвует

и случается это не на самом быстром рынке, комп в это время не нагружен

 
Alexey Viktorov #:

А зачем, простите, такие извращения, если по перечисленным инструментам есть событие «изменения в стакане цен»???

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

spy индикатор единственный точно работающий способ получать каждый тик по нужным индикаторам

нет тика - нет работы по нему

 
Aleksandr Slavskii #:

Подскажите в чём может быть причина такой ошибки? Что в этом индикаторе Spy может тормозить?

SymbolInfoTick.


Запустил такой советник на 47 символах.

#include <fxsaber\OnTickMulti\OnTickMulti.mqh> // https://www.mql5.com/ru/code/47647

int TicksCounter[]; // Счетчик пришедших тиков каждого заданного символа.

void OnInit()
{
  // Инициализируем счетчик пришедших тиков.
  ArrayResize(TicksCounter, ArraySize(OnTickMulti.Symbols));
  ArrayInitialize(TicksCounter, 0);
  
  ArrayPrint(OnTickMulti.Symbols);
  
  EventSetTimer(1);
}

void OnTimer()
{
  string Str = NULL;
  
  // Распечатываем количество пришедших тиков на каждый заданный символ.
  for (uint i = ArraySize(TicksCounter); (bool)i--;)
    Str += "\n" + IntegerToString(i, 2, '0') + ". "+ OnTickMulti.Symbols[i] + " - " + (string)TicksCounter[i] + " ticks.";

  Comment(Str);
}

// Мультисимвольный OnTick.
void OnTickMulti( const string &Symb, const int &Index )
{
  MqlTick Tick;
  
  if (SymbolInfoTick(Symb, Tick))
    TicksCounter[Index]++; // Увеличили счетчик пришедших тиков по заданному символу.
  else
    Alert(Symb);
}


[ 0] "EURUSD.pro" "GBPUSD.pro" "USDCAD.pro" "USDCHF.pro" "USDJPY.pro" "AUDCAD.pro" "AUDCHF.pro" "AUDJPY.pro" "AUDNZD.pro" "AUDUSD.pro"
[10] "CADCHF.pro" "CADJPY.pro" "CHFJPY.pro" "EURAUD.pro" "EURCAD.pro" "EURCHF.pro" "EURGBP.pro" "EURJPY.pro" "EURNZD.pro" "GBPAUD.pro"
[20] "GBPCAD.pro" "GBPCHF.pro" "GBPJPY.pro" "GBPNZD.pro" "NZDCAD.pro" "NZDCHF.pro" "NZDJPY.pro" "NZDUSD.pro" "EURDKK.pro" "EURHKD.pro"
[30] "EURNOK.pro" "EURPLN.pro" "EURRUB.pro" "EURSEK.pro" "EURSGD.pro" "EURTRY.pro" "USDCNH.pro" "USDDKK.pro" "USDHKD.pro" "USDMXN.pro"
[40] "USDNOK.pro" "USDPLN.pro" "USDRUB.pro" "USDSEK.pro" "USDSGD.pro" "USDTRY.pro" "USDZAR.pro"


Проблемы не увидел. Какие минутные тиковые объемы у ваших символов?

 
Aleksandr Slavskii # :

Мультивалютный советник , получает событие "новый тик" с помощью индикатора Spy.

В OnChartEvent получает пользовательское событие, и после этого идёт расчёт по символу, на котором пришёл новый тик.

Spy в советнике запускаю примерно так.

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

В лог попадают не все символы из советника, обычно только половина.

Подскажите в чём может быть причина такой ошибки? Что в этом индикаторе  Spy  может тормозить?

Иногда EventChartCustom() возвращается через 3 секунды.