Работа со временем.

 

Имеются массивы с 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 -ом

М.б кто нибудь попроще чего придумал?

Вообще это для тестера. Наверно не по адресу, т.к. тестер не МТ, а самопис.

Т.е. задача решена, но, ИМХО, как-то некрасиво, перебором.

 

Дык перебором делать нормально. Метатрейдер же сам так делает.

Вначале сервер получает тики. Тики им же объединяются в минуты.

А из минут генерируются все тайм-серии. Т.е. вопрос на самом деле звучит так:

- как лучше: тайм-серию вычислить заранее и положить в файл M15,

  или вычислять каждый раз на лету перебором?

.

Для текущего периода (0-я свеча М15)- придется перебором-

чтобы не взять случайно цену закрытия из вычисленной

с подглядыванием таймсерии М15. А остальные- типа для оптимизации-

можно брать вычисленные.

.

А может быть, стоит устроить динамический кэш вычисленных баров М15:

типа, если в 15:59 с известной ценой закрытия приходит запрос на вычисление бара 15:45,

то система понимает, что вычисление бара М15- окончательное,

поэтому кладет в кэш время "15:45" и набор OHLC.

Или же она может класть в кэш два значения - время бара М15 и время, на которое расчет валиден.

Чтобы если клиент делает 10 запросов в 15:50 относительно бара М15 на 15:45,

то он получает закэшированное значение без всяких расчетов.

Но стоит появиться данным за 15:51, кэш сам аннулирует запись.

Если для вычисления использовались все бары, то время, на которое расчет валиден обнуляется-

с этих пор данные верны до окончания тестирования.

А все, чего в кэше нет- вычисляется динамически

в зависимости от имеющихся в наличии данных.

 

YUBA писал(а) >>

int base = 5; // minutes

int minutes = date.Minutes();

int rounded = (minutes/base)*base;
 
TheXpert >>:

Точно. Блин не сообразил.

Спасибо

 

Честно не понял какое имеет отношение код mql к собственному тестеру...

 
jartmailru >>:

Честно не понял какое имеет отношение код mql к собственному тестеру...

Алгоритмы везде одинаковы. Впрочем и языки программирования тоже. Знаешь один - знаешь все. :)

Вообще-то на форуме собрались и общаются люди, занимающиеся и увлекающиеся одним и тем-же делом.

Да Вы, батенька, националист. :) Говоришь на другом языке - не место в наших стройных рядах. :)

Успокойтесь, я и на MQL говорю. А еще и вышивать....

 
YUBA >>:

Алгоритмы везде одинаковы. Впрочем и языки программирования тоже. Знаешь один - знаешь все. :)

Вообще-то на форуме собрались и общаются люди, занимающиеся и увлекающиеся одним и тем-же делом.

Да Вы, батенька, националист. :) Говоришь на другом языке - не место в наших стройных рядах. :)

Успокойтесь, я и на 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 сформирован! -- использовать можно!

 
jartmailru >>:

Товарищ, я разве про это?

Ну не можете Вы использовать бар М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 все совпадает, основой для формирования старшего ТФ является младший ТФ..До этого я просто используя принцип обратного преобразования из старшего ТФ формировал отображение на младшем, но это формирование было немного посложнее..Хотя принцип почти одинаков..Почему я делать стал на оборот - мне необходимо былопровести смещение старшего ТФ так чтобы в последная минута являлась завершающей для старшего ТФ..