Дык перебором делать нормально. Метатрейдер же сам так делает.
Вначале сервер получает тики. Тики им же объединяются в минуты.
А из минут генерируются все тайм-серии. Т.е. вопрос на самом деле звучит так:
- как лучше: тайм-серию вычислить заранее и положить в файл M15,
или вычислять каждый раз на лету перебором?
.
Для текущего периода (0-я свеча М15)- придется перебором-
чтобы не взять случайно цену закрытия из вычисленной
с подглядыванием таймсерии М15. А остальные- типа для оптимизации-
можно брать вычисленные.
.
А может быть, стоит устроить динамический кэш вычисленных баров М15:
типа, если в 15:59 с известной ценой закрытия приходит запрос на вычисление бара 15:45,
то система понимает, что вычисление бара М15- окончательное,
поэтому кладет в кэш время "15:45" и набор OHLC.
Или же она может класть в кэш два значения - время бара М15 и время, на которое расчет валиден.
Чтобы если клиент делает 10 запросов в 15:50 относительно бара М15 на 15:45,
то он получает закэшированное значение без всяких расчетов.
Но стоит появиться данным за 15:51, кэш сам аннулирует запись.
Если для вычисления использовались все бары, то время, на которое расчет валиден обнуляется-
с этих пор данные верны до окончания тестирования.
А все, чего в кэше нет- вычисляется динамически
в зависимости от имеющихся в наличии данных.
Честно не понял какое имеет отношение код mql к собственному тестеру...
Алгоритмы везде одинаковы. Впрочем и языки программирования тоже. Знаешь один - знаешь все. :)
Вообще-то на форуме собрались и общаются люди, занимающиеся и увлекающиеся одним и тем-же делом.
Да Вы, батенька, националист. :) Говоришь на другом языке - не место в наших стройных рядах. :)
Успокойтесь, я и на MQL говорю. А еще и вышивать....
Алгоритмы везде одинаковы. Впрочем и языки программирования тоже. Знаешь один - знаешь все. :)
Вообще-то на форуме собрались и общаются люди, занимающиеся и увлекающиеся одним и тем-же делом.
Да Вы, батенька, националист. :) Говоришь на другом языке - не место в наших стройных рядах. :)
Успокойтесь, я и на MQL говорю. А еще и вышивать....
Товарищ, я разве про это?
Ну не можете Вы использовать бар М5 из Вашей таймсерии, сохраненной на диске!
Составьте табличку
M1 M5
15:00 для бара M5 15:00 есть только цена открытия -- бар M5 15:00 из файла использовать Нельзя #1
15:01 для бара M5 15:00 есть цена открытия от 15:00, закрытие = открытие 15:01 -- бар M5 15:00 из файла использовать Нельзя #2
15:02 для бара M5 15:00 есть цена открытия от 15:00, закрытие = открытие 15:02 -- бар M5 15:00 из файла использовать Нельзя #3
15:03 для бара M5 15:00 есть цена открытия от 15:00, закрытие = открытие 15:03 -- бар M5 15:00 из файла использовать Нельзя #4
15:04 для бара M5 15:00 есть цена открытия от 15:00, закрытие = открытие 15:04 -- бар M5 15:00 из файла использовать Нельзя #5
15:05 для бара M5 15:00 есть цена открытия от 15:00, закрытие = закрытие 15:04 -- использовать можно!
15:06 бар М5 15:00 сформирован! -- использовать можно!
Товарищ, я разве про это?
Ну не можете Вы использовать бар М5 из Вашей таймсерии, сохраненной на диске!
Составьте табличку
M1 M5
15:00 для бара M5 15:00 есть только цена открытия -- бар M5 15:00 из файла использовать Нельзя #1
...........15:06 бар М5 15:00 сформирован! -- использовать можно!
Это типа все известно. Вопрос-то как раз и был о времени последней завершенной свечи. Причем речь шла не о решении, а о красивом решении.
Но кто сказал, что незавершенную свечу нельзя использовать для этого таймфрейма? Можно и нужно.
Без этого индикаторы повисают в воздухе на 5-10-15-30-60 мин, а то и на день. Да, при таком использовании индикаторы перестраиваются. Многим это не нравится.
"Не нравится, Петька - не ешь." - как говорил Василий Иванович. :)
Что по времени ту не понятно - М1 - диапазон времени 00-59 секунд..
М5 - 00:00 - 04:59 секунд.. вот и получается если нужно соотношение младшего периода к старшему то всегда будет браться из М5 начало отсчета М5, а выбираться время закрытия М1, если говорить о уровнях High или Low, то получить их из М1 для М5 тоже просто, берется диапазон М1 и в границах поступления тиков минут находяться миниматьные и ли максимальные значения..Я делал индикатор который показывает каналы старшего уровни на младшем, так по уровням High или Low все совпадает, основой для формирования старшего ТФ является младший ТФ..До этого я просто используя принцип обратного преобразования из старшего ТФ формировал отображение на младшем, но это формирование было немного посложнее..Хотя принцип почти одинаков..Почему я делать стал на оборот - мне необходимо былопровести смещение старшего ТФ так чтобы в последная минута являлась завершающей для старшего ТФ..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Имеются массивы с 1 мин, 5 мин, 10, 15, 30 мин и 1 час данными. Типа - UserType.
Итак: Ищем соответствие времени 1 мин и 5 мин таймфреймов.
0-4 мин это 0 (для 5 мин ТФ)
5-9 - эт 5 мин
10-14 - эт 10
15- 19 - эт 15
Для 10 мин Тф понятно проблем нет.
для соответствия 1 мин - 15мин таймфрейму опять заморочка.
И вот делаю всю эту байду Case -ом
М.б кто нибудь попроще чего придумал?
Вообще это для тестера. Наверно не по адресу, т.к. тестер не МТ, а самопис.
Т.е. задача решена, но, ИМХО, как-то некрасиво, перебором.