Тенденция, основанная на стратегии скользящих средних

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

img

Обзор

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

Принцип стратегии

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

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

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

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

Стратегия сочетает в себе индикатор оценки тренда Ichimoku Cloud и долгосрочный индикатор фильтрации тренда 200-дневной линии, который может эффективно отслеживать тенденции и фильтровать большинство ложных сигналов.

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

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

Стратегия опирается в основном на Облако Ичимоку для определения направления тренда, который сам по себе также может генерировать ложные сигналы.

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

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

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

С точки зрения параметров, проверьте больше комбинаций, например, настройка параметра линии конверсии на 5 или 7 дней для более чувствительных торговых сигналов.

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

Заключение

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


/*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)





Больше