Ошибки, баги, вопросы - страница 2096
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хм. Ну найдите )))
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnTick()
{
int s[];
CopySpread(_Symbol,_Period,0,1,s);
Print(s[0]);
}
Так кто Вам сказал, что spread-поле текущего бара равно текущему спреду или, например, минимальному?
Используйте SymbolInfoTick, бары - исторический рудимент.
Так кто Вам сказал, что spread-поле текущего бара равно текущему спреду или, например, минимальному?
Используйте SymbolInfoTick, бары - исторический рудимент.
CopySpread - запоминает минимальное - сказала практика, которая в большинстве случаев оказывается критерием истины. Из нее установлено, что бару 2017.10.23 01:00 CopySprea=-3, т.к. меньше при проверке по тикам не было.
Я бары назвал бы - очень нужным инструментом, позволяющим анализировать прошлое.
SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )
SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )
До запуска тестера посмотрите баровую историю на предмет наличия в ней отрицательного спреда. Это кривое поле ни о чем.
Если бы разработчики сегодня придумывали бы MqlRates, то там были бы нормальные поля, а не эта гадость. Но им слабо пересмотреть данную структуру, наворотили уже на ее основе всякого замечательного. Так что вот такой исторический рудимент получился. И будут лямку эту тянуть теперь все время.
CopySpread - запоминает минимальное - сказала практика, которая в большинстве случаев оказывается критерием истины. Из нее установлено, что бару 2017.10.23 01:00 CopySprea=-3, т.к. меньше при проверке по тикам не было.
Я бары назвал бы - очень нужным инструментом, позволяющим анализировать прошлое.
SymbolInfoTick - показывает правильно, но неужели из за этого нужно оставить CopySpread неправильным? Я понимаю, то 1 пт. - это мелочь, думаю, что и исправить это элементарно s=s-1. И всё )
Если быть внимательным, то можно понаблюдав за минутками увидеть, что запоминается последнее значение спреда при появлении нового бара.
Если быть внимательным, то можно понаблюдав за минутками увидеть, что запоминается последнее значение спреда при появлении нового бара.
Посмотрел повнимательнее - согласен, но частично.
Код эксперта:
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
В общем - какая-то неразбериха со спредами (
...
В общем - какая-то неразбериха со спредами (
MT4 b1090, в Обзоре рынка многие десятки символов, открыто несколько чартов. terminal.exe жрет 0-1% CPU.
MT5 b1730, в Обзоре рынка только GBPUSD MetaQuotes-Demo, чартов нет. terminal64.exe жрет 2-3% CPU.
Это нормально?
MT4 b1090, в Обзоре рынка многие десятки символов, открыто несколько чартов. terminal.exe жрет 0-1% CPU.
MT5 b1730, в Обзоре рынка только GBPUSD MetaQuotes-Demo, чартов нет. terminal64.exe жрет 2-3% CPU.
Это нормально?
Несколько раз тема всплывала. МТ5 чуть больше грузит процессор, потому что транслирует больше информации.
Но в пределах 1-2% сравнивать некорректно.
Несколько раз тема всплывала. МТ5 чуть больше грузит процессор, потому что транслирует больше информации.
Но в пределах 1-2% сравнивать некорректно.
Несколько браузеров с десятками открытых вкладок в режиме чтения кушают ноль. Странно, когда абсолютно пустой терминал потребляет, как торрент-клиент. И ничего не меняется, если выдернуть инет из компа.
Несколько браузеров с десятками открытых вкладок в режиме чтения кушают ноль. Странно, когда абсолютно пустой терминал потребляет, как торрент-клиент. И ничего не меняется, если выдернуть инет из компа.
С браузером сравнивать некорректно. Фоновые вкладки, насколько я представляю, вообще не потребляют ресурсов.
А терминал получает тики и строит тайм-серию, вне зависимости от того - активен график или нет, чтобы при переключении на него показать актуальную информацию без задержек.
Но я на самом деле не защищаю МТ, просто уточнил, что никто так и не удосужился провести полноценное сравнение со всеми выкладками для сервис-деска.