Как сделать, чтобы советник работал с частотой поступления 4-х разрядных котировок, когда на входе его 5-разрядные котировки. - страница 3

 
Maxim Dmitrievsky: спред все равно фиксированный
 Это только если Вы сами установите фиксированный спред. Но никто не мешает на вкладке "Настройки" выбрать "текущий" спред. Тогда во время тестирования или оптимизации спред будет переменный.
 Хотя первоначально, речь шла не о тестировании, а о торговле на реале. На реальном счете меняются и Bid  и Ask, так что контролировать придется обе котировки.
 
Maxim Dmitrievsky:

у вас не такой ноутбук?

 

Вот нафига пытаться опускать когда кто-то пытается делать код лучше? От зависти что ли, что кто-то думает как сделать лучше, а не абы кабы сляпать?  Пока что компьютеры, еще не летучие, какие бы они ни были по мощности. 

 
Eugene Myzrov:
 Это только если Вы сами установите фиксированный спред. Но никто не мешает на вкладке "Настройки" выбрать "текущий" спред. Тогда во время тестирования или оптимизации спред будет переменный.
Да ладно, разве "текущий" не подставляется из обзора рынка, на момент запуска, а потом не сохраняется на протяжении всего процесса тестирования?
 
Dmitry Fedoseev:

Вот нафига пытаться опускать когда кто-то пытается делать код лучше? От зависти что ли, что кто-то думает как сделать лучше, а не абы кабы сляпать?  Пока что компьютеры, еще не летучие, какие бы они ни были по мощности. 

я просто спросил, из любопытства
 
khorosh: Можно и так, только лишняя пользовательская функция добавляется. А может для надёжности моего дополнения сделать так? 
Я полагаю, что не надо бояться пользовательских функций, к тому же без этой функции IsNewBar(), которая определяет появление нового бара на графике, еще не был написан ни один советник. Ее давно уже следовало бы включить в язык MQL.

А то что Вы предлагаете еще предстоит исследовать - функция NormalizeDouble() таит в себе большие сюрпризы...

 
Maxim Dmitrievsky: Да ладно, разве "текущий" не подставляется из обзора рынка, на момент запуска, а потом не сохраняется на протяжении всего процесса тестирования?
Сорри, действительно Вы правы, спред берется из обзора рынка на момент запуска, и затем уже не меняется на протяжении всего процесса тестирования. Правда, это справедливо только для МТ4.
В терминале МТ5 разработчики пошли дальше - теперь спред хранится в истории минутных баров наряду с котировками OHLC, а в тестере стратегий даже убрали поле выбора/установки спреда.

Так что спред изменяется в
процессе тестирования только в терминале MT5.

 
Eugene Myzrov:
Я полагаю, что не надо бояться пользовательских функций, к тому же без этой функции IsNewBar(), которая определяет появление нового бара на графике, еще не был написан ни один советник. Ее давно уже следовало бы включить в язык MQL.

А то что Вы предлагаете еще предстоит исследовать - функция NormalizeDouble() таит в себе большие сюрпризы...

А я и не боюсь, я очень давно знаком с этой функцией. Я имел ввиду, что лишняя пользовательская функция дополнительная нагрузка на комп. Я обхожусь без функции IsNewBar().

При работе по ценам открытия обычно делаю так(одна глобальная переменная заменяет эту функцию):

int PrevTime=0;
void OnTick()
 {
 if(Time[0]!=PrevTime)
   {
   // Тело советника
   // .................................
   PrevTime=Time[0];
   }
 }
 
khorosh: Я имел ввиду, что лишняя пользовательская функция дополнительная нагрузка на комп. Я обхожусь без функции IsNewBar()
Можно, конечно, обойтись и без пользовательской функции IsNewBar(), но это до поры до времени, пока проект не вырастет до более-менее серьезных размеров.
Причем в советниках, которые используют сигналы с разных ТФ, потребуется определять появление новых баров на каждом таком ТФ.
Кстати, есть очень хорошая статья о способах обнаружения нового бара и недостатках существующих алгоритмов определения нового бара

Обработчик события "новый бар"

https://www.mql5.com/ru/articles/159


И не жалейте Вы свой комп, пожалейте лучше свое время, ведь насколько может вырасти производительность труда, если при разработке применять старый как мир принцип "Разделяй и властвуй!".
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Причина обращения: