UsilaDobry В алгоритме SMAStrategy мы определяем время предпоследней свечи. Зачем? Только для привязки стратегии к реальному времени?
Поясните мне смысл этой строки
var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;
Здесь мы получаем левую границу времени текущей свечи:
Код
timeFrame.GetCandleBounds(Security).Min
и затем из нее вычитаем таймфрейм свечи. чтобы получить левую временную границу предыдущей свечи.
UsilaDobry
Получается временной период как-то зависит от инструмента? У каждого инструмента свой временной период? Тогда бы реальное время было разное... Я вот не пойму какая связь между временным периодом и инструментом...
Если взглянуть на реализацию этого метода (
GetCandleBounds):
Код
public static Range<DateTime> GetCandleBounds(this TimeSpan timeFrame, Security security)
{
if (security == null)
throw new ArgumentNullException("security");
return timeFrame.GetCandleBounds(security.GetMarketTime(), security.ExchangeBoard);
}
то дело прояснится, видно, что торговый инструмент используется для получения времени торговой площадки.
UsilaDobry
Прошу пояснить первое условие в этой строке
if (candle.OpenTime >= time && _parabolic.IsFormed && candle.State == CandleStates.Finished)
если время открытия полученной свечи больше или равно времени предпоследней свечи... Разве может быть время открытия последней меньше предпоследней? Они поступаю в стратегию на обработку по очереди...
Дело в том, что мы должны пропускать только последние свечи чтобы наша стратегия работала, исторические свечи, например, которые были час назад нас (например при таймфрейме 1 мин.) не устраивают, ведь, при запуске получения свечей мы начинаем получать все свечи, котрые доступны системе, в том числе и историчсески, т.е. те, которые прошли например час назад (если говорим о таймфрейме, например, в 1 минуту.).