Скачать MetaTrader 5

Переменная оси времени на графике

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114282
Forex Trader  
То есть Time за вычетом выходных и праздников. Есть ли такая в MQL? Нужда в ней возникает при попытке использовать в индикаторе функции времени. Поскольку нужен единый алгоритм и для исторических и для вновь поступающих данных, дело оказывается не столь уж простым. Пока мне пришло в голову два более или менее простых в реализации и использовании такой переменной варианта: 1) использовать под неё один из буферов и пересчитывать на лету из Time. 2) Определить специальную линию тренда и пользоваться ObjectGetValueByShift. Однако ощущения элегантности и экономности эти решения не создают.
Может она всё-таки есть? Или будет? :) Или, по известному закону, есть простое решение, очевидное для всех, кроме меня? :)
Forex Trader
114282
Forex Trader  
может подойдет просто переменная, которую увеличивать на каждом баре на величину периода графика?
Forex Trader
114282
Forex Trader  
а время же оч. просто считается.. оно же в секундах.
к примеру, время в минутах от начала суток = (время % (24*60*60))/60


если бы на графике были все бары, то......
время бара [i] было б равно Time[0]-i*Period()*60

или что нужно считать?
Forex Trader
114282
Forex Trader  
может подойдет просто переменная, которую увеличивать на каждом баре на величину периода графика?
Ну да, но переменная ведь нужна не сама по себе, а как координата для пары {время,цена}. То есть нужно иметь возможность находить точки в прошлом - отсюда и мысль о буфере.
а время же оч. просто считается.. оно же в секундах.
к примеру, время в минутах от начала суток = (время % (24*60*60))/60

если бы на графике были все бары, то......
время бара [i] было б равно Time[0]-i*Period()*60

или что нужно считать?
Это до первых выходных.
Вот картинка индикатора, рисующего историю двух каналов

Отчётливо виден скачок на переходе от 30 сентября к 3 октября. И что после этого мы лишаемся возможности зарегистрировать отскок сначала от верхней границы канала, а затем от нижней
Forex Trader
114282
Forex Trader  
время бара [i] было б равно Time[0]-i*Period()*60
Хм, пожалуй предыдущий мой пост нуждается в дополнении. Да, так мы обеспечим навигацию по истории, но только до тех пор, пока не начнут появляться новые бары. Тогда нам придётся ещё и непрерывно корректировать индекс, что уже не всегда так красиво, ведь обращение может идти нерегулярно и к разным точкам в прошлом . Или таки задействовать буферный массив.
Forex Trader
114282
Forex Trader  
если с праздниками, то прийдётся задействовать буфер. только как их высчитывать? заводить базу данных праздиков?

а если нужно просто обращение к определенным точкам во времени, то есть ведь iBarShift(), или как его там...
Forex Trader
114282
Forex Trader  
если с праздниками, то прийдётся задействовать буфер. только как их высчитывать? заводить базу данных праздиков?
Мне сейчас видится так: на лету заполняем буфер значениями "чистого" времени, с начала графика (буфер ведь рассчитан только на текущий график). После этого коррекция индекса для конкретной точки сведётся к увеличению на 1 с каждым новым баром. Но я это не реализовывал ещё, может и вылезут проблемы.
а если нужно просто обращение к определенным точкам во времени, то есть ведь iBarShift(), или как его там...
iBarShift() как будто тоже даёт ключик, номер бара является эквивалентом чистого времени. Но в описании упоминается слово "поиск", это наводит на мысль о затрате вычислительных ресурсов. Вообще-то, когда до меня дошло про ступеньку, я Time[i] поменял на просто i. Но это хорошо только для обсчёта истории. Поскольку в индикаторе нам нужен единый алгоритм как для обсчёта истории, так и для новых данных, речь фактически речь идёт о минимально возможной (в смысле объёма вычислений) цене сохранения читабельности кода. Вот мы определили параметры какой-то функции F(t), теперь на истории мы должня считать F(Bars-i), а на текущих данных F(Bars) (то есть Bars-i при i=0), соответственно предусматривать манёвр на случай докачки истории. Использование буфера фактически есть способ табличного задания функции ChartTime = Bars - i, раз аналитически она не задаётся. Я прощу прощения за многословность, просто вопрос кажется мне важным, может кто-то ещё подключится.
Forex Trader
114282
Forex Trader  
P.S. Почему относительное время кажется лучше "голого" индекса? По идее, привязав его через глобальную переменную к единой точке отсчёта, мы сможем использовать одно и то же значение в разных таймфреймах. Может быть просто нужен индикатор iChartTime, но вроде есть какие-то проблемы с вложенными вызовами iCustom.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий