Количественная стратегия DPD-RSI-BB

Автор:Чао Чжан, Дата: 2023-11-22 16:17:52
Тэги:

img

Обзор

Количественная стратегия DPD-RSI-BB сочетает в себе три индикатора - DPD, RSI и полосы Боллинджера для торговли акциями.

Логика стратегии

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

  1. Показатель DPD для определения тенденции

    Он строит линию DEMA с использованием двойных средних EMA и рассчитывает процент дифференциальной цены по отношению к DEMA в качестве индикатора определения тренда.

  2. Индикатор RSI для оценки условий перекупления и перепродажи

    Он рассчитывает значение RSI за определенный период. RSI выше верхнего предела оценивается как зона перекупленности, а RSI ниже нижнего предела оценивается как зона перепроданности.

  3. Боллингерские полосы для определения поддержки и сопротивления

    Он рассчитывает среднюю полосу, верхнюю полосу и нижнюю полосу за определенный период.

  4. Всеобъемлющее суждение

    Когда процент дифференциальной цены DPD ниже порога, RSI ниже нижнего предела зоны перепродажи, а цена ниже верхней полосы Боллинджера, генерируется бычий сигнал.

Анализ преимуществ

Стратегия имеет следующие преимущества:

  1. Всеобъемлющее суждение с использованием нескольких показателей позволяет избежать ложных сигналов от одного показателя.

  2. Использование индикатора RSI для оценки условий перекупа и перепродажи позволяет заранее установить стоп-лосс и взять точки прибыли.

  3. Показатель DPD может лучше определить ценовые тенденции, в то время как полосы Боллинджера могут определить уровни поддержки и сопротивления.

  4. Гибкие параметры позволяют оптимизировать различные запасы.

Риски и оптимизация

Стратегия также сопряжена с некоторыми рисками:

  1. Сочетание нескольких индикаторов делает стратегию довольно сложной с трудом настройки параметров.

  2. Показатели, такие как DPD и RSI, имеют определенные задержки, которые могут не соответствовать наилучшему сроку входа.

  3. Параметры должны быть оптимизированы в соответствии с различными циклами и характеристиками запасов.

Следующие аспекты могут быть оптимизированы:

  1. Настройка параметров индикатора для оптимизации пунктов входа и выхода.

  2. Добавить механизмы остановки потери для строгого контроля по торговым потерям.

  3. Испытание на различных запасах и параметрах цикла для оценки эффективности стратегии.

Заключение

Стратегия DPD-RSI-BB сочетает в себе несколько индикаторов для суждений, чтобы избежать ложных сигналов от одного индикатора. Благодаря оптимизации параметров она может стать относительно сильной стратегией торговли акциями.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("DPD+RSI+BB ",overlay=true)
price=close




//############### DPD  #################


buyper =input(-1,step=0.1)
sellper=input(0,step=0.1)
demalen = input(50,title="Dema Length")
e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2
demadifper =  ((price-demaprice)/price)*100


//############## DPD #####################

//############# RSI ####################


lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 60 )

vrsi = rsi(price, lengthrsi)

//########## RSI #######################

//############### BB #################

lengthbb = input(50, minval=1)
multlow = input(1.5, minval=0.001, maxval=50,step=0.1)
multup = input(1.5,minval=0.001,maxval=50,step=0.1)

basisup = sma(close, lengthbb)
basislow = sma(close, lengthbb)

devup = multup * stdev(close, lengthbb)

devlow = multlow*stdev(close,lengthbb)

upperbb = basisup + devup
lowerbb = basislow - devlow

p1 = plot(upperbb, color=blue)
p2 = plot(lowerbb, color=blue)
fill(p1, p2)



//########### BB ###################




yearfrom = input(2018)
yearuntil =input(2039)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  (demadifper<buyper) and crossover(vrsi,overSold) and  (price < upperbb) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if (   price>upperbb and vrsi>overBought and demadifper>sellper   and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Больше