Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как растет твой рейтинг
MetaQuotes Software Corp.
Модератор
177091
MetaQuotes Software Corp. 2010.10.04 12:46 

Опубликована статья Обработчик события "новый бар":

Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.

 

Автор: Константин

Maryan Kozovyy
657
Maryan Kozovyy 2010.10.04 14:59  
о Боже.. я не осилил... лучше б разработчики просто ввели функцию isNewBar как стандратную... нагромождение ошибок ошеломляет.. и ето в примитивной функции появления нового бара
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Vasily
1267
Vasily 2010.10.04 17:00  
особенности я бы так сказал
Prival
4513
Prival 2010.10.04 19:01  

Спасибо, очень хорошая статья. 

На форуме как-то проскользнула мысль о том, что было бы хорошо иметь стандартный обработчик события «новый бар». Быть может когда-то разработчики придут к этому, а может и нет.

Почему же проскользнула. Вот тут большими буквами написано https://www.mql5.com/ru/forum/2176/page21/#comment_26385, что isNewBar() нужно и можно программировать.

 Дальше можно поиграть в игру «найдите десять отличий». Кроме странностей работы эксперта на демо-счете, очевидно, что на демо-счете и в тестере есть отличия и они видны невооруженным взглядом… Оставлю это для страстей на форуме или для следующей статьи, если в этом будет потребность.

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

 

Теперь можно пойти дальше и сделать мультивалютный обработчик событий NewBar. Но это тема целой статьи.

 А к этому могу лишь добавить великие стихи, великого поэта

 

О сколько нам открытий чудных

Готовят просвещенья дух

И опыт, сын ошибок трудных,

И гений, парадоксов друг,

И случай, бог изобретатель...

 

Konstantin Gruzdev
13421
Konstantin Gruzdev 2010.10.04 22:52  
Prival:

Спасибо, очень хорошая статья. 

Почему же проскользнула. Вот тут большими буквами написано https://www.mql5.com/ru/forum/2176/page21/#comment_26385, что isNewBar() нужно и можно программировать.

Упс, что-то я это пропустил. Можно было бы еще пару идей вписать. Кстати, я на чемпионат выложил советника на основе п.5. Сырой правда.

Не видно страстей, боюсь многие это даже не увидели.

Да, похоже, что многие еще в шоке от старта чемпионата.

 А к этому могу лишь добавить великие стихи, великого поэта

Стихи в тему. Вот кто бы еще решения реальные предлагал.

Konstantin Gruzdev
13421
Konstantin Gruzdev 2010.10.04 22:58  
maryan.dirtyn:
лучше б разработчики просто ввели функцию isNewBar как стандратную...
Как я вижу, для разработчиков нет смысла вводить стандартную функцию isNewBar, т.к. это частный случай OnTick. Да и с Prival согласен, что это программируемое событие.
Vladimir Batrudinov
4863
Vladimir Batrudinov 2010.10.05 08:32  
Lizar:
Как я вижу, для разработчиков нет смысла вводить стандартную функцию isNewBar, т.к. это частный случай OnTick. Да и с Prival согласен, что это программируемое событие.

Вводить стандартную обработку этого события скорей всего даже необходимо. По крайней мере на уровне экспертов.

По крайней мере это целесообразней с точки зрения многопоточности в работе. Ведь по любому обработку на уровне терминала можно организовать в несколько потоков, а из MQL мы получим только один поток.

На мой взгляд стандартная обработка будет особенная выгодна для мультивалютной работы.

PS

Да вообще разработчикам стоит подумать над изменением существующих обработчиков событий, те же самые OnTrade() и OnTick().

Я бы лично предпочел увидеть у них как минимум символ в качестве параметра...

Prival
4513
Prival 2010.10.05 08:43  

Я бы и OnTick() изменил, вернее его логику. Сейчас это событие генерируется если пришел новый тик по валютной паре на которой висит советник. С точки зрении мультивалютного анализа, лучше было бы (мне так кажется) генерировать это событие  если пришел новый тик по любому инструменту.

Т.е. изменилась матрица (обзор  рынка) генерируется событие newTick() c указанием, что там в матрице поменялось. Было бы удобнее все  синхронизировать.

Редко, но бывают ситуации, когда котировки по одному инструменту замирают и надолго (видел такое в йеной). И если советник висит на этой паре то ты попал, если не перевел весь код в OnTime().


Konstantin Gruzdev
13421
Konstantin Gruzdev 2010.10.05 08:54  
Interesting:

Вводить стандартную обработку этого события скорей всего даже необходимо. По крайней мере на уровне экспертов.

По крайней мере это целесообразней с точки зрения многопоточности в работе. Ведь по любому обработку на уровне терминала можно организовать в несколько потоков, а из MQL мы получим только один поток.

Да, с вопросом многопоточности согласен. Но это общий вопрос обработки любых событий, а не конкретно NewBar.
Konstantin Gruzdev
13421
Konstantin Gruzdev 2010.10.05 09:01  
Prival:

Т.е. изменилась матрица (обзор  рынка) генерируется событие newTick() c указанием, что там в матрице поменялось. Было бы удобнее все  синхронизировать.


Такое событие можно получить при помощи TimeCuurent(), а вот что с ним дальше делать, как синронизировать - вопрос.
Vladimir Batrudinov
4863
Vladimir Batrudinov 2010.10.05 09:07  
Prival:

Я бы и OnTick() изменил, вернее его логику. Сейчас это событие генерируется если пришел новый тик по валютной паре на которой висит советник. С точки зрении мультивалютного анализа, лучше было бы (мне так кажется) генерировать это событие  если пришел новый тик по любому инструменту.


Ну я про то же, в OnTick() и OnTrade() как минимум нужно добавить имя символа в качестве параметра (в OnTrade() еще желательно и тип события).

При таком раскладе OnTick() к примеру может генерироваться всякий раз когда приходит новый тик по одному из символов (инструментов) присутствующих в обзоре.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
/ /123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий