Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Они уже зарабатывают на своих сигналах. Опубликуй и ты свой!
Aleksandr Chugunov
4786
Aleksandr Chugunov 2011.02.17 15:08 

Есть класс, который оперирует данными нескольких таймфреймов одного инструмента (читай: всеми). Разделить его по таймфреймам не представляется возможным из-за логики.

В конечном счете результат его работы - графическое отображение информации для текущего таймфрейма графика инструмента.

Какие варианты рисуются у меня в голове:
  1. Реализация в виде простого индикатора или советника. При смене таймфрейма графика класс будет пересчитываться с нуля. Плохо.
  2. Реализация в виде индикатора, который не добавляется на график, но создаётся iCustom с фиксированным таймфреймом (например только M1). Данный вариант идеален, но как управлять дополнительными методами класса (к примеру что-то дополнительно вывести)? Прямое сообщение ему не отправить...
  3. Реализация в виде одного индикатора или советника для всех необходимых инструментов, без изменения таймфрейма графика, на который он будет "закинут" (всё рисование на отдельно открытом графике). Но здесь полностью теряется многопоточность вычислений...
У кого какие дельные мысли есть?
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
Dmitry Fedoseev
42639
Dmitry Fedoseev 2011.02.17 15:51  
Просто ограничить количество обсчитываемых на запуске баров не достаточно?
Aleksey Lebedev
6047
Aleksey Lebedev 2011.02.17 15:55  

2.

Не совсем прямое) сообщение можно отправить через глобальные переменные.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
Aleksandr Chugunov
4786
Aleksandr Chugunov 2011.02.17 16:00  
Integer:
Просто ограничить количество обсчитываемых на запуске баров не достаточно?

Не... всё ограничено...

Можно конечно попробовать выгружать всё состояние в файл... но я прикинул - он будет большим....



Swan:

2.

Не совсем прямое) сообщение можно отправить через глобальные переменные.

Ну можно ещё через файлы, DLL и т.д. Только все эти способы требуют проверки состояния через определённые промежутки времени... Хотелось бы избежать этого

Aleksey Kadachigov
861
Aleksey Kadachigov 2011.02.17 21:21  
Реализация в виде простого индикатора или советника. При смене таймфрейма графика класс будет пересчитываться с нуля. Плохо.
Сделать расчеты только внутри функции "is new bar", а вывод графика сделать не только в "is new bar" но и в "on init". При этом, функция "is new bar" будет срабатывать по данным только одного таймфрейма, который определяется входным параметром индикатора. Таким образом, при смене тайм-фрейма будет происходить только перерисовка(согласно неким правилам), а трудоемкий расчет только по "is new bar" для фиксированного тайм-фрейма.
Aleksandr Chugunov
4786
Aleksandr Chugunov 2011.02.17 21:22  
-Alexey-:
Сделать расчеты только внутри функции "is new bar", а вывод графика сделать не только в "is new bar" но и в "on init". При этом, функция "is new bar" будет срабатывать по данным только одного таймфрейма, который определяется входным параметром индикатора. Таким образом, при смене тайм-фрейма будет происходить только перерисовка(согласно неким правилам), а трудоемкий расчет только по "is new bar" для фиксированного тайм-фрейма.
Вы не внимательно прочли вводную...
Aleksey Kadachigov
861
Aleksey Kadachigov 2011.02.17 21:26  
AlexSTAL:
Вы не внимательно прочли вводную...
Думаю, все же внимательно. Или вы имеете в виду то, что не указали, как часто класс оперирует данными всех таймфреймов?
Aleksandr Chugunov
4786
Aleksandr Chugunov 2011.02.17 21:28  
-Alexey-:
Думаю, все же внимательно. Или вы имеете в виду то, что не указали, как часто класс оперирует данными всех таймфреймов?
На каждом тике по всем ТФ... разделить ТФ невозможно.... Т.е. я оперирую плавающим общим ТФ на каждом тике...
Konstantin Gruzdev
13904
Konstantin Gruzdev 2011.02.17 21:56  
AlexSTAL:
  1. Реализация в виде простого индикатора или советника. При смене таймфрейма графика класс будет пересчитываться с нуля. Плохо.
У кого какие дельные мысли есть?
Быть может следующая особенность позволит избежать пересчета. Если экземпляр класса инициализирован на уровне глобальных переменных, то конструктор класса запускается один раз при присоединении советника к графику. При смене таймфрейма (при уже присоединенном советнике) конструктор класса больше не запускается.  
Aleksandr Chugunov
4786
Aleksandr Chugunov 2011.02.17 22:09  
Lizar:
Быть может следующая особенность позволит избежать пересчета. Если экземпляр класса инициализирован на уровне глобальных переменных, то конструктор класса запускается один раз при присоединении советника к графику. При смене таймфрейма (при уже присоединенном советнике) конструктор класса больше не запускается.  

Вы спасли мир! Большое спасибо. Почему то я в эту сторону даже не смотрел... С индикатором то это не прокатит - только с советником...

Пора на пенсию....

Konstantin Gruzdev
13904
Konstantin Gruzdev 2011.02.17 22:43  
AlexSTAL:

Вы спасли мир! Большое спасибо. Почему то я в эту сторону даже не смотрел... С индикатором то это не прокатит - только с советником...

Пора на пенсию....

Что ж, передавайте привет спасенному миру. Да, в советнике точно можно.
/ /12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий