FuturePatternMemoryStrategy
Обзор
FuturePatternMemoryStrategy — это перенос MetaTrader-советников FutureMA и FutureMACD на платформу StockSharp. Исходные роботы записывали последовательности разностей индикаторов в CSV-файлы, накапливали статистику и по ней решали, какой прорыв (вверх или вниз) вероятнее. В версии на C# вся логика перенесена в память процесса, а все параметры вынесены в публичные настройки. Через параметр Source можно выбрать источник сигналов: спред сглаженных скользящих средних (FutureMA) или гистограмму MACD (FutureMACD).
Каждая закрытая свеча проходит через пять этапов:
- Проекция индикатора — рассчитывается выбранный осциллятор (спред SMMА или гистограмма MACD), результат масштабируется коэффициентом
NormalizationFactorи дискретизируется до целого числа, чтобы получить компактный «отпечаток» состояния. - Хеширование паттерна — поддерживается скользящее окно из последних
AnalysisBarsдискретных значений. После закрытия свечи окно преобразуется в строковый ключ, который идентифицирует текущий паттерн. - Анализ экстремумов — для прошлых
FractalDepthсвечей измеряется расстояние от открытия самой старой свечи до ближайшего максимума и минимума, значения переводятся в пункты. Это ожидаемая потенциальная прибыль, которую копили оригинальные эксперты. - Обновление памяти — по ключу достается (или создается) запись в словаре. Многократные появления паттерна усредняются с коэффициентом забывания
ForgettingFactor, что воспроизводит формулу(текущее + новое * z) / (1 + z)из MQL. - Оценка сигнала и исполнение — если вероятность роста выше, накоплено больше
MinimumMatchesсовпадений и ожидаемая цель превышаетMinimumTakeProfit, стратегия открывает или наращивает длинную позицию; для коротких позиций логика зеркальная. Уровни стоп-лосса и тейк-профита берутся из накопленных значений, при включенномEnableTrailingStopстоп подтягивается на четверть пути, как делал оригинальный робот.
Особенности конверсии
- Оба эксперта объединены в одну стратегию. Переключение между логикой FutureMA и FutureMACD осуществляется параметром
Source. - Файловая система заменена на
Dictionary<string, PatternStats>, поэтому хранение статистики происходит полностью в памяти и не зависит от внешних ресурсов. - Управление позицией повторяет MQL-версию: стоп устанавливается по полной величине усреднённого фрактального диапазона, тейк-профит — по доле
StatisticalTakeRatio. Если активирован трейлинг, стоп переносится на четверть пройденного расстояния. - Режим
ManualModeсоответствует флагуRuchnik— статистика собирается, но ордера не отправляются. - Параметр
AllowAddOnвоспроизводитdokupkaи разрешает добавлять объём при повторении паттерна на новой свече.
Логика торговли
- Источник данных
- MaSpread — разность сглаженных скользящих средних (SMMА) с периодами 6 и 24 по медианной цене свечи.
- MacdHistogram — разность основной и сигнальной линий MACD (12/26/9).
- Нормализация: коэффициент
NormalizationFactor(аналогtocnost) масштабирует разность индикаторов, после чего она делится на100 * MinPriceStepи округляется до целого. - Память паттернов: для каждого ключа хранится количество и средняя величина ожидания для покупок и продаж, обновление выполняется с учётом
ForgettingFactor. - Условия входа:
- Лонг — ожидаемая прибыль покупателей ≥ продавцов, число совпадений >
MinimumMatches, ожидаемая величина >MinimumTakeProfit. - Шорт — ожидаемая прибыль продавцов ≥ покупателей и аналогичные ограничения.
- Лонг — ожидаемая прибыль покупателей ≥ продавцов, число совпадений >
- Защита позиции: стоп равен полной усреднённой амплитуде, тейк-профит — её части
StatisticalTakeRatio. При включённом трейлинге стоп смещается после прохождения четверти расстояния.
Параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
CandleType |
Основной таймфрейм стратегии. | 30 минут |
Source |
Выбор между спредом SMMА и гистограммой MACD. | MaSpread |
FastMaLength / SlowMaLength |
Периоды SMMА для режима MaSpread. |
6 / 24 |
MacdFastLength / MacdSlowLength / MacdSignalLength |
Периоды MACD для режима MacdHistogram. |
12 / 26 / 9 |
AnalysisBars |
Количество баров в хеше паттерна. | 8 |
FractalDepth |
Глубина анализа экстремумов. | 4 |
MinimumMatches |
Минимальное число совпадений до входа. | 5 |
MinimumTakeProfit |
Минимально допустимое ожидаемое расстояние (в пунктах). | 30 |
NormalizationFactor |
Коэффициент масштабирования индикатора. | 10 |
ForgettingFactor |
Вес нового наблюдения в памяти. | 1.5 |
StatisticalTakeRatio |
Доля, используемая для тейк-профита. | 0.5 |
EnableTrailingStop |
Включает трейлинг стопа. | false |
ManualMode |
Только сбор статистики без сделок. | false |
AllowAddOn |
Разрешение на добор позиции. | true |
Volume |
Объём заявки. | 0.1 |
Практические рекомендации
- Подбор
NormalizationFactorиAnalysisBarsкритичен: слишком крупные значения приводят к редким хешам и плохой статистике, слишком мелкие — смешивают разные режимы рынка. - Если необходимо сохранять накопленную статистику между запусками, сериализуйте словарь после завершения теста или торговой сессии.
- Как и в MQL-версии, лучше запускать отдельный экземпляр стратегии для каждого инструмента и таймфрейма, чтобы статистика не смешивалась.