Стратегия прорыва двойной скользящей средней колебания

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

img

Обзор

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

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

Основными этапами этой стратегии являются:

  1. Вычислить два скользящих средних, один с более коротким периодом и один с более длительным периодом.

  2. Добавить один ATR выше и ниже более короткого MA, чтобы сформировать канал.

  3. Сигнал покупки генерируется, когда цена проходит через канал вверх. Сигнал продажи генерируется, когда цена проходит через канал вниз.

  4. Включите основное суждение о тренде. Действительные торговые сигналы генерируются только тогда, когда краткосрочный прорыв соответствует основному направлению тренда.

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

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

Преимущества этой стратегии:

  1. Канал двойного MA отражает текущий диапазон колебаний цен.

  2. Параметр ATR позволяет диапазону каналов отслеживать волатильность рынка в режиме реального времени.

  3. Основная тенденция фильтрации избегает ложных сигналов на колеблющихся рынках.

  4. Правила просты и понятны, подходят для изучения и исследования.

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

Риски:

  1. Неудачные прорывы могут привести к упущению хороших возможностей.

  2. Определение основного тренда имеет временную задержку и не может устранить все ложные сигналы.

  3. Стоп-лосс может проникать в волатильные рынки.

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

Способы оптимизации этой стратегии:

  1. Оптимизировать параметры MA для различных продуктов.

  2. Оптимизировать параметр ATR для лучшего отслеживания волатильности.

  3. Добавьте дополнительные фильтры, такие как индикаторы объема и волатильности, чтобы избежать ложных сигналов.

  4. Используйте машинное обучение для автоматической оптимизации параметров.

Заключение

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


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

//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Больше