Как узнать номер бара последней сделки?

 
Подскажите, пожалуйста, кто знает. Как узнать номер бара, когда по данной валюте произошла последняя сделка?
 
На мой взгялд не самый лучший способ решения вопроса:
Рассмотрим часовой график. Допустим сделка была в 14:00.
Просматраваеш историю сравнивая время сделки со временем начала формирования бара при совпадении смотриш номер бара.
 
Проще тогда уж лог файл писать при выставлении ордеров - там и искать, а так кто знает на каком т\ф принималось решение....
 
Проще тогда уж лог файл писать при выставлении ордеров - там и искать, а так кто знает на каком т\ф принималось решение....

какая разница в таймфрейме, главное ,что бы полная дата проведения сделки лежала в границах бара, а поповоду лога - не получится, потому ,что сейчас этот бар с номером 5, а после того, как сформируется еще пару баров его номер изменится на 2, т.е. бар ,на котором была совершена сделка будет уже 7мым
 
так если т\ф известен, то и отсчитать не сложно - было бы желание. А так номер бара на разном т\ф будет разным - ну произошла сделка в 14-03 - и дальше ? по минуткам один номер, по 5-минуткам другой..... и т.д.
 
так если т\ф известен, то и отсчитать не сложно - было бы желание. А так номер бара на разном т\ф будет разным - ну произошла сделка в 14-03 - и дальше ? по минуткам один номер, по 5-минуткам другой..... и т.д.


Только трудно будет учесть дырки в истории в виде выходных, праздников, просто непредвиденных дырок, ...... Это пооповоду подсчета

Да, прошла сделка в 14:03 - на любом таймфрейме ищи бар (непример на М15) это будет бар наччало формирования которого было с 14:00 до 14:15.

Я так понял, что нужно найти бар ,на котором произошла сделка на любом таймфреме, поэому исполльзование лога затруднительно, а использование полной даты сделки может выступать 100% ключем для поиска и будет работать на любом таймфрейме, показываю именно тот номер бара, который нужен.

Могу конечно и ошибаться :-)
 
Во-первых, спасибо :)

Ну хорошо. Допустим, ВРЕМЯ последней сделки я узнаю так:

datetime timeLastBuy = 0;
datetime timeLastSell = 0;

for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++)
{
OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
timeLastBuy = max(timeLastBuy, OrderOpenTime();
else if(OrderType() == OP_SELL)
timeLastSell = max(timeLastSell, OrderOpenTime();
}
}

А как узнать, какому БАРУ это время принадлежит? Нету же функции GetBarNumber(time)!
 
так я ж говорю, запиши при выставлении ордера в лог файл - кто мешает? - время есть, т\ф есть, и номер бара соответствующий выставленой позе. не уж то восстановить не сможешь ?????? читаем, сравниваем текущее время - делим нацело на т\ф - вот количество прошедших баров, добавляем к имеющемуся ....
 
хотя смотря как записывать будешь ;) - при выставлении позы бар всегда будет нулевой - то есть последний - нужна будет точка отсчета.... :).
 
или чего проще - разницу по времени нацело на т\ф и всех делов, если все на одном т\ф происходит (здесь NEO абсолютно прав) .. а зачем для этого функция ? - оператор в одну строку, а хочется функцию - так напиши и будет у тебя своя :).
 
Похоже что нам надо будет сделать штатную функцию поиска ближайшего бара по времени.