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


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

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

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

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

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

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