сделал по примеру Compress-and-Trail
базовый интервал 5 сек., сжимается в 60 сек. свечи
получил в итоге график, как на картинке
настораживает, что значения средних, расчитываемых по закрытиям этих сжатых минутных свечей запаздывают, то есть (видно на графике) было бы идеально, если бы значения средних (и красной и зеленой) сместить влево на 1 шаг (1 минуту)
это нормально или нет? я что-то туплю и никак не могу определиться
на втором скриншоте рядом график с одними и теми же средними, только слева расчитываются по сжатым данным, а в правом - по несжатым минутным свечам
разницу видно
код такой:
сжимаю
ISecurity minutes = source.CompressTo(new Interval(60, source.IntervalBase));
высчитываю MA по сжатым
MAfast = GenMA(minutes.ClosePrices, maFastLen);
кстати, нужно ли тут разжимать перед расчётом? я попробовал - разницы не увидел
вот это скопировал из примера, не тут ли собака порылась?
// Синхронизировать бары по времени
if (CurrentBar.Date < minuteBar.Date) // Дата (и время) начала несжатого бара меньше даты (и времени) начала сжатого.
continue; // Пропустить эту итерацию, поскольку еще не дошли до начального бара
while (CurrentBar.Date >= minuteBar.Date + oneMinute) // Пока дата несжатого бара больше или равна дате следующего сжатого бара
minuteBar = minutes.Bars[++iMinutes]; // Взять следующий сжатый бар
// Т.е. переходить к следующему сжатому бару до тех пор пока текущий не сжатый бар не окажется в его границах
// Как правило потребуется только одна итерация этого цикла, но если context.TradeFromBar > 0, то итераций может быть несколько.
разжатие мне реально потребовалось только при выводе средних на график
Это из-за метода декомпрессии?
всё прочитал про сжатие-разжатие, но так и не до конца понял "логику" разжатия - что и зачем
ps. судя по скриншоту в первом посте - так и есть, метод декомпрессии 3 - картинка такая же