Мт4 Конец поддержке. - страница 31

 
Vladimir Pastushak:

4 цикла не круто ли ?  при 600 символах в обзоре рынка каждую минуту терминал будет умирать ....

Вы о чем? В таймере цикл осуществляется 1 раз за минуту. Это вообще ничто.

А к функции Новый_бар() пользователь обращается когда ему угодно.

 
Alexey Viktorov:
Что касается комментария кода: А если надо в программе определить открытие только текущего периода и только по одному символу? Вся эта конструкция будет крутить все циклы? Нерационально.

Совершенно не поняли код.

События нового бара по символам фиксируются в цикле раз в минуту. Автоматически. Если текущее количество баров не равно записанному в массиве, то ставим флаг события нового бара в массиве События_нового_бара[][].

 

Alexey Viktorov:


ps; Да и зачем запускать миллисекундный таймер? Разве не хватит секундного???

Можно поставить и секундный. Тогда нужно записать "Частота_таймера = 1000".

 

Поставил, проверил, не работает

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Новый_бар(Symbol(), PERIOD_M1)) Print("M1 = ",Time[0]);
   if(Новый_бар("EURUSD", PERIOD_M5)) Print("M5 = ",Time[0]);
  }
Выдаёт постоянно false
 
Vladimir Pastushak:

4 цикла не круто ли ?  при 600 символах в обзоре рынка каждую минуту терминал будет умирать ....

Интересно, у кого-то реально столько стоит ?

У меня вот 16 - и я уже подумываю, не слишком ли большая нагрузка ?

Правда, у меня минимальный таймфрейм М15... Но все же, интересно, когда нагрузка на терминал начинает быть критичной ?

 
Реter Konow:

Вы о чем? В таймере цикл осуществляется 1 раз за минуту. Это вообще ничто.

А к функции Новый_бар() пользователь обращается когда ему угодно.


Функция "новый бар" обычно выполняется на каждом тике... Этоn вызов на каждом тике делается для экономии ресурсов. Осознайте, как ваша функции "экономит" ресурсы, она их пожирает. 

 
George Merts:
... Но все же, интересно, когда нагрузка на терминал начинает быть критичной ?

когда процессор встает на коленки и не может подняться.

с уважением.

 
Реter Konow:

Совершенно не поняли код.

События нового бара по символам фиксируются в цикле раз в минуту. Автоматически. Если текущее количество баров не равно записанному в массиве, то ставим флаг события нового бара в массиве События_нового_бара[][].

Давайте лучше подискутируем другой пример использования ООП.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Мт4 Конец поддержке.

Alexey Viktorov, 2017.09.11 13:08

Мне кажется я нашёл примитивный пример удобства использования ООП. Вот функция заполнения массива указанным значением. Там их восемь разновидностей в зависимости от типа массива.

Вот представьте что вам надо написать функцию в которую надо передавать то один набор параметров, то другой, то третий... При алгоритмическом подходе получится N разных имён функций. Казалось-бы ничего страшного, можно ведь написать и 8 таких как ArrayInitializeInt() ArrayInitializeDouble() и так далее. Но ведь как приятно не задумываясь о типе массива просто применять одну функцию в любом случае и на сколько безопасно перепутать какой массив туда суёшь...


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

Поставил, проверил, не работает

Выдаёт постоянно false

1. Запустите советник на M1.

2. Нужно подождать пока полностью закончится текущий бар. На первом баре не фиксируется событие. Сделал так специально. Дальше Вам нужно ждать столько времени, сколько предпологает тот таймфрейм, который вы посылаете в функцию.

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

 
Dmitry Fedoseev:

Функция "новый бар" обычно выполняется на каждом тике... Этоn вызов на каждом тике делается для экономии ресурсов. Осознайте, как ваша функции "экономит" ресурсы, она их пожирает. 

Вы видно коды разучились читать. )) Где она их пожирает?