Valdis:
да я уже свои свечки сделал .
Через CandleManager или просто перебор тиков? По идее должно работать через наследование от RangeCandleFactory (в доке я описал, как регистрировать свои фабрики). И код, судя по алго, должен быть таким:
class MyRangeCandleFactory : RangeCandleFactory
{
public override bool IsCandleFinished(CandleToken token, RangeCandle currentCandle, Trade trade)
{
return
trade.Price < (double)(currentCandle.HighPrice - currentCandle.PriceRange) ||
trade.Price > (double)(currentCandle.LowPrice + currentCandle.PriceRange);
}
}
Valdis:
а насчет рэйндж свечей , Range-бары строятся следующим образом: как только размах колебаний цен (High-Low) внутри текущего бара достигнет заданного порогового уровня, с приходом нового тика выше High или ниже Low сразу начнет строиться новый бар. В результате все бары будут иметь примерно одинаковый размах колебаний High-Low. Но при этом период времени, в течение которого будет строиться каждый из баров, будет различным для каждого бара.
range=100;
if (high-low)> range рисуется следующая свечка
причем учитываются текущие high и low цены внутри свечи, ведь к примеру цена сходив вверх но не превысив границ диапазона может уйти вниз .
а в вашем варианте if (high-open) > range else (open-low) >range рисуется новая свечка
например ставим рейндж =100 , открытие 120000 затем цена сбегала на 120050, не дойдя до верхней границы и развенулась вниз, до 119950, у вас еще свечка не закончилась, а рейндж от хая до лоу уже 100 пунктов
далее цена ушла до 119900 где у вас закончилась эта свеча, а рейндж внутри неё уже 150 пунктов, при заданном начально в 100п
в итоге диапазон внутри свечи иногда может быть больше чем заданный рейндж, что на мой взгляд не верно,
Мне Ваш алгоритм больше нравиться. И как сказал коллега Pike, в Кванте такой же алгоритм. Куда я против вас двоих?
В следующей версии сделаю как Вы написали.
Valdis:
p.s.
в текущей реализации рэйндж бары из s# это фактически крестики-нолики :)
Не понял аналогии.