Выбраны не те бары, которые нужно выбрать..
Нужно написать некоторые вещи. Решил проверить всё сам, чтобы не надеяться на некоторые стандартные функции платформы. Написал простенький совочек, который проходится по барам от 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 год!

Нужно написать некоторые вещи. Решил проверить всё сам, чтобы не надеяться на некоторые стандартные функции платформы. Написал простенький совочек, который проходится по барам от 0-го индекса к 11.
Чтобы не дублировались принты я добавил в сов переменную first.
В общем-то, всё остальное видно и понятно. Проходимся по барам от 0-го индекса до 11 и выводим принтом на каждом баре индекс выбранного бара и время его появления, далее запоминаем время выбранного бара в переменную time и после принтуем его с соответствующим индексом.
На условие if() не обращаем внимания. Он будет использоваться дальше..
Так вот. последний бар имеет индекс 0. И этот же последний бар является крайним баром в истории. Сегодня например 10.01.2016 года. Так вот на индексе 0 будет время открытия 2016.10.01. Но у меня в журнале:
2016 года и близко нет. Почему? Мне этот 2015.09.30 не нужно. Что за хрень такая?