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

 
fxsaber #:

Визуализатор далеко не всегда синхронизирован с торговым окружением. Т.е. он может показывать старую информацию. Актуальная всегда в советнике.

Это очень частый вопрос, когда советник говорит одно, а Визуализатор показывает иное.

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

 
Igor Petrov #:

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

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

Например, можно быстро промотать за пять секунд ДО интересного момента, затем нажать на паузу и по F12 пробрасывать каждый следующий тик. Все эти тики будут визуализированы корректно.


Идентифицировать рассинхрон можно выводом в комментарий времени текущего тика (с точностью до миллисекунд) и, сравнивая с тем, что показыват Обзор рынка Визуализатора. Если есть расхождение - рассинхрон.


ЗЫ Синхронизацию визуализатора при остановке дебагером (или при нажатии пауза), конечно, давно надо было сделать.

 
Igor Makanu #:

BarsCalculated() https://www.mql5.com/ru/docs/series/barscalculated

что возвращает? - это просто  число которое после окончания расчетов в OnCalculate() индикатор вернул в return(rates_total)  ?

проверил, да BarsCalculated() это  return(rates_total)

инд А:

int OnCalculate...
{
   static int cnt = 0;
   cnt++;
   Print("cnt = ", cnt);
   return(cnt);
}

инд В:

int OnInit()
{
   handle = iCustom(NULL, PERIOD_M1, "tst_code\\A");
   return(INIT_SUCCEEDED);
}
int OnCalculate...
{
   double tmp[];
   int bc = BarsCalculated(handle);
   if(bc == -1) return(rates_total);
   int copy = CopyBuffer(handle, 0, 0, 1, tmp);
   Print("BarsCalculated = ", bc);
   return(rates_total);
}

запустил на Н1 индикатор В, лог:

2021.09.02 16:11:44.872 A (EURUSD,M1) cnt = 1

2021.09.02 16:11:44.873 A (EURUSD,M1) cnt = 2

2021.09.02 16:11:44.998 A (EURUSD,M1) cnt = 3

2021.09.02 16:11:44.998 B (EURUSD,H1) BarsCalculated = 3

2021.09.02 16:11:46.617 A (EURUSD,M1) cnt = 4

2021.09.02 16:11:46.617 B (EURUSD,H1) BarsCalculated = 4

2021.09.02 16:11:46.663 A (EURUSD,M1) cnt = 5

2021.09.02 16:11:46.663 B (EURUSD,H1) BarsCalculated = 5

2021.09.02 16:11:46.671 A (EURUSD,M1) cnt = 6

2021.09.02 16:11:46.671 B (EURUSD,H1) BarsCalculated = 6

2021.09.02 16:11:46.684 A (EURUSD,M1) cnt = 7

2021.09.02 16:11:46.685 B (EURUSD,H1) BarsCalculated = 7

2021.09.02 16:11:46.697 A (EURUSD,M1) cnt = 8

2021.09.02 16:11:46.697 B (EURUSD,H1) BarsCalculated = 8

2021.09.02 16:11:47.008 A (EURUSD,M1) cnt = 9

2021.09.02 16:11:47.008 B (EURUSD,H1) BarsCalculated = 9

2021.09.02 16:11:47.029 A (EURUSD,M1) cnt = 10

2021.09.02 16:11:47.029 B (EURUSD,H1) BarsCalculated = 10

2021.09.02 16:11:47.502 A (EURUSD,M1) cnt = 11

2021.09.02 16:11:47.502 B (EURUSD,H1) BarsCalculated = 11

2021.09.02 16:11:47.614 A (EURUSD,M1) cnt = 12

2021.09.02 16:11:47.614 B (EURUSD,H1) BarsCalculated = 12

2021.09.02 16:11:47.620 A (EURUSD,M1) cnt = 13

2021.09.02 16:11:47.620 B (EURUSD,H1) BarsCalculated = 13

2021.09.02 16:11:47.667 A (EURUSD,M1) cnt = 14

2021.09.02 16:11:47.667 B (EURUSD,H1) BarsCalculated = 14

2021.09.02 16:11:47.713 A (EURUSD,M1) cnt = 15

2021.09.02 16:11:47.713 B (EURUSD,H1) BarsCalculated = 15

2021.09.02 16:11:47.726 A (EURUSD,M1) cnt = 16

2021.09.02 16:11:47.726 B (EURUSD,H1) BarsCalculated = 16

 

Добрый день! Что-то не получается решить проблему.

Нужно при первом запуске обработать все бары, после обработки обрабатывать только последний бар.

Сперва печатает 0, потом на каждом новом баре только последний, промежуточные бары не печатает.

В чем ошибка?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

      for(int i = prev_calculated; i <= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
   return(rates_total);
  }
 
SEM #:

Добрый день! Что-то не получается решить проблему.

Нужно при первом запуске обработать все бары, после обработки обрабатывать только последний бар.

Сперва печатает 0, потом на каждом новом баре только последний, промежуточные бары не печатает.

В чем ошибка?

Или i-- или i равно нулю в выражении 1 цикла) все правильно печатает)
Это для первого запуска. А потом по классике отлова нового бара.
 
SEM #:

Добрый день! Что-то не получается решить проблему.

Нужно при первом запуске обработать все бары, после обработки обрабатывать только последний бар.

Сперва печатает 0, потом на каждом новом баре только последний, промежуточные бары не печатает.

В чем ошибка?


Для начала я бы попробовал поправить так:

      for(int i = prev_calculated; i >= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
 

Всем доброго времени суток. Подскажите кто ни будь сталкивался с такой проблемой. Сегодня до 10мск было все норм в мт5. Открывал ордера, выставлял стоп и профит.

После 10мск при открытии ордера, выставления стопа или профита происходит ожидание поставки в очередь и по истечении 10 и более минут, выставляется. И это до сих пор. 

 
Михаил Савченко #:

Всем доброго времени суток. Подскажите кто ни будь сталкивался с такой проблемой. Сегодня до 10мск было все норм в мт5. Открывал ордера, выставлял стоп и профит.

После 10 при открытии ордера, выставления стопа или профита происходи ожидание поставки в очередь и по истечении 10 и более минут, выставляется. И это до сих пор. 

Ручная торговля? Какой брокер?
 
mktr8591 #:
Ручная торговля? Какой брокер?
Да захожу с рынка ,в ручную. Финам.
 
mktr8591 #:

Для начала я бы попробовал поправить так:

Спасибо! Помогло.
Причина обращения: