Скачать MetaTrader 5

использование данных другого ТФ

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114269
Forex Trader  
Скажу сразу, что не программист я.
Но вот решил написать индикатор, в котором мне нужны данные Close другого ТФ.
В описании MQL4 нашел такой текст:

 Возможна также организация доступа к историческим данным по другим временным интервалам и даже по другим валютным парам. Чтобы получить такие данные необходимо предварительно определить одномерный массив и выполнить операцию копирования с помощью функции "ArrayCopySeries". Причем при вызове функции можно передавать меньшее количество параметров и не указывать параметры по умолчанию.
 double eur_close_m1[];
 int number_copied = ArrayCopySeries(eur_close_m1, MODE_CLOSE, "EURUSD", PERIOD_M1);

Я так понял, что данными данного массива можно будет пользоваться, но как мне сравнить два close из этого массива, к примеру прошлго[1] и позапрошлого баров [2]?

Спасибо за ответ

P.S. Описание прошлого языка было куда понятнее для не программистов.
Forex Trader
114269
Forex Trader  
(iOpen, iClose, Highest, iHigh, Lowest, iLow, Close, Open) почитай про эти функции, может найдешь для себя полезное
Forex Trader
114269
Forex Trader  
но как мне сравнить два close из этого массива, к примеру прошлго[1] и позапрошлого баров [2]

просто вместо "Close[1]" и "Close[2]" пиши "имя_массива[1]" и "имя_массива[2]"

Но проще использовать ф-ции, которые Bagadul подсказал ;)
Forex Trader
114269
Forex Trader  
Спасибо всем за ответы!

Ошибка у уважаемых разработчиков!
В строке:
int number_copied = ArrayCopySeries(eur_close_m1, MODE_CLOSE, "EURUSD", PERIOD_M1);
Скопирована из руководства, первая часть " int number_copied = " лишняя. без нее все нормально работает, а то мне выдавалась ошибка...

А про указанные функции где можно почитать?

Эту проблему я решил, но возникла другая:)
Я хочу на М15 иметь график индикатора за 15 мин. и за час. То, что я написал, рисует индикатор по данным часовых закрытий, но точки привязывает не к барам конца часа, а к текущим барам подряд...
Получается искаженная информация...
Есть ли возможность это исправить? Реально ли это?
Буду благодарен за подсказки и советы.
Forex Trader
114269
Forex Trader  
Ошибка у уважаемых разработчиков!
В строке:
int number_copied = ArrayCopySeries(eur_close_m1, MODE_CLOSE, "EURUSD", PERIOD_M1);
Скопирована из руководства, первая часть " int number_copied = " лишняя. без нее все нормально работает, а то мне выдавалась ошибка...

интересно, что за ошибка у Вас выдавалась? функция ArrayCopySeries возвращает количество скопированных элементов
Forex Trader
114269
Forex Trader  
[/quote]
интересно, что за ошибка у Вас выдавалась? функция ArrayCopySeries возвращает количество скопированных элементов [/quote]

Что он писал уже не помню, но когда удалил "int number_copied =" перед ArrayCopySeries все встало на свои места и ошибки Meta Editor больше не выдавал/
Forex Trader
114269
Forex Trader  
Что он писал уже не помню, но когда удалил "int number_copied =" перед ArrayCopySeries все встало на свои места и ошибки Meta Editor больше не выдавал/

может он говорил, что данная переменная уже создана? ;) Надо внимательнее относиться к ошибкам...
я только что попробовал, ошибки нет:
   double eur_close_m1[];
   int number_copied = ArrayCopySeries(eur_close_m1, MODE_CLOSE, "EURUSD", PERIOD_M1);





Я хочу на М15 иметь график индикатора за 15 мин. и за час. То, что я написал, рисует индикатор по данным часовых закрытий, но точки привязывает не к барам конца часа, а к текущим барам подряд...
Получается искаженная информация...
Есть ли возможность это исправить? Реально ли это?
Буду благодарен за подсказки и советы.

это реально. Надо смотреть время бара, например.
Или, если таймфреймы меняться не будут, то просто пропускать три бара.
Чуть-чуть подумай, и всё получится.

Если будут конкретные проблемы с реализацией (например, как ф-цию использовать), пиши сюда.

А про указанные функции где можно почитать?

в словаре. Набери имя ф-ции и нажми на неё Ctrl-F1

Forex Trader
114269
Forex Trader  
Надо смотреть время бара, например.
Или, если таймфреймы меняться не будут, то просто пропускать три бара.

Скорее всего надо именно смотреть время бара на М15, т.к. просто пропускать 3 бара не помогло. График очень отдаленно похож на часовой.
А вто как смотреть время бара не знаю. Читал про константы даты и времени D'', но можно ли ее использовать в виде Close[D'xxxx']?
Короче, вопросов стало еще больше:)
Forex Trader
114269
Forex Trader  
Time[#бара] ;)
Forex Trader
114269
Forex Trader  
Time[#бара] ;)


Уважаемый komposter!
Что-то чем дальше, тем "ну его нафиг"...:) (не ругаюсь это я)
Почти неделю пробовал всякого разного, и проверять по минутам и те бары, на которых час не закрывается, не обсчитывать и другое, но вот что странно: если считать по закрытиям бара от 45 до 59 минуты, т.е. пропускать 3 внутренних для часа, график индикатора отличается от построенного просто по часовым барам.
Думал и пытался связать время бара двух ТФ: М15 и Н1. Time[] дает время начала бара от.... а мне нужно, чтобы совпадало время окончания. Да и пока не пойму как вообще его привязать, вернее связать 2 бара с одним временем, да еще по одному расчитывать, а к другому пририсовывать.
Чую катастрофически не хватает не только знаний, но и умения и опыта... естественно.
Алгоритм, который прописываю предварительно на бумаге, работает в реале совсем не так:(
Если у Вас есть возможность и время, коего всегда не хватает:) буду благодарен за более подробную, предметную помощь в написании кода. Сам алгоритм расчета индикатора, вроде, не сложен.
Сейчас появилась идея, но для этого нужно рисовать индикатор с права на лево. Это возможно?
Forex Trader
114269
Forex Trader  
время, коего всегда не хватает:)

да, времени таки нет =)
буду благодарен за более подробную, предметную помощь в написании кода

можно на ты? ;) напиши мне на мыло точную задачу. Желательно, с максимальным кол-вом деталей, но структурированно :) Постараюсь помочь, а то на форуме думается не очень =)
Сейчас появилась идея, но для этого нужно рисовать индикатор с права на лево. Это возможно?

Да, просто цикл строить не от первого на графике бара к последнему, а наоборот ;) и пересчитывать всю историю придётся каждый тик...
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий