Нужно написать некоторые вещи. Решил проверить всё сам, чтобы не надеяться на некоторые стандартные функции платформы. Написал простенький совочек, который проходится по барам от 0-го индекса к 11.
Чтобы не дублировались принты я добавил в сов переменную first.
В общем-то, всё остальное видно и понятно. Проходимся по барам от 0-го индекса до 11 и выводим принтом на каждом баре индекс выбранного бара и время его появления, далее запоминаем время выбранного бара в переменную time и после принтуем его с соответствующим индексом.
На условие if() не обращаем внимания. Он будет использоваться дальше..
Так вот. последний бар имеет индекс 0. И этот же последний бар является крайним баром в истории. Сегодня например 10.01.2016 года. Так вот на индексе 0 будет время открытия 2016.10.01. Но у меня в журнале:
2016 года и близко нет. Почему? Мне этот 2015.09.30 не нужно. Что за хрень такая?
Верно, период выбран с 01.10.2015 по 10.01.2016, НО.. это весь период. Последний бар с индексов 0 будет в числе 10.01.2016, а самый первый с индексом Bars-1 будет в дате 01.10.2015. ЧТо не так?
Вот я и принтую последние 11 числе, дабы не листать километров принтов в N-баров по всей имеющейся истории.
Принтую с 0-вого бара. Дата должна быть 10.01.2016. Почему нет?
В момент начала тестирования нулевой бар и есть 01.10.2015 00:00 а 10.01.2016 ещё и не придумали, даже с наступающим не поздравляли.
Запусти с 10.01.2016 по 11.01.2016 и получишь нулевым баром 10.01.2016 00:00
В момент начала тестирования нулевой бар и есть 01.10.2015 00:00 а 10.01.2016 ещё и не придумали, даже с наступающим не поздравляли.
Тогда какой индекс будет у бара последнего т.е. текущего?
Да ну. Вот переписал код так:
//+------------------------------------------------------------------+ //| Q.mq4 | //| hoz | //| forexhoz@gmail.com | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "forexhoz@gmail.com" #property version "1.00" #property strict bool first; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { first = false; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if (first == false) { string time = NULL; for (int i = 0; i < 11; i++) { Print ("i = ", i, "; Time[", i, "] = ", Time[i]); // Принтуем порядковый номер выбранного бара и время его появления в формате datetime time = TimeToString (Time[i], TIME_DATE); // Получаем строковый вид выбранного бара Print ("i = ", i, "; Time[", i, "] = ", time); // Принтуем порядковый номер выбранного бара и время его появления в строковом формате if (time == "2016.01.01") { // break; } } for (int i = Bars - 1; i >= Bars - 11; i--) { Print ("i = ", i, "; Time[", i, "] = ", Time[i]); // Принтуем порядковый номер выбранного бара и время его появления в формате datetime time = TimeToString (Time[i], TIME_DATE); // Получаем строковый вид выбранного бара Print ("i = ", i, "; Time[", i, "] = ", time); // Принтуем порядковый номер выбранного бара и время его появления в строковом формате if (time == "2016.01.01") { // break; } } first = true; } } //+------------------------------------------------------------------+
Вот что вижу в журнале:
2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 990; Time[990] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 990; Time[990] = 2015.09.16 16:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 991; Time[991] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 991; Time[991] = 2015.09.16 16:15:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 992; Time[992] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 992; Time[992] = 2015.09.16 16:00:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 993; Time[993] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 993; Time[993] = 2015.09.16 15:45:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 994; Time[994] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 994; Time[994] = 2015.09.16 15:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 995; Time[995] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 995; Time[995] = 2015.09.16 15:15:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 996; Time[996] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 996; Time[996] = 2015.09.16 15:00:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 997; Time[997] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 997; Time[997] = 2015.09.16 14:45:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 998; Time[998] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 998; Time[998] = 2015.09.16 14:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 999; Time[999] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 999; Time[999] = 2015.09.16 14:15:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 1000; Time[1000] = 2015.09.16 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 1000; Time[1000] = 2015.09.16 14:00:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 10; Time[10] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 10; Time[10] = 2015.09.30 21:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 9; Time[9] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 9; Time[9] = 2015.09.30 21:45:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 8; Time[8] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 8; Time[8] = 2015.09.30 22:00:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 7; Time[7] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 7; Time[7] = 2015.09.30 22:15:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 6; Time[6] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 6; Time[6] = 2015.09.30 22:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 5; Time[5] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 5; Time[5] = 2015.09.30 22:45:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 4; Time[4] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 4; Time[4] = 2015.09.30 23:00:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 3; Time[3] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 3; Time[3] = 2015.09.30 23:15:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 2; Time[2] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 2; Time[2] = 2015.09.30 23:30:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 1; Time[1] = 2015.09.30 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 1; Time[1] = 2015.09.30 23:45:00 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 0; Time[0] = 2015.10.01 2016.01.10 22:07:20.747 2015.10.01 00:00 Q EURUSD,M15: i = 0; Time[0] = 2015.10.01 00:00:00 2016.01.10 22:07:20.741 2015.10.01 00:00 Q test started
Как видно имеется 2 цикла:
1-ый от начала графика к концу.
2-ой от конца к началу.
Принтую значения времени о 0-ого бара в обоих случаях, и везде то же самое! Как тогда мне всё таки получить доступ к интересующим меня барам?
С какой бы стороны я не подошёл, всё-равно вижу только 2015 год!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужно написать некоторые вещи. Решил проверить всё сам, чтобы не надеяться на некоторые стандартные функции платформы. Написал простенький совочек, который проходится по барам от 0-го индекса к 11.
Чтобы не дублировались принты я добавил в сов переменную first.
В общем-то, всё остальное видно и понятно. Проходимся по барам от 0-го индекса до 11 и выводим принтом на каждом баре индекс выбранного бара и время его появления, далее запоминаем время выбранного бара в переменную time и после принтуем его с соответствующим индексом.
На условие if() не обращаем внимания. Он будет использоваться дальше..
Так вот. последний бар имеет индекс 0. И этот же последний бар является крайним баром в истории. Сегодня например 10.01.2016 года. Так вот на индексе 0 будет время открытия 2016.10.01. Но у меня в журнале:
2016 года и близко нет. Почему? Мне этот 2015.09.30 не нужно. Что за хрень такая?