Прорыв цены Bollinger Band A Стратегия

Автор:Чао Чжан, Дата: 2023-11-06 11:43:14
Тэги:

img

Обзор

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

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

Стратегия состоит из следующих основных показателей:

  1. Индикатор полосы Боллинджера, включающий среднюю рельсу Боллинджера, верхнюю рельсу Боллинджера и нижнюю рельсу Боллинджера.

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

  3. K-линейные паттерны, судите о некоторых распространенных моделях, таких как большая линия Ян, большая линия Инь и т. д. как об альтернативных торговых возможностях.

Условие покупки: цена пересекает нижнюю рельсу Боллинджера, индикатор Stoch показывает состояние перепроданности (K<20, D<20), быстрая скользящая средняя пересекает медленную скользящую среднюю.

Условие продажи: цена пересекает верхний рельс Боллинджера или прекращает потерю при прибыльности.

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

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

  1. Сочетая индикатор Болинджера и Stoch, он может покупать на очевидных низких точках, уменьшая риск.

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

  3. Принятие суждений о двойных условиях повышает стабильность и надежность стратегии.

  4. Механизм стоп-лосса позволяет избежать больших потерь.

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

  1. Торговля полосами Боллинджера подвержена ловушке, а ценовые сбои могут привести к относительно большим потерям.

  2. Индикатор Stoch имеет высокую вероятность выдачи ложных сигналов. Использование Stoch в одиночку сопряжено с большим риском потерь.

  3. На рынках с ограниченным диапазоном легко генерировать неправильные торговые сигналы.

  4. Необходимо своевременно остановить потери, чтобы контролировать риски.

  5. Нужно обратить внимание на силу прорывов, чтобы избежать отступления после резкого подъема.

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

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

  2. Оптимизировать параметры Боллинджера, регулировать средний цикл рельса, оптимизировать понимание точек покупки/продажи.

  3. Оптимизировать параметры Stoch, корректировать циклы линии K и линии D, улучшить надежность показателей.

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

  5. Добавьте стратегии стоп-лосса, такие как отслеживание стоп-лосса, движение стоп-лосса и т. Д., Чтобы контролировать риски потери.

  6. Оценить возможность добавления других технических индикаторов, таких как MACD, KDJ и т.д., для улучшения стабильности стратегии.

  7. Проверяйте различные периоды хранения для оптимизации соотношения прибыли и привлечения.

Резюме

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


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-03 18:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Bollinger e Tendência", overlay=true)

//MÉDIAS 
periodolenta = 14
periodosimples = 47
periodome = 7

psimples = input(title="Período da média simples", defval=periodosimples)
pexp = input(title="Período da média exponencial", defval=periodome)
pexplenta = input(title="Período da média exp lenta", defval=periodolenta)
msimples = sma(close, psimples)
mexp = ema(close, pexp)
mexplenta = ema(close, pexplenta)

plot(msimples, linewidth=2, color=yellow)
plot(mexp, linewidth=5, color=white)
plot(mexplenta, linewidth=2, color=orange)

//BOLLANGER
length = input(21, minval=2)
src = input(close, title="Source")
mult = input(1.5, minval=0.001, maxval=50)
basis = sma(src, length)
dev = mult * stdev(src, length)
upperBol = basis + dev
lowerBol = basis - dev

p1 = plot(upperBol, title="Upper", color=blue, linewidth=3)
p2 = plot(lowerBol, title="Lower", color=blue, linewidth=3)
fill(p1, p2, color = purple, transp=90)

//BBW (altura do Bollanger)
basis2 = sma(close, 21)
bbw = (upperBol-lowerBol)/basis2


//STOCH E FORÇA
source = close
lengthRSI = input(11, minval=2), lengthStoch = input(7, minval=2)
smoothK = input(3,minval=3), smoothD = input(4,minval=3)
OverSold = input(20), OverBought = input(80)
rsi1 = rsi(source, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
hline(OverSold,color=blue)
hline(OverBought,color=blue)



// Cor das Tendências (Verde ou Vermelho)
// Baseado no código: "Pivot Daily Price Color" (by Rimko)
pivot = (high + low + close ) / 3.0 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1]) 
pv = dtime_pivot ? dtime_pivot : na
pe = ema(close,periodome)
col = sma(close,1)>pv?green:red
col2 = sma(close,1)>pe?green:red
offs_daily = 0 
pp=plot(pv, title="Daily Pivot",style=linebr, color=black,linewidth=2) 
p=plot(sma(close,1), transp=100, editable=false)
pema = plot(pe, title="EMA",style=line, color=black,linewidth=2, transp = 50)
fill(p,pema,color=col2,title="EMA to price color", transp = 50)
fill(pp,p,color=col, title="Privot to price color", transp = 90) 


//*************************************************************************************************************************************************
// Candles (identificação):
// Baseado no código: "Candlesticks Pattern Identified" (by Repo32)
trend= input(5, minval=1, title="Trend in Bars")

DojiSize = input(0.05, minval=0.01, title="Doji size")
data=(abs(open - close) <= (high - low) * DojiSize)
//plotchar(data, title="Doji", color=white)
plotshape(data, title="Doji", color=white, style=shape.cross)
 //text='Doji'

data6=(close[1] > open[1] and open > close and open <= close[1] and open[1] <= close and open - close < close[1] - open[1] and open[trend] < open)
plotshape(data6, title= "Bearish Harami", color=red, style=shape.triangledown)
//, text="Harami\nde Baixa"

data8=(close[1] > open[1] and open > close and open >= close[1] and open[1] >= close and open - close > close[1] - open[1] and open[trend] < open)
plotshape(data8,  title= "Bearish Engulfing", color=red, style=shape.triangledown)
//, text="Engolfo\nde Baixa"

data13=(open[1]<close[1] and open<=open[1] and close<=open and open[trend] < open)
plotshape(data13, title= "Bearish Kicker", color=red, style=shape.triangledown)
//, text="Kicker\nde Baixa"

data14=(((high-low>4*(open-close))and((close-low)/(.001+high-low)>=0.75)and((open-low)/(.001+high-low)>=0.75))and open[trend] < open and high[1] < open and high[2] < open)
plotshape(data14,  title= "Hanging Man", location=location.belowbar, color=red, style=shape.triangledown)
//, text="Enforcado"

data7=(open[1] > close[1] and close > open and close <= open[1] and close[1] <= open and close - open < open[1] - close[1] and open[trend] > open)
plotshape(data7,  title= "Bullish Harami", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Mulher\nGrávida"

data9=(open[1] > close[1] and close > open and close >= open[1] and close[1] >= open and close - open > open[1] - close[1] and open[trend] > open)
plotshape(data9, title= "Bullish Engulfing", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Engolfo\nde Alta"

//uppercandle = highest(10)[1]
data10=(close[1] < open[1] and  open < low[1] and close > close[1] + ((open[1] - close[1])/2) and close < open[1] and open[trend] > open)
plotshape(data10, title= "Piercing Line", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Piercing"

lowercandle = lowest(10)[1]
data11=(low == open and  open < lowercandle and open < close and close > ((high[1] - low[1]) / 2) + low[1] and open[trend] > open)
plotshape(data11, title= "Bullish Belt", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Contenção\nde Alta"

data12=(open[1]>close[1] and open>=open[1] and close>open and open[trend] > open)
plotshape(data12, title= "Bullish Kicker", location=location.belowbar, color=lime, style=shape.triangleup)//, text="Kicker\nde Alta"


data5=(((high - low)>3*(open -close)) and  ((close - low)/(.001 + high - low) > 0.6) and ((open - low)/(.001 + high - low) > 0.6))
plotshape(data5, title= "Hammer", location=location.belowbar, color=white, style=shape.diamond)

data5b=(((high - low)>3*(open -close)) and  ((high - close)/(.001 + high - low) > 0.6) and ((high - open)/(.001 + high - low) > 0.6))
plotshape(data5b, title= "Inverted Hammer", location=location.belowbar, color=white, style=shape.diamond)
//, text="Martelo\nInvertido"

data2=(close[2] > open[2] and min(open[1], close[1]) > close[2] and open < min(open[1], close[1]) and close < open )
//plotshape(data2, title= "Evening Star", location=location.belowbar, color=red, style=shape.arrowdown, text="Estrela\nda Tarde")
plotchar(data2, title="Evening Star", color=white)

data3=(close[2] < open[2] and max(open[1], close[1]) < close[2] and open > max(open[1], close[1]) and close > open )
//plotshape(data3,  title= "Morning Star", location=location.belowbar, color=lime, style=shape.arrowup, text="Estrela\nda Manhã")
plotchar(data3, title="Morning Star", color=white, location=location.belowbar)

data4=(open[1] < close[1] and open > close[1] and high - max(open, close) >= abs(open - close) * 3 and min(close, open) - low <= abs(open - close))
//plotshape(data4, title= "Shooting Star", color=red, style=shape.arrowdown, text="Estrela\nCadente")
plotchar(data4, title="Shooting Star", color=white)



//**********************************************************************************************************



// Ações:

momento = strategy.position_size[0] > strategy.position_size[1]
valorcompra = valuewhen(momento, open, 0)
valorbbw = input(title="Altura Máxima do Bollinger", defval=10)

alerta = crossunder(close, lowerBol)
alertcondition(alerta, title='Abaixo da Banda Baixa', message='Fechou abaixo da banda baixa...!')

//data7 data9 data10 data11 data12

compra =  crossover(close, lowerBol) and ((k<=20) and (d<=20)) and (mexp>mexp[1])
//compra = (data7 or data9 or data10 or data11 or data12) and (msimples>msimples[1]) and ((k<=20) and (d<=20)) and (bbw<valorbbw/1000)
//compra =  (open<close) and (crossover (close, lowerBol)) and ((k<=20) and (d<=20)) and (bbw<valorbbw/1000) and (msimples>msimples[1])

venda = crossover(close, upperBol)
//(close >= (valorcompra + (valorcompra * 0.025))) 

strategy.entry ("Compra", strategy.long, when=compra)
strategy.entry ("Venda", strategy.short, when=venda)


//plotshape(series=compra, title="Compra", style=shape.triangleup, location=location.belowbar, color=green, text="COMPRA", size=size.small)
//plotshape(series=venda, title="Venda", style=shape.triangledown, location=location.abovebar, color=red, text="VENDA", size=size.small)  






Больше