Стратегия торговли динамическими скользящими средними

Автор:Чао Чжан, Дата: 2023-11-15 17:45:13
Тэги:

img

Обзор

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

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

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

Затем это значение изменения сравнивается с разницей между верхней и нижней полосами Боллинджеров. Если изменение MA больше, чем разница BB, это считается "взрывом тренда". Когда взрыв положительный, то есть изменение MA положительное, он генерирует длинный сигнал и зеленую полоску. Когда взрыв отрицательный, то есть изменение MA отрицательное, он генерирует близкий сигнал и красную полоску.

Кроме того, эта стратегия имеет фильтр RSI, который разрешает длинные сигналы только тогда, когда RSI выше порогового значения, избегая риска перелома тренда.

Преимущества

  • Динамический MA для эффективного отслеживания изменений тренда
  • BB как динамический индикатор в сочетании с MA для лучшего определения взрыва тренда
  • Фильтр RSI избегает ложных сигналов от низких отскоков
  • Длинный подходит только для стойкого бычьего рынка
  • Гибкие регулируемые параметры для различных продуктов и сроков

Риски

  • Долгие только не могут извлечь выгоду из нисходящего тренда
  • Чрезмерная зависимость от оптимизации параметров для различных продуктов и временных рамок
  • Неспособность эффективно улавливать изменение тренда может привести к большим потерям
  • Неправильные настройки фильтра RSI могут лишить торговых возможностей
  • Высокая чувствительность может привести к шумным сделкам

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

Руководство по оптимизации

Есть возможность для дальнейшей оптимизации:

  • Попробуйте различные источники цен, такие как закрытие, скользящие средние и т. Д. Для лучшего сглаживания

  • Корректировка параметров периода MA и BB для оптимизации различных продуктов

  • Попробуйте соотношение взаимосвязи вместо коэффициента чувствительности для более интуитивного значения показателя

  • Добавьте другие фильтры, такие как линии тренда, громкость и т. Д., Чтобы улучшить качество сигнала

  • Разработка краткосрочной стратегии, основанной на моделях показателей

  • Включить механизмы стоп-лосса для лучшего контроля рисков

Заключение

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


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

//@version=5

///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\

strategy('SmoothedWaddah', overlay=false, initial_capital=1)
sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
RSI14filter = input(40, title='RSI Value trade filter')

////////////MacD Calculation of price//////////////////////////////
calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

/////////BolingerBand Calculation of Price///////////////////////
calc_BBUpper(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis - dev

//////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\
point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

////////////////////T1 is change in MacD current  candle from previous candle Sensitivy amplifies calculation/////////////////////
t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity
//////////////////////T2 is  T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\
t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity

////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed//////////////
e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult)
//e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult))

//////signal bar printing.. Up if MacD positive .. Down if MacD negative//////////
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

///////plots difference in macD*Sensitivity, color change if increasing or decreasing. 
//////color is green/lime if explosion is up \ color is red/orange if explosion is down/////////
plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend')
plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend')
plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine')


////////////Entry conditions and Concept/////////////////////
////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied
////////////by the sensitivity so that it can be compared to the difference between BollingerBand. 
/////////////{this could have been a ratio maybe i will work with that in a different script.} 
/////////////I found that 135-175 sensitivy allows for values to be compared on most charts.....
////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line)
////////////it is considered an explosion in either the downside or the upside.The indicator will print
///////////a bar higher than the trigger line either green or red (up or down respectively)//////////////////

longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter
if longCondition
    strategy.entry('up', strategy.long)

strategy.close('up', trendDown > e1)



Больше