Торговая стратегия непрерывного разворота свечей с возвратом к среднему значению

EMA MR ENTRY EXIT FILTER Trend
Дата создания: 2025-02-19 10:51:35 Последнее изменение: 2025-02-19 10:51:35
Копировать: 2 Количество просмотров: 430
1
Подписаться
1617
Подписчики

Торговая стратегия непрерывного разворота свечей с возвратом к среднему значению

Обзор

Это торговая стратегия, основанная на принципе средней величины регрессии, которая используется для захвата краткосрочных возможностей поворота цены, идентифицируя последовательные понижательные и повышающие K-линии. Основная логика стратегии заключается в том, чтобы входить в рынок после появления 3 последовательных понижательных K-линий и выходить из рыночной позиции после появления 3 последовательных повышающих K-линий.

Стратегический принцип

Стратегия основана на следующих основных элементах:

  1. Счетчик последовательных K-линий: количество последовательных K-линий, поднимающихся и опускающихся, соответственно
  2. Условия входа: активирование многосигналов при последовательном появлении закроечного ценового падения K-линии с заданным количеством ((3 корень по умолчанию)
  3. Условия выхода: сигнализация по устранению позиции при последовательном появлении указанного количества (по умолчанию 3 корня) закрытых цен вверх по линии K
  4. EMA-фильтр: выборочно добавляется 200-циклическая скользящая средняя как условие фильтрации тренда
  5. Время начала и окончания сделки (Trading time window): время, в течение которого может быть ограничено время, необходимое для начала и окончания торгов

Стратегические преимущества

  1. Логика простая и понятная: стратегия использует простой метод подсчета K-линий, который легко понять и реализовать
  2. Приспособляемость: может применяться в различные временные периоды и торговые разновидности
  3. Гибкость параметров: параметры, такие как количество последовательных K-линий, циклы EMA, могут быть скорректированы по мере необходимости
  4. Управление рисками: управление рисками с помощью множества механизмов, таких как временные окна и фильтрация тенденций
  5. Высокая вычислительная эффективность: центральная логика требует только сравнения близлежащих к-линейных закрытых цен, операционная нагрузка небольшая

Стратегический риск

  1. Риски на трендовых рынках: возможные ложные прорывы на рынках с сильными тенденциями
  2. Чувствительность параметров: настройка количества последовательных K-линий оказывает большое влияние на эффективность стратегии
  3. Влияние скольжения: существенный риск скольжения может возникнуть в условиях резкой волатильности рынка
  4. Риск ложного сигнала: последовательность K-линий может быть нарушена рыночным шумом
  5. Потеря убытков: стратегия не имеет четкого механизма остановки убытков, что может привести к большему отступлению

Направление оптимизации стратегии

  1. Добавление механизмов остановки: рекомендуется добавлять фиксированные или отслеживаемые остановки для управления рисками
  2. Оптимизация условий фильтрации: могут быть введены такие показатели, как объем перевозок, колебания, как вспомогательные фильтры
  3. Динамическая коррекция параметров: учитывается требование количества последовательных K-линий, динамически корректируемых в зависимости от состояния рынка
  4. Увеличение управления хранилищами: можно разработать механизм создания и уменьшения хранилищ в пакетах, чтобы повысить доход
  5. Усовершенствование управления временем: настройка различных параметров транзакций для разных периодов времени

Подвести итог

Это рационально разработанная стратегия среднезначного возврата, чтобы получить прибыль от захвата краткосрочных шансов на отскок цены. Основные преимущества стратегии заключаются в логической простоте и адаптивности, но в практическом применении необходимо обратить внимание на контроль риска, рекомендуется повысить стабильность стратегии путем добавления механизмов остановки убытков, оптимизации условий фильтрации и т. Д.

Исходный код стратегии
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("3 Down, 3 Up Strategy", overlay=true, initial_capital = 1000000, default_qty_value = 200, default_qty_type = strategy.percent_of_equity, process_orders_on_close = true, margin_long = 5, margin_short = 5, calc_on_every_tick = true)


//#region INPUTS SECTION
// ============================================
// Time Settings
// ============================================
startTimeInput = input(timestamp("1 Jan 2014"), "Start Time", group = "Time Settings")
endTimeInput = input(timestamp("1 Jan 2099"), "End Time", group = "Time Settings")
isWithinTradingWindow = true

// ============================================
// Strategy Settings
// ============================================
buyTriggerInput = input.int(3, "Consecutive Down Closes for Entry", minval = 1, group = "Strategy Settings")
sellTriggerInput = input.int(3, "Consecutive Up Closes for Exit", minval = 1, group = "Strategy Settings")

// ============================================
// EMA Filter Settings
// ============================================
useEmaFilter = input.bool(false, "Use EMA Filter", group = "Trend Filter")
emaPeriodInput = input.int(200, "EMA Period", minval = 1, group = "Trend Filter")
//#endregion

//#region INDICATOR CALCULATIONS
// ============================================
// Consecutive Close Counter
// ============================================
var int aboveCount = na
var int belowCount = na

aboveCount := close > close[1] ? (na(aboveCount) ? 1 : aboveCount + 1) : 0
belowCount := close < close[1] ? (na(belowCount) ? 1 : belowCount + 1) : 0

// ============================================
// Trend Filter Calculation
// ============================================
emaValue = ta.ema(close, emaPeriodInput)
//#endregion

//#region TRADING CONDITIONS
// ============================================
// Entry/Exit Logic
// ============================================
longCondition = belowCount >= buyTriggerInput and isWithinTradingWindow
exitCondition = aboveCount >= sellTriggerInput

// Apply EMA Filter if enabled
if useEmaFilter
    longCondition := longCondition and close > emaValue
//#endregion

//#region STRATEGY EXECUTION
// ============================================
// Order Management
// ============================================
if longCondition
    strategy.entry("Long", strategy.long)
    
if exitCondition
    strategy.close_all()
//#endregion