Торговая стратегия RSI Trend Momentum в сочетании с двойными скользящими средними и подтверждением объема

RSI SMA
Дата создания: 2024-11-28 17:02:32 Последнее изменение: 2024-11-28 17:02:32
Копировать: 0 Количество просмотров: 495
1
Подписаться
1617
Подписчики

Торговая стратегия RSI Trend Momentum в сочетании с двойными скользящими средними и подтверждением объема

Обзор

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

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

Основная логика стратегии основана на трех ключевых условиях:

  1. RSI oversold signal ((RSI<=30): используется для захвата рыночных возможностей перепродажи
  2. Двухлинейный многоголовый ряд ((SMA250>SMA500): подтверждение долгосрочной восходящей тенденции
  3. Подтверждение объема сделок ((текущий объем сделок> 20-циклическая средняя линия объема сделок)*2.5): проверка эффективности ценовых изменений

При одновременном выполнении этих трех условий, стратегия входит в многоочередную позицию. А сигнал о закрытии позиции вызывается прохождением долгосрочной средней линии под краткосрочной средней линией (мертвой форки). В то же время, стратегия устанавливает 5% стоп-лосс для контроля риска.

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

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

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

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

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

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

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

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

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


// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
rsi_lenght = input.int(10, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70

// Volume
vol_sma_length = input.int(20, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5

//SMA1
lengthSMA1 = input(250, title="Lenght SMA 1")
SMA1 = ta.sma(close, lengthSMA1)
//plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250")

//SMA2
lengthSMA2 = input(500, title="Lenght SMA 2")
SMA2 = ta.sma(close, lengthSMA2)
//plot(SMA2, color=#9803f5, linewidth=1, title="SMA500")


//Entry Logic
Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt )  

if Long_cond
    strategy.entry('Long', strategy.long)

//Close Logic
Long_close = ta.crossunder(SMA1,SMA2)

if Long_close
    strategy.close("Long")

//Bar colors
Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray
barcolor(color=Bar_color)

// Rsi value Plotshapes
plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0))

//Stop-Loss// this code is from author RafaelZioni, modified by wielkieef
pera(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5)
los = pera(stoploss)
strategy.exit('SL', loss=los)




// by wielkieef