Импульс с учётом сезонности (C#)
Импульс с учётом сезонности Объединяет моментум с исторической месячной доходностью. По завершённым 5-минутным свечам вычисляет M = Momentum(14) и A = SMA(14) от M. Из нулевой позиции покупает при S >...
Импульс с учётом сезонности
Объединяет моментум с исторической месячной доходностью. По завершённым 5-минутным свечам вычисляет M = Momentum(14) и A = SMA(14) от M. Из нулевой позиции покупает при S >= SeasonalityThreshold и M > A, продаёт при S <= -SeasonalityThreshold и M < A. По умолчанию SeasonalityThreshold = 0.5, в процентных пунктах.
Лонг закрывается, если сезонное условие больше не выполнено или M < A; шорт — если его сезонное условие нарушено или M > A. Каждая сигнальная заявка запускает паузу CooldownBars = 120 завершённых свечей для следующих сигнальных решений. Исполненные позиции отдельно защищены штатным локальным стопом StopLossPercent = 2 от фактической цены исполнения: контроль по bid/ask, выход рыночной заявкой без ожидания сигнальной паузы.
Обязателен SeasonalityHistoryFile: CSV в UTF-8 с месячными ценами открытия/закрытия и заголовком SecurityId,Month,Open,Close. Формат Month — yyyy-MM, десятичный разделитель — точка; цены должны быть положительными, месяцы для торгуемого инструмента — уникальными. Строки других инструментов игнорируются. Отсутствующий файл, некорректные строки или отсутствие подходящих наблюдений вызывают ошибку запуска.
На сигнальной свече S — среднее 100 × (Close / Open − 1) для того же календарного месяца прошлых лет в пределах SeasonalityLookbackYears = 10. Требуется не менее MinimumSeasonalSamples = 2 наблюдений. Текущий и будущие месяцы исключаются, даже если присутствуют в файле. При недостаточной истории новые позиции не открываются. Нужно передать реальные месячные цены инструмента; фиксированной таблицы сезонных оценок нет.
Отвечаю по тому, что написано на этой странице. Про остальное подскажу, где смотреть в документации.