
Эта стратегия состоит в том, чтобы использовать индикатор ADX для определения тенденции и создавать движущиеся средние в сочетании с двумя различными параметрами MA и EMA. Стратегия отслеживания тенденции, в которой нужно делать только больше.
Эта стратегия использует ADX для определения тенденции и силы рынка. ADX определяет наличие и силу тенденции, рассчитывая степень и направление изменения цены. Когда ADX растет, это означает, что он находится в восходящем тренде; когда ADX падает, это означает, что тенденция ослабевает.
Эта стратегия использует одновременно два различных параметров для поддержания решения. Они эффективно отсеивают случайность цены и показывают основную направленность цены. Когда цены растут, они превышают MA и EMA.
В сочетании с особенностями ADX и движущихся средних, эта стратегия создает торговые сигналы для определения направления тенденции: ADX повышается и открывает позиции, когда цена пробивает верхние MA и EMA, ADX падает или цена падает, когда MA / EMA находится на уровне, реализуя стратегию слежения за тенденцией.
Основные преимущества этой стратегии:
Однако эта стратегия также несет в себе некоторые риски:
Решение проблемы:
Эта стратегия также может быть оптимизирована в следующих аспектах:
Эта стратегия в целом является стратегией отслеживания только одного-многих трендов, которая использует ADX для определения силы тренда и помогает построить фильтрующий сигнал с помощью двух движущихся средних. Она эффективно контролирует возникновение неэффективных сделок, реализует эффект отслеживания тренда, является более стабильной стратегией отслеживания только нескольких трендов.
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or close < maValue or close < emaValue
if (exitCondition)
strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")