Стратегия торговли с динамическим стоп-лоссом EMA

EMA RSI MACD
Дата создания: 2024-06-17 16:17:31 Последнее изменение: 2024-06-17 16:17:31
Копировать: 0 Количество просмотров: 635
1
Подписаться
1617
Подписчики

Стратегия торговли с динамическим стоп-лоссом EMA

Обзор

Стратегия основана на перекрестных сигналах 20-дневного и 200-дневного EMA и подтверждается в сочетании с относительно слабым RSI и скоплением и распространением MACD для получения сигналов покупки и продажи. В то же время стратегия использует методы динамического стоп-лосса и фиксированного целевого дохода для управления торговыми рисками и блокирования прибыли.

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

  1. Вычисляя 20-дневную и 200-дневную ЭМА, когда 20-дневная ЭМА превышает 200-дневную ЭМА, генерируется сигнал покупки; когда 20-дневная ЭМА превышает 200-дневную ЭМА, генерируется сигнал продажи.
  2. При использовании RSI и MACD для подтверждения перекрестного сигнала EMA, покупка осуществляется только тогда, когда RSI выше 50 и линия MACD выше линии сигнала; продажа осуществляется только тогда, когда RSI ниже 50 и линия MACD ниже линии сигнала.
  3. Установите фиксированный целевой уровень доходности (например, 20%) и первоначальный стоп-лосс (например, 10%).
  4. При достижении целевой прибыли от удержания позиции, цена стоп-лосса повышается до 10% от текущей цены для достижения динамического стоп-лосса.
  5. Когда цена достигает динамической цены стоп-лосса, ликвидное положение заканчивается прибыльным.

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

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

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

  1. Частые ложные сигналы могут возникать при перекрестных сигналах EMA, что приводит к увеличению стоимости торгов.
  2. В условиях нестабильных рынков эта стратегия может привести к последовательным потерям.
  3. Фиксированные целевые ставки доходности и стоп-лосс могут быть не адаптированы к различным рыночным условиям и нуждаются в корректировке в зависимости от волатильности рынка.

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

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

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

Стратегия, подтвержденная EMA-пересеченными сигналами в сочетании с RSI и MACD, а также методом управления рисками динамического стоп-лосса и фиксированной целевой прибыли, обещает стабильную прибыль на трендовых рынках. Однако в волатильных рынках стратегия может подвергаться риску частых торгов и непрерывных убытков. Поэтому требуется дальнейшая оптимизация и улучшение для повышения адаптивности и устойчивости стратегии.

Исходный код стратегии
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with RSI and MACD Confirmation and Dynamic Trailing Stop Loss", overlay=true)

// Calculate EMAs
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)

// Calculate RSI
rsi = ta.rsi(close, 14)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// Plot EMAs, RSI, and MACD on the chart
plot(ema20, color=color.blue, title="EMA 20")
plot(ema200, color=color.red, title="EMA 200")
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.orange)
hline(0, "Zero Line", color=color.gray)
plot(macdLine, title="MACD Line", color=color.aqua)
plot(signalLine, title="Signal Line", color=color.fuchsia)

// Strategy parameters
targetProfitPercent = 20
trailingStopIncrement = 10

// Strategy variables
var float initialStopLevel = na
var float trailingStopLevel = na

// Strategy rules with RSI and MACD confirmation
longCondition = ta.crossover(ema20, ema200) and rsi > 50 and macdLine > signalLine
shortCondition = ta.crossunder(ema20, ema200) and rsi < 50 and macdLine < signalLine

// Execute trades
if (longCondition)
    strategy.entry("Buy Call", strategy.long)
    initialStopLevel := strategy.position_avg_price * (1 - 0.10) // Initial stop-loss at 10% below entry price

if (shortCondition)
    strategy.entry("Buy Put", strategy.short)

// Calculate profit and loss targets
takeProfit = strategy.position_avg_price * (1 + targetProfitPercent / 100) // 20% profit target

// Update trailing stop loss
if (strategy.opentrades > 0)
    if (strategy.position_size > 0) // Long position
        if (strategy.netprofit >= takeProfit)
            // Update stop-loss based on profit increments
            if (trailingStopLevel == na)
                trailingStopLevel := strategy.position_avg_price * (1 - 0.10) // Initial trailing stop at 10% below entry price
            else
                if (strategy.position_avg_price * (1 - 0.10) > trailingStopLevel)
                    trailingStopLevel := strategy.position_avg_price * (1 - 0.10) // Increase stop-loss to 10% below current price
        
        // Apply trailing stop loss
        strategy.exit("Take Profit", "Buy Call", stop=trailingStopLevel)

// Plot buy and sell signals on the chart
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")