
Мобильная стоп-стратегия с отслеживанием тренда - это количественная торговая стратегия, которая сочетает в себе индикаторы, определяющие тренд, и механизм мобильного стоп-стратегии. Эта стратегия использует индикаторы супер-тенденции для определения текущего направления тренда и использует мобильную стоп-линию для отслеживания изменения цены в реальном времени, чтобы обеспечить отслеживание тренда и контроль риска.
Эта стратегия сначала рассчитывает индикатор супертенденции, чтобы определить, находится ли он в тенденции роста или снижения. Индикатор супертенденции, в сочетании с индикатором ATR и центральной точкой, позволяет более точно определить направление тенденции. Если индикатор супертенденции определяется как тенденция роста, он создает сигнал покупки; если определяется как тенденция снижения, он создает сигнал продажи.
При появлении сигнала “купить” стратегия открывает позицию; в то же время, она в реальном времени рассчитывает движущуюся линию остановки, которая рассчитывается как центральная точка минус значение показателя ATR. Если текущая цена закрытия выше этой линии остановки, то линия остановки будет двигаться в реальном времени, всегда оставаясь в разумной позиции остановки.
Эта стратегия одновременно сочетает в себе индикаторы ADX и RSI, чтобы отфильтровывать неподходящие торговые сигналы. Открытие позиции будет осуществляться только в том случае, если ADX будет больше установленного порога, а RSI будет находиться на разумном уровне.
Наибольшее преимущество этой стратегии заключается в том, что она позволяет хорошо понимать направление тренда и осуществлять его отслеживание. Супер-трендовый индикатор более точен, чем простая движущаяся средняя, и может быстро определять поворотные точки. В то же время, мобильный стоп-механизм может автоматически регулировать стоп-позицию, максимально блокировать прибыль и эффективно контролировать риск.
Кроме того, эта стратегия включает в себя индикаторы ADX и RSI для фильтрации колебаний, что позволяет избежать ошибочных сделок в периоды больших колебаний на рынке.
Наибольший риск этой стратегии заключается в том, что тенденция будет ошибочно определена, а индикатор сверхтенденции будет посылать ошибочный сигнал. Несмотря на то, что индикатор сверхтенденции лучше, чем простая движущаяся средняя, он неизбежно ошибочно определяется в сложных ситуациях. В этом случае необходимо полагаться на механизм остановки для контроля убытков.
Кроме того, неправильная настройка параметров стратегии также несет определенные риски. Например, параметры ATR через конференцию приводят к слишком радикальной коррекции стоп-линий; неправильная настройка параметров ADX и RSI также может пропустить торговые возможности или увеличить вероятность ошибочной торговли. Это требует поиска оптимальных параметров с помощью большого количества исторических отзывов.
Эта стратегия может быть улучшена в следующих аспектах:
Попытка использования других показателей, таких как DMI, KDJ и т. д., в сочетании с супертенденционными показателями, может повысить точность оценки.
Добавление модуля оптимизации адаптивных параметров на основе машинного обучения, чтобы ATR, ADX, RSI и другие параметры могли быть скорректированы в соответствии с рынком в реальном времени, а не просто с фиксированными значениями.
Введение альтернативных RSI, таких как эмоциональные индикаторы, фильтрующие сигналы. RSI не идеально подходит для оценки сложных ситуаций, в то время как социальные эмоциональные индикаторы могут лучше оценить теплоту рынка.
Добавление модуля управления позициями, динамическое регулирование размеров позиций в зависимости от того, насколько близко стоп-линия от текущей цены. Чем дальше от стоп-линии, тем больше позиций, чтобы увеличить прибыль.
Мобильная стоп-стратегия для отслеживания тенденций использует такие методы, как анализ тенденций, мобильные стоп-стратегии и многофакторная фильтрация. Она является более зрелой количественной стратегией, которая использует методы, такие как анализ тенденций, мобильные стоп-стратегии и многофакторная фильтрация.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bendre ADX Sup Trend", overlay = true)
///////////////////////////
// SuperTrend + Pivot Point
//////////////////////////
src = input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period")
AtrFactor=input(defval = 2, title = "ATR Factor")
AtrPd=input(defval = 18, title = "ATR Period")
StartDate = input(timestamp("1 Dec 2022"), title="Start Date")
EndDate = input(timestamp("12 Jan 2023"), title="End Date")
var float ph = na
var float pl = na
ph := ta.pivothigh(PPprd, PPprd)
pl :=ta.pivotlow(PPprd, PPprd)
float center = na
center := center[1]
// float lastpp = ph ? ph : pl ? pl : 0.0
float lastpp = na(ph) ? na(pl) ? na : pl : ph
if lastpp > 0
if na(center)
center := lastpp
else
center := (center * 2 + lastpp) / 3
Up = center - (AtrFactor * ta.atr(AtrPd))
Dn = center + (AtrFactor * ta.atr(AtrPd))
var float TUp = na
var float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown
// Lines
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend")
bsignalSSPP = close > Trailingsl
ssignalSSPP = close < Trailingsl
///////
// ADX
//////
lenADX = 14
th = 14
TrueRange = math.max(math.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? math.max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? math.max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, lenADX)
//////
// MA
/////
lenMA = 21
srcMA = input(close, title="Source")
// offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
offsetMA = input(0, title="Offset")
outMA = ta.sma(srcMA, lenMA)
//
// RSI
//
length = input( 14 )
overSold = input( 30 )
overBought = input( 65 )
price = close
vrsi = ta.rsi(price, length)
// Buy - Sell Entries
buy = bsignalSSPP and outMA < close and ADX > th
sell = ssignalSSPP
if (buy and vrsi > overBought)
// .order // Tuned version
strategy.entry("Buy", strategy.long)
// strategy.close("Sell", "close Sell")
if (sell) and (strategy.position_size > 0)
// strategy.entry("Sell", strategy.short)
strategy.close("Buy", "Close Buy")
// if(sell and vrsi < overSold )
// strategy.entry("Sell", strategy.short)
// if(buy) and (strategy.position_size > 0)
// strategy.close("Sell", "close Sell")