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


Дата создания: 2023-11-27 15:57:15 Последнее изменение: 2023-11-27 15:57:15
Копировать: 0 Количество просмотров: 565
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия является основанной на равнолинейной стратегии трендового отслеживания. Она использует индикатор Ichimoku Cloud Graph, чтобы определить направление тренда, в сочетании с 200-дневным движущимся средним сигналом фильтрации, чтобы реализовать трендовое отслеживание.

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

Стратегия основывается на использовании преобразовательной линии и базовой линии на диаграмме облаков для определения направления тренда. Преобразовательная линия представляет собой среднюю цену за последние 9 дней, а базовая линия представляет собой среднюю цену за последние 26 дней.

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

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

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

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

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

Анализ рисков

Эта стратегия основана на определении направления тренда по показателям карты облаков, а сама карта облаков может создавать ошибочные сигналы. Если суждение будет искажено, эта стратегия может привести к убыткам.

Кроме того, неправильная настройка параметров также может привести к плохой эффективности стратегии. Если параметры линии преобразования слишком короткие, легко создать ложный сигнал; если параметры основной линии слишком длинны, эффективность отслеживания будет ухудшаться.

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

Для улучшения качества сигнала можно рассмотреть возможность использования в сочетании с другими индикаторами, например, индикатор KDJ, который определяет зоны перепродажи для фильтрации сигнала. Или использовать индикатор ATR для установки стоп-лосса.

Для получения более чувствительного торгового сигнала можно тестировать дополнительные комбинации параметров, например, регулировать параметры конверсионной линии на 5 или 7 дней. Также можно тестировать изменение параметров базовой линии на 20 дней или около того, чтобы сбалансировать эффекты отслеживания.

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

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

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

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

//@version=3
strategy(title="TK Cross > EMA200 Strat",  overlay=true)

ema200 = ema(close, 200)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line", linewidth=3)
plot(baseLine, color=#991515, title="Base Line", linewidth=3)
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement, color=green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red, 
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)

plot(ema200, color=purple, linewidth=4,title='ema200')
strategy.initial_capital = 50000

strategy.entry('tkcross', strategy.long, strategy.initial_capital / close, when=conversionLine>baseLine and close > ema200)
strategy.close('tkcross', when=conversionLine<baseLine)


start = input(2, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
increment = input(2, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
maximum = input(2, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
sus = input(true, "Show Up Trending Parabolic Sar")
sds = input(true, "Show Down Trending Parabolic Sar")
disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")
//"------Step Setting Definition------"
//"A higher step moves SAR closer to the price action, which makes a reversal more likely."
//"The indicator will reverse too often if the step is set too high."

//"------Maximum Step Definition-----")
//"The sensitivity of the indicator can also be adjusted using the Maximum Step."
//"While the Maximum Step can influence sensitivity, the Step carries more weight"
//"because it sets the incremental rate-of-increase as the trend develops"

startCalc = start * .01
incrementCalc = increment * .01
maximumCalc = maximum * .10

sarUp = sar(startCalc, incrementCalc, maximumCalc)
sarDown = sar(startCalc, incrementCalc, maximumCalc)

colUp = close >= sarDown ? lime : na
colDown = close <= sarUp ? red : na

plot(sus and sarUp ? sarUp : na, title="Up Trending SAR", style=circles, linewidth=3,color=colUp)
plot(sds and sarDown ? sarDown : na, title="Up Trending SAR", style=circles, linewidth=3,color=colDown)