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


Дата создания: 2023-12-13 17:12:38 Последнее изменение: 2023-12-13 17:12:38
Копировать: 0 Количество просмотров: 733
1
Подписаться
1621
Подписчики

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

Обзор

Эта стратегия использует индикатор Бринского канала, чтобы изобразить полосы, основанные на ATR и регрессии Фибоначчи, в качестве ценового канала сетки. В сочетании с двумя средними линиями EMA, чтобы определить направление общей тенденции, в направлении тенденции выборочно устанавливается трассирующая остановка на цене в полосе Бринского канала, чтобы реализовать трассирующий арбитраж.

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

  1. При использовании оси в канале Бринга и на основе ATR и 4 линии Фибоначчи регрессии составляется траектория для строительства ценовых диапазонов.

  2. Быстрая линия EMA и медленная линия SMA образуют двойную равномерную линию, определяющую направление общей тенденции. Быстрая линия прорывает медленную линию как многоголовый рынок, а наоборот - как свободный рынок.

  3. В многоглавном рынке только делайте больше, выберите Булин вниз по рельсу, чтобы открыть позицию вдоль ценового прорыва; в пустом рынке только делайте пустоту, выберите Булин вверх по рельсу, чтобы открыть позицию вдоль ценового прорыва.

  4. Установка условий стоп-лосса: при резком повороте K-линии выйти из позиции в текущем направлении

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

  1. Используйте двойную равномерную линию, чтобы оценить тенденции на большом уровне и избежать обратной торговли.

  2. В сети каналов Брин ATR установлено множество цен на открытие позиций, что увеличивает успех открытия позиций.

  3. Возвращение Фибоначчи устанавливает дифференцированность цены в диапазоне, в котором разное количество позиций в диапазоне обеспечивает распределение капитала.

  4. Реальные условия остановки убытков позволяют быстро остановить убыток и снизить рентабельность.

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

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

  2. При чрезмерном колебании цена может прямо прорваться в сетчатую зону и не открыть позицию. Можно скорректировать параметры диапазона, чтобы увеличить возможность открытия позиции.

  3. Условия остановки убытков являются субъективными, и критерии идентификации различных трейдеров могут быть ошибочными. Рекомендуется тестировать и оптимизировать условия остановки убытков.

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

  1. Добавление вспомогательного анализа по оценке двойных равнолинейных тенденций по показателю apo.

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

  3. Снижение величины остановки и включение условий остановки ОТНОГО способа снижает погрешность.

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true,initial_capital=2000, default_qty_type=strategy.fixed, default_qty_value=1)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 trend

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend and close>ta.ema(close,80)
buy3=ta.crossunder(close,bott3) and longTrend and close>ta.ema(close,80)
buy4=ta.crossunder(close,bott4) and longTrend and close>ta.ema(close,80)
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")