Стратегия торговли с двойной скользящей средней и управлением рисками

EMA SMA
Дата создания: 2025-02-21 09:36:33 Последнее изменение: 2025-02-27 17:18:43
Копировать: 1 Количество просмотров: 330
2
Подписаться
319
Подписчики

Стратегия торговли с двойной скользящей средней и управлением рисками Стратегия торговли с двойной скользящей средней и управлением рисками

Обзор

Стратегия представляет собой автоматизированную торговую систему, которая сочетает в себе многоциклическое отслеживание тенденций и управление рисками. Она в основном идентифицирует торговые возможности с помощью индикаторных движущихся средних ((EMA) за два временных периода: 5 минут и 1 минуту, а также применяет фиксированные процентные установки для остановки и получения прибыли для контроля риска.

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

Основная логика стратегии основана на двух временных периодах:

  1. Используя 5-минутную 200-циклическую ЭМА в качестве основного фильтра тренда, только когда цена находится выше этой средней линии, разрешается делать больше, а когда она находится ниже средней линии, разрешается делать меньше.
  2. На 1-минутном цикле используйте 20-циклическую ЭМА в качестве входного триггера. При пересечении цены вверх по этой средней линии используйте многосигнал, а при пересечении вниз - пустой сигнал.
  3. Управление рисками использует метод фиксированного соотношения, при котором стоп-лосс для каждой сделки устанавливается на 0,5% от цены входа, а целевая прибыль устанавливается в два раза выше, чем стоп-лосс, образуя риск-прибыль соотношения 1: 2.

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

  1. Мультициклический анализ обеспечивает более надежное определение тенденций и снижает риск ложных прорывов.
  2. Использование метода управления рисками с фиксированным соотношением делает управление деньгами более нормативным и систематизированным.
  3. При установке соотношения риска и прибыли в 1:2 можно получить прибыль даже при 40% выигрыше.
  4. Стратегическая логика проста, ясна, легко понятна и реализуема.
  5. Визуализированные торговые знаки помогают проверить обратную связь.

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

  1. Быстрые колебания рынка могут привести к частому появлению ложных сигналов.
  2. В периоды низкой волатильности стоп-стоп в 0,5% может быть слишком тесным.
  3. В зависимости от равномерного пересечения может быть задержка.
  4. Высокая частота транзакций может привести к более высоким транзакционным затратам.
  5. При быстрых рыночных переворотах возможны более крупные отступления.

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

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

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

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

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

//@version=5
strategy("Scalping Strategy: 1-min Entries with 5-min 200 EMA Filter", overlay=true, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=5, calc_on_every_tick=true)

// --- Higher Timeframe Trend Filter ---
// Get the 200-period EMA on a 5-minute timeframe
ema200_5 = request.security(syminfo.tickerid, "5", ta.ema(close, 200), lookahead=barmerge.lookahead_on)
plot(ema200_5, color=color.purple, title="5-min 200 EMA")

// --- Local (1-Minute) Indicators ---
// On a 1-minute chart, calculate a 20-period EMA for entry triggers
ema20_1 = ta.ema(close, 20)
plot(ema20_1, color=color.yellow, title="1-min 20 EMA")

// --- Entry Conditions ---
// For long entries:
//   - The overall trend is bullish: current close > 5-min 200 EMA
//   - The 1-min candle closes and crosses above its 20 EMA
longCondition = (close > ema200_5) and ta.crossover(close, ema20_1)

// For short entries:
//   - Overall bearish trend: current close < 5-min 200 EMA
//   - 1-min candle crosses below its 20 EMA
shortCondition = (close < ema200_5) and ta.crossunder(close, ema20_1)

// --- Risk Management Settings ---
// For scalping, use a tight stop loss. Here we set risk at 0.5% of the entry price.
var float riskPerc = 0.005  // 0.5% risk per trade

// Declare global variables for stop loss and take profit so they can be used outside the if-blocks
var float longStop  = na
var float longTP    = na
var float shortStop = na
var float shortTP   = na

// --- Trade Execution --- 
if (longCondition)
    entryPrice = close
    // Stop loss for long: 0.5% below entry
    longStop := entryPrice * (1 - riskPerc)
    // Take profit: twice the risk distance (1:2 risk-reward)
    longTP   := entryPrice + 2 * (entryPrice - longStop)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTP)

if (shortCondition)
    entryPrice = close
    // Stop loss for short: 0.5% above entry
    shortStop := entryPrice * (1 + riskPerc)
    // Take profit: twice the risk distance
    shortTP   := entryPrice - 2 * (shortStop - entryPrice)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortStop, limit=shortTP)

// --- Visual Debug Markers ---
// Plot a green triangle below bars when a long signal is generated
plotshape(longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
// Plot a red triangle above bars when a short signal is generated
plotshape(shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)