Двойная скользящая средняя стоп-профит и стоп-лосс стратегия трендовой торговли

SMA MA TP SL CROSSOVER
Дата создания: 2025-02-20 15:08:54 Последнее изменение: 2025-02-27 17:36:23
Копировать: 0 Количество просмотров: 331
2
Подписаться
319
Подписчики

Двойная скользящая средняя стоп-профит и стоп-лосс стратегия трендовой торговли Двойная скользящая средняя стоп-профит и стоп-лосс стратегия трендовой торговли

Обзор

Эта стратегия является системой торговли, основанной на скрещивании двух равновесных линий, в сочетании с механизмом управления рисками. Стратегия использует простую скользящую среднюю ((SMA) с 9 циклами и 21 циклом, чтобы захватить рыночные тенденции, а также устанавливает 1% стоп-лост и стоп-стоп для контроля риска. Система входит в рынок больше, когда она проходит через долгосрочную равновесную линию на краткосрочной равновесной линии, и выходит из рыночной позиции, когда она проходит через долгосрочную равновесную линию ниже короткой равновесной линии.

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

Основная логика стратегии основана на последовательности рыночных тенденций. Переходный момент в тренде определяется наблюдением за пересечением краткосрочных (цикл 9) и долгосрочных (цикл 21) скользящих средних. При пересечении долгосрочной средней линии на краткосрочной средней линии образуется “золотой форк”, указывающий на начало восходящей тенденции, и система посылает несколько сигналов. При пересечении долгосрочной средней линии под краткосрочной средней линии образуется “мертвый форк”, указывающий на возможный конец восходящей тенденции, и система выходит на рынок.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-02-21 00:00:00
end: 2024-12-13 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Moving Average Crossover with Stop Loss and Take Profit", overlay=true)

// Parameters for moving averages
short_length = input.int(9, title="Short Moving Average Length")  // Optimized for 15-minute time frame
long_length = input.int(21, title="Long Moving Average Length")   // Optimized for 15-minute time frame

// Parameters for risk management
stop_loss_percent = input.float(1.0, title="Stop Loss (%)") / 100  // 1% stop loss
take_profit_percent = input.float(1.0, title="Take Profit (%)") / 100  // 1% take profit

// Calculate moving averages
short_ma = ta.sma(close, short_length)
long_ma = ta.sma(close, long_length)

// Plot moving averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.orange, title="Long MA")

// Entry and exit conditions
long_condition = ta.crossover(short_ma, long_ma)  // Golden Cross
short_condition = ta.crossunder(short_ma, long_ma)  // Death Cross

// Execute strategy with stop loss and take profit
if (long_condition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=strategy.position_avg_price * (1 - stop_loss_percent), limit=strategy.position_avg_price * (1 + take_profit_percent)  )

if (short_condition)
    strategy.close("Long")  // Close long position on Death Cross

// Plot Buy/Sell Signals
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Draw 1% stop loss level as a transparent red rectangle
var float stop_loss_level = na
var float entry_price = na
if (strategy.position_size > 0)  // Only update when in a trade
    stop_loss_level := strategy.position_avg_price * (1 - stop_loss_percent)
    entry_price := strategy.position_avg_price

// Create transparent colors
transparent_red = color.new(color.black, 90)  // 90% transparency
transparent_green = color.new(color.green, 90)  // 90% transparency

// Plot stop loss and entry levels conditionally
plot(strategy.position_size > 0 ? stop_loss_level : na, color=transparent_red, title="Stop Loss Level", linewidth=1)
plot(strategy.position_size > 0 ? entry_price : na, color=transparent_green, title="Entry Price", linewidth=1)

// Fill the area between stop loss and entry price conditionally
fill( plot(strategy.position_size > 0 ? stop_loss_level : na),  plot(strategy.position_size > 0 ? entry_price : na),  color=transparent_red)