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

 

Баг Стилизатора ME МТ4/МТ5

 #define f(x) x   //пробел вначале строки и перед конечным выражением
#define f(x) x    //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

Реальные тики М1. При отрицательном спреде в окне данных тестера (виз. режим) спред становится неправильным. Ваш сервер, 2017.10.23 01:00 и 01:01 минуты

Сделал эксперт который проверяет спред. При отрицательном спреде эксперт видит неправильный спред, - увеличенный на 1. На скриншоте -1 в эксперте, -2 на графике. При положительном спреде - в эксперте все правильно.

Спред на реальных тиках может сильно отличаться от спреда по ценам открытия. Вот пример с разницей в 39 пт. 2017.10.23 00:53
По ценам открытия:


По
реальным тикам:

Что то мне казалось, что должно соответствовать в обоих режимах...

 
elibrarius:

Сделал эксперт который проверяет спред. При отрицательном спреде эксперт видит неправильный спред, - увеличенный на 1. На скриншоте -1 в эксперте, -2 на графике. При положительном спреде - в эксперте все правильно.

Уверен, что Вами допущена ошибка в коде при вычислении спреда. Если не найдете, покажите код.

 

а что случилось с функциями Copy... ? раньше они возвращали тайм-серию, а сейчас нет:


в принципе не сложно самому развернуть индексацию массива, но прежний код где использовал функции разворачивающие тайм-серии после Copy... наверное теперь работать не будут
 
Konstantin:

а что случилось с функциями Copy... ? раньше они возвращали тайм-серию, а сейчас нет:


в принципе не сложно самому развернуть индексацию массива, но прежний код где использовал функции разворачивающие тайм-серии после Copy... наверное теперь работать не будут

Изначально так и было и в справке об этом написано.


 
fxsaber:

Уверен, что Вами допущена ошибка в коде при вычислении спреда. Если не найдете, покажите код.

Хм. Ну найдите  )))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }

 
elibrarius:

Хм. Ну найдите  )))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }

Так кто Вам сказал, что spread-поле текущего бара равно текущему спреду или, например, минимальному?

Используйте SymbolInfoTick, бары - исторический рудимент.

 
fxsaber:

Так кто Вам сказал, что spread-поле текущего бара равно текущему спреду или, например, минимальному?

Используйте SymbolInfoTick, бары - исторический рудимент.

CopySpread - запоминает минимальное - сказала практика, которая в большинстве случаев оказывается критерием истины. Из нее  установлено, что бару 2017.10.23 01:00 CopySprea=-3, т.к. меньше при проверке по тикам не было.

Я бары назвал бы - очень нужным инструментом, позволяющим анализировать прошлое.

SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )

 
elibrarius:

SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )

До запуска тестера посмотрите баровую историю на предмет наличия в ней отрицательного спреда. Это кривое поле ни о чем.

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

 
elibrarius:

CopySpread - запоминает минимальное - сказала практика, которая в большинстве случаев оказывается критерием истины. Из нее  установлено, что бару 2017.10.23 01:00 CopySprea=-3, т.к. меньше при проверке по тикам не было.

Я бары назвал бы - очень нужным инструментом, позволяющим анализировать прошлое.

SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )

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