Провёл следующий эксперимент:
Вывод в консоль: c1: 606, c2: 51
Т.е. тиков с флагом TICK_FLAG_LAST = 606, а фактических изменений цены last = 51.
Вопрос: почему тик содержит флаг TICK_FLAG_LAST, хотя цена фактически при этом не изменилась?
Вероятно потому, что эти тики были торговыми, и потенциально могли поменять цену last.
Вероятно потому, что эти тики были торговыми, и потенциально могли поменять цену last.
Действительно, это торговые тики:
MqlTick ticks[]; int counter1 = 0; int counter2 = 0; int counter3 = 0; double last = 0; long time = 0; const int ticksSize = CopyTicksRange("BP6Z19", ticks, COPY_TICKS_ALL, 1574987706000, 1574987706000 + 1000 * 60 * 60); for(int i = 0; i < ticksSize; i++) { if(ticks[i].time_msc < time) { Print("Pls sort ticks"); return; } const bool isLast = (ticks[i].flags & TICK_FLAG_LAST) == TICK_FLAG_LAST; const bool isBuy = (ticks[i].flags & TICK_FLAG_BUY) == TICK_FLAG_BUY; const bool isSell = (ticks[i].flags & TICK_FLAG_SELL) == TICK_FLAG_SELL; if(isLast) counter1++; if(ticks[i].last != last) counter2++; if(isBuy || isSell) counter3++; //if(isLast && ticks[i].last == last) PrintFormat("Last not changed. Prev: %.5f, curr: %.5f", last, ticks[i].last); last = ticks[i].last; time = ticks[i].time_msc; } PrintFormat("c1: %d, c2: %d, c3: %d", counter1, counter2, counter3);
Вывод в консоль: c1: 606, c2: 51, c3: 606
Тогда непонятно в чём смысл этого флага. Ведь в справке чётко написано:
TICK_FLAG_LAST – тик изменил цену последней сделки
- www.mql5.com
Действительно, это торговые тики:
Вывод в консоль: c1: 606, c2: 51, c3: 606
Тогда непонятно в чём смысл этого флага. Ведь в справке чётко написано:
TICK_FLAG_LAST – тик изменил цену последней сделки
Скорей всего, справка с форекса осталась - это ошибка. Вы, надеюсь, понимаете, что цена Ласт не всегда меняется после совершения сделки.
Естественно, понимаю. По этому и удивляюсь наличию отдельного флага, который по факту и не показывает изменилась цена или нет.
Естественно, понимаю. По этому и удивляюсь наличию отдельного флага, который по факту и не показывает изменилась цена или нет.
Если пришел тик, и Вы получили TICK_FLAG_LAST, а цена не изменилась, значит произошла сделка по предыдущей цене
это вполне нормально.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Провёл следующий эксперимент:
Вывод в консоль: c1: 606, c2: 51
Т.е. тиков с флагом TICK_FLAG_LAST = 606, а фактических изменений цены last = 51.
Вопрос: почему тик содержит флаг TICK_FLAG_LAST, хотя цена фактически при этом не изменилась?