Пользовательские символы. Ошибки, баги, вопросы, предложения. - страница 11

 
fxsaber:

2033:

2063:

 
fxsaber:

Баг 07.

Тестер формируют бары по Last для биржевых кастомных символов с ценой построения баров по Bid.

Соответственно, баровая история в Терминале и Тестере полностью расходится. И если кто-то в ТС использует бары (индикаторы, например), то результат бэктеста для него случайный.

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

Либо давайте свой пример.

 
fxsaber:

Баг 01.

Открыт чарт кастомного символа. Если, например, руками удалить всю баровую и тиковую историю, то окно чарта просто подвиснет - не обновляясь.

Ожидалось поведение, как с пустым кастомным символом.

Более подробно поясните, что Вы имеете в виду

Удалил всю баровую историю, график кастомного символа опустел с надписью "Ожидание обновления". Что не так?

 

Баг 13.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Бета-версия платформы MetaTrader 5 build 2055: Интеграция с Python и массовые улучшения в тестере стратегий

fxsaber, 2019.05.25 10:33

Воспроизведение визуального бага (график дергается) применения ChartSetSymbolPeriod

// Пример создания "живого" символа.

#include <Symbol.mqh> // https://www.mql5.com/ru/code/18855

const bool Init = EventSetMillisecondTimer(20); // С такой частотой будем пробрасывать тики

void OnInit()
{
  MathSrand((int)TimeLocal());
}

long Chart2 = 0;

void OnTimer()
{
  static bool FirstRun = true;

  static const SYMBOL Symb("CUSTOM_" + _Symbol + (string)MathRand()); // Создали символ
  
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    Symb.DeleteHistory();       // Мало ли что-то было в истории - грохнули
    Symb.Delete(true);          // Символ тоже прибьем, чтобы исключить наличие тика в Обзоре рынка
    Symb.Create(NULL, _Symbol); // Воскресили девственно чистым.
    
    if (Symb.IsExist() && Symb.On())   // Если все отлично
    {     
      Chart2 = ChartOpen(Symb.Name, PERIOD_M1); // Открыли чарт
      CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)D'2019.05.20' * 1000); // Взяли тики для проброса
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
  {
    Symb += Ticks[Pos++]; // Пробрасываем по тику
    
    // Для обновления чарта.
    ChartSetSymbolPeriod(Chart2, Symb.Name, PERIOD_M1); // Без этой строки дерганья графика прекращаются
    ChartRedraw(Chart2);    
  }
}

На анимации видно дерганье графика. Если убрать ChartSetSymbolPeriod, то дерганье прекращается.

 
Slava:

Более подробно поясните, что Вы имеете в виду

Удалил всю баровую историю, график кастомного символа опустел с надписью "Ожидание обновления". Что не так?

Запустите этот советник. Через несколько баров отключите, не закрывая чарт. Через CTRL+U удалите все бары.

 
fxsaber:

Баг 13.

Тот же советник еще такой баг воспроизводит

Слева - чарт, справа - окно его свойств (F8).

 

Баг 15.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Бета-версия платформы MetaTrader 5 build 2055: Интеграция с Python и массовые улучшения в тестере стратегий

fxsaber, 2019.05.25 10:54

После каждого применения CustomRatesUpdate происходит обнуление prev_calculated у индикаторов, что запущены на соответствующем кастомном символе.

Это ошибка. prev_calculated должен переводиться на первый бар, что был подан в CustomRatesUpdate.


ЗЫ Та же ошибка у CustomRatesReplace.

На символе этого советника (с удаленной ChartSetSymbolPeriod-строкой) запускаем такой индикатор

#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots indicator_buffers

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  Print(prev_calculated);
  
  return(rates_total);
}

Выдает только нули.

 
Slava:

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

Либо давайте свой пример.

Теперь (2067) у меня с этим все корректно, Спасибо.

 
fxsaber:

2063:

2069:

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