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

 
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. И всё )

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

 
Alexey Viktorov:

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

Посмотрел повнимательнее - согласен, но частично.

Код эксперта:

void OnTick() { 
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  MqlTick last_tick;
  if(SymbolInfoTick(Symbol(),last_tick)) { Print(last_tick.time,": Bid = ",last_tick.bid, " Ask = ",last_tick.ask,"  SP = ",DoubleToString(last_tick.ask-last_tick.bid,5)); }
}

Вот распечатка одной минуты - сначала спред из CopySpread. Потом посчитанный из Ask-Bid

2018.01.01 11:55:00.478    2017.10.23 01:00:00   14
2018.01.01 11:55:00.478    2017.10.23 01:00:00   2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17729  SP = 0.00014
2018.01.01 11:55:00.494    2017.10.23 01:00:00   9
2018.01.01 11:55:00.494    2017.10.23 01:00:00   2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17724  SP = 0.00009
2018.01.01 11:55:00.510    2017.10.23 01:00:00   9
2018.01.01 11:55:00.510    2017.10.23 01:00:00   2017.10.23 01:00:00: Bid = 1.17716 Ask = 1.17726  SP = 0.00010
...........
2018.01.01 11:55:01.023    2017.10.23 01:00:30   1
2018.01.01 11:55:01.023    2017.10.23 01:00:30   2017.10.23 01:00:30: Bid = 1.17704 Ask = 1.17705  SP = 0.00001
2018.01.01 11:55:01.876    2017.10.23 01:00:30   -1
2018.01.01 11:55:01.876    2017.10.23 01:00:30   2017.10.23 01:00:30: Bid = 1.17707 Ask = 1.17705  SP = -0.00002
2018.01.01 11:55:01.893    2017.10.23 01:00:31   -3
2018.01.01 11:55:01.893    2017.10.23 01:00:31   2017.10.23 01:00:31: Bid = 1.17707 Ask = 1.17703  SP = -0.00004

2018.01.01 11:55:01.909    2017.10.23 01:00:31   -3
2018.01.01 11:55:01.909    2017.10.23 01:00:31   2017.10.23 01:00:31: Bid = 1.17707 Ask = 1.17704  SP = -0.00003
2018.01.01 11:55:01.925    2017.10.23 01:00:32   -3
...........
2018.01.01 11:55:02.293    2017.10.23 01:00:48   -3
2018.01.01 11:55:02.293    2017.10.23 01:00:48   2017.10.23 01:00:48: Bid = 1.17702 Ask = 1.17707  SP = 0.00005
2018.01.01 11:55:02.309    2017.10.23 01:00:48   -3
2018.01.01 11:55:02.309    2017.10.23 01:00:48   2017.10.23 01:00:48: Bid = 1.17703 Ask = 1.17707  SP = 0.00004
2018.01.01 11:55:02.325    2017.10.23 01:00:49   -3
2018.01.01 11:55:02.325    2017.10.23 01:00:49   2017.10.23 01:00:49: Bid = 1.17707 Ask = 1.17707  SP = 0.00000

Т.е. значение CopySpread на текущем баре = минимальному.

А вот в историю бара ушло действительно последнее значение.

<DATE>    <TIME>    <OPEN>    <HIGH>    <LOW>    <CLOSE>    <TICKVOL>    <VOL>    <SPREAD>
2017.10.23    01:00:00    1.17715    1.17720    1.17693    1.17707    64    0    0

В большинстве случаев (минут 10 проверил), но и тут бывают сбои.
Вот описанная выше проблема по 2017.10.23 00:53

В истории

2017.10.23    00:53:00    1.17685    1.17725    1.17685    1.17725    8    0    9

А по тикам:

2018.01.01 11:54:59.009    2017.10.23 00:53:43   48
2018.01.01 11:54:59.009    2017.10.23 00:53:43   2017.10.23 00:53:43: Bid = 1.17724 Ask = 1.17733  SP = 0.00009
2018.01.01 11:54:59.025    2017.10.23 00:53:43   48
2018.01.01 11:54:59.025    2017.10.23 00:53:43   2017.10.23 00:53:43: Bid = 1.17725 Ask = 1.17736  SP = 0.00011
2018.01.01 11:54:59.041    2017.10.23 00:53:43   48
2018.01.01 11:54:59.041    2017.10.23 00:53:43   2017.10.23 00:53:43: Bid = 1.17725 Ask = 1.17737  SP = 0.00012 <<<<<<---------- последний тик бара
2017.10.23 00:53
2018.01.01 11:54:59.057    2017.10.23 00:54:11   9
2018.01.01 11:54:59.057    2017.10.23 00:54:11   2017.10.23 00:54:11: Bid = 1.17728 Ask = 1.17737  SP = 0.00009 <<<<<<---------- первый тик бара 2017.10.23 00:54 - вот ему соответствует

Проверил версию что в историю уходит спред от первого тика следущего бара. Не подтвердилась:

История
2017.10.23    00:59:00    1.17717    1.17723    1.17709    1.17715    14    0    3

1-й тик следущего бара
2018.01.01 11:55:00.478    2017.10.23 01:00:00   14
2018.01.01 11:55:00.478    2017.10.23 01:00:00   2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17729  SP = 0.00014

История

2017.10.23    01:00:00    1.17715    1.17720    1.17693    1.17707    64    0    0

1-й тик следущего бара
2018.01.01 11:55:02.342    2017.10.23 01:01:03   1
2018.01.01 11:55:02.342    2017.10.23 01:01:03   2017.10.23 01:01:03: Bid = 1.17707 Ask = 1.17708  SP = 0.00001

В общем  - какая-то неразбериха со спредами (

 
elibrarius:

...

В общем  - какая-то неразбериха со спредами (


 

MT4 b1090, в Обзоре рынка многие десятки символов, открыто несколько чартов. terminal.exe жрет 0-1% CPU.

MT5 b1730, в Обзоре рынка только GBPUSD MetaQuotes-Demo, чартов нет. terminal64.exe жрет 2-3% CPU.

Это нормально?

 
fxsaber:

MT4 b1090, в Обзоре рынка многие десятки символов, открыто несколько чартов. terminal.exe жрет 0-1% CPU.

MT5 b1730, в Обзоре рынка только GBPUSD MetaQuotes-Demo, чартов нет. terminal64.exe жрет 2-3% CPU.

Это нормально?

Несколько раз тема всплывала. МТ5 чуть больше грузит процессор, потому что транслирует больше информации.

Но в пределах 1-2% сравнивать некорректно.

 
Andrey Khatimlianskii:

Несколько раз тема всплывала. МТ5 чуть больше грузит процессор, потому что транслирует больше информации.

Но в пределах 1-2% сравнивать некорректно.

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

 
fxsaber:

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

С браузером сравнивать некорректно. Фоновые вкладки, насколько я представляю, вообще не потребляют ресурсов.

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

Но я на самом деле не защищаю МТ, просто уточнил, что никто так и не удосужился провести полноценное сравнение со всеми выкладками для сервис-деска.

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