
Стратегия движущейся средней полосы - это стратегия отслеживания тенденций, основанная на нескольких движущихся средних. Она одновременно отслеживает быстрые и медленные движущиеся средние, и создает торговый сигнал, когда цена прорывается через движущуюся среднюю полосу.
Стратегия использует одновременно 5 быстрых движущихся средних ((5, 8, 13, 20, 30 дней) и 4 медленно движущихся средних ((45, 70, 105 и 150 дней), в которых быстрая линия образует внутреннюю движущуюся среднюю полосу, а медленная линия - внешнюю. Для получения торгового сигнала требуется, чтобы цена прорвала 3 последовательных внутренних движущихся средних полосы K-линии, и большинство быстрых движущихся средних также прорвались одновременно.
Кроме того, эта стратегия также определяет долгосрочные тенденции. Только тогда, когда цена находится выше 200-дневной скользящей средней, рассматривается возможность получения сигнала покупки. Наоборот, только тогда, когда цена падает ниже 200-дневной скользящей средней, рассматривается возможность получения сигнала продажи.
Эта стратегия имеет следующие преимущества:
Дизайн с множеством движущихся средних позволяет точно определить направление тренда. Внутренние и внешние движущиеся средние полосы в сочетании с быстрой и медленной средней линией, хорошо идентифицируют тенденции средней и длинной линии.
Механизм последовательного прорыва эффективно фильтрует ложные прорывы. При этом требуется большая часть быстрых средних прорывов, чтобы обеспечить изменение тренда.
Судить о долгосрочных тенденциях, чтобы избежать их использования при сворачивании. В соответствии с суждением о 200-летней дате, только тогда, когда тенденция изменится, следует рассматривать возможность создания позиции.
Сочетание трендового отслеживания и перепродажи. Сам по себе движущийся средний имеет функцию отслеживания тренда, а в сочетании с индикатором перепродажи и перепродажи устанавливается точка остановки, риск контролируется.
Основные риски этой стратегии:
Риск неудачи в прорыве. Когда происходит ложный прорыв цены, стратегия не может полностью избежать потери.
Риск потери при шокирующем тренде. При длительном колебании рынка стоп-стоп может быть часто достигнут, что приводит к увеличению потерь.
Риск оптимизации параметров. Неправильная настройка параметров скользящих средних также может привести к ошибкам в торговых сигналах, что приводит к увеличению убытков.
Решение проблемы:
Стойки должны быть расслаблены, чтобы дать цене достаточно места для движения. Стойки могут быть сделаны с помощью Ljetrail, чтобы остановить ценовую линию.
Добавление показателей для определения тенденции, чтобы избежать создания позиций без направления в период колебаний. Например, фильтрация в сочетании с такими показателями, как DMI, MACD.
Используйте методы исторического отслеживания и оптимизации параметров для выбора оптимального параметрового сочетания. Следите за эффектом параметров на реальном диске для динамической оптимизации.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизируйте параметры скользящих средних, выбирая наилучшее число циклов. Вы можете найти оптимальную комбинацию параметров, повторяя скользящие средние разных циклов.
Повышение индексов определения тренда для фильтрации. Например, RSI для определения перекупа и перепродажи, Брин-лента для определения прорыва канала и т. Д. Избегайте слепого позиционирования при неясных тенденциях.
Применение адаптивных скользящих средних. Оптимизация параметров скользящих средних в режиме реального времени в соответствии с изменениями рынка и волатильностью, чтобы они лучше соответствовали текущим состояниям рынка.
В сочетании с моделью машинного обучения оценить вероятность тренда. Создать модель вероятности, чтобы оценить вероятность успешного прорыва, чтобы помочь системе принятия решений определить время вступления.
Оптимизация стратегии стоп-лосса, чтобы стоп-лосса лучше отслеживали цены. Например, traillig stop loss или автоматический стоп-лосс, чтобы стоп-линия была более умной.
Стратегия движущейся средней полосы является одной из наиболее распространенных стратегий отслеживания тенденций. Она одновременно сочетает в себе быструю и медленную линии, чтобы определить средне-длинную тенденцию, и устанавливает последовательный механизм фильтрации прорывов для принятия решения о входе.
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)
trima(_src, _len) =>
sma(sma(_src, _len), _len)
hma(_src, _len) =>
wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) +
ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)
ma(_src, _len) =>
hma__1 = hma(_src, _len)
ema_1 = ema(_src, _len)
sma_1 = sma(_src, _len)
wma_1 = wma(_src, _len)
trima__1 = trima(_src, _len)
zlema__1 = zlema(_src, _len)
dema__1 = dema(_src, _len)
tema__1 = tema(_src, _len)
matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 :
matype == "wma" ? wma_1 : matype == "trima" ? trima__1 :
matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1
ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)
maColor(ma, maRef) =>
if change(ma) <= 0 and ma05 < maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 > maRef
color.new(color.navy, 20)
else
if change(ma) < 0 and ma05 > maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 < maRef
color.new(color.navy, 20)
else
color.gray
aboveConfirmed(x,maRef)=>
above=true
for i=1 to x
if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
above:=false
above
aboveMost(x,len)=>
above=0
boolean=false
if close[len]>ma05[len]
above:=above+1
if close[len]>ma08[len]
above:=above+1
if close[len]>ma13[len]
above:=above+1
if close[len]>ma20[len]
above:=above+1
if close[len]>ma30[len]
above:=above+1
if close[len]>ma45[len]
above:=above+1
if close[len]>ma70[len]
above:=above+1
if close[len]>ma105[len]
above:=above+1
if close[len]>ma150[len]
above:=above+1
if close[len]>ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowMost(x,len)=>
above=0
boolean=false
if close[len]<ma05[len]
above:=above+1
if close[len]<ma08[len]
above:=above+1
if close[len]<ma13[len]
above:=above+1
if close[len]<ma20[len]
above:=above+1
if close[len]<ma30[len]
above:=above+1
if close[len]<ma45[len]
above:=above+1
if close[len]<ma70[len]
above:=above+1
if close[len]<ma105[len]
above:=above+1
if close[len]<ma150[len]
above:=above+1
if close[len]<ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowConfirmed(x,maRef)=>
below=true
for i=1 to x
if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
below:=false
below
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)
closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)
isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))
strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)