Стратегия свинг-трейдинга сочетает в себе динамические длинные и короткие позиции с системой сигналов пересечения скользящих средних

EMA SMA RSI ATR TP SL
Дата создания: 2024-12-12 11:11:15 Последнее изменение: 2024-12-12 11:11:15
Копировать: 1 Количество просмотров: 360
1
Подписаться
1617
Подписчики

Стратегия свинг-трейдинга сочетает в себе динамические длинные и короткие позиции с системой сигналов пересечения скользящих средних

Обзор

Эта стратегия является волатильной торговой стратегией, основанной на технических показателях, которая сочетает в себе множество сигналов, таких как пересечение равной линии, RSI-перекуп, перепродажа и ATR-стоп-стоп. В основе стратегии лежит захват рыночных тенденций с помощью пересечения краткосрочных EMA и долгосрочных SMA, а также использование RSI для подтверждения сигналов и динамического установления стоп-стоп и стоп-позиций с помощью ATR.

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

В стратегии используется многоуровневое сочетание технических показателей для построения торговой системы:

  1. Тренд-оценка: для определения направления тренда используется пересечение 20-циклической EMA и 50-циклической SMA. В верхней части EMA проход SMA рассматривается как многозначный сигнал, а в нижней части - как пустой сигнал.
  2. Движущий подтверждающий слой: используйте RSI для определения перекупа и перепродажи, когда RSI ниже 70 разрешается делать больше, а выше 30 - делать меньше.
  3. Волатильный слой: используется 14-циклический ATR для вычисления стоп-стоп-позиции, с установкой стоп-стоп в 1,5 раза ATR и стоп-стоп в 3 раза ATR.
  4. Управление позициями: динамически рассчитывается количество открытых позиций на основе исходного капитала и риска на одну сделку (по умолчанию 1%).

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CryptoRonin84

//@version=5
strategy("Swing Trading Strategy with On/Off Long and Short", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input for turning Long and Short trades ON/OFF
enable_long = input.bool(true, title="Enable Long Trades")
enable_short = input.bool(true, title="Enable Short Trades")

// Input parameters for strategy
sma_short_length = input.int(20, title="Short EMA Length", minval=1)
sma_long_length = input.int(50, title="Long SMA Length", minval=1)
sl_percentage = input.float(1.5, title="Stop Loss (%)", step=0.1, minval=0.1)
tp_percentage = input.float(3, title="Take Profit (%)", step=0.1, minval=0.1)
risk_per_trade = input.float(1, title="Risk Per Trade (%)", step=0.1, minval=0.1)
capital = input.float(10000, title="Initial Capital", step=100)

// Input for date range for backtesting
start_date = input(timestamp("2020-01-01 00:00"), title="Backtest Start Date")
end_date = input(timestamp("2024-12-31 23:59"), title="Backtest End Date")
inDateRange = true

// Moving averages
sma_short = ta.ema(close, sma_short_length)
sma_long = ta.sma(close, sma_long_length)

// RSI setup
rsi = ta.rsi(close, 14)
rsi_overbought = 70
rsi_oversold = 30

// ATR for volatility-based stop-loss calculation
atr = ta.atr(14)
stop_loss_level_long = strategy.position_avg_price - (1.5 * atr)
stop_loss_level_short = strategy.position_avg_price + (1.5 * atr)
take_profit_level_long = strategy.position_avg_price + (3 * atr)
take_profit_level_short = strategy.position_avg_price - (3 * atr)

// Position sizing based on risk per trade
risk_amount = capital * (risk_per_trade / 100)
position_size = risk_amount / (close * sl_percentage / 100)

// Long and Short conditions
long_condition = ta.crossover(sma_short, sma_long) and rsi < rsi_overbought
short_condition = ta.crossunder(sma_short, sma_long) and rsi > rsi_oversold

// Execute long trades
if (long_condition and inDateRange and enable_long)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_level_long, limit=take_profit_level_long)

// Execute short trades
if (short_condition and inDateRange and enable_short)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_level_short, limit=take_profit_level_short)

// Plot moving averages
plot(sma_short, title="Short EMA", color=color.blue)
plot(sma_long, title="Long SMA", color=color.red)

// Plot RSI on separate chart
hline(rsi_overbought, "Overbought", color=color.red)
hline(rsi_oversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)

// Plot signals on chart
plotshape(series=long_condition and enable_long, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=short_condition and enable_short, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Background color for backtest range
bgcolor(inDateRange ? na : color.red, transp=90)