Tendencia de las bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-22 16:51:27
Las etiquetas:

img

Resumen general

La idea de esta estrategia es una estrategia de bajo riesgo para las acciones de tendencia (o cualquier otro mercado de tendencia), con el objetivo de lograr una reducción mínima (por ejemplo, en el momento de escribir este artículo, AAPL solo tenía ~ 1,36% de reducción, FB ~ 1,93% de reducción y el SPY era de 0,80% de reducción y todos permanecieron rentables).

Principio

La estrategia utiliza el promedio móvil de 200 días, una banda de Bollinger personalizada, un TSI con un promedio móvil ponderado de 52 períodos y una fuerza de ADX.

Se da la señal de compra cuando la negociación está por encima de la media móvil de 200 + 5 velas han cerrado por encima de la media superior de Bollinger + el TSI es positivo + el ADX está por encima de 20.

Ventajas

Las ventajas de esta estrategia son la baja absorción y el riesgo mínimo. Es adecuada para la mayoría de las acciones de tendencia con una operación de bajo riesgo. Según los datos de la prueba, el rendimiento es alto y AAPL solo tuvo una absorción máxima del 1,36% y FB tuvo una absorción máxima del 1,93% durante el período de prueba.

Al combinar múltiples indicadores técnicos como bandas de Bollinger, líneas MA, indicadores TSI y usar ADX para determinar la fuerza de la tendencia, compra cuando la tendencia sube, tratando de captar el potencial alcista a medio y largo plazo de las acciones de tendencia.

También contiene una estrategia de stop loss que bloquea las ganancias al detener las pérdidas de manera oportuna cuando el indicador de la ETI cambia de dirección, controlando efectivamente los riesgos.

Análisis de riesgos

Los principales riesgos a los que se enfrenta esta estrategia son dos:

  1. Riesgo de evento de cisne negro Algunos eventos de cisne negro pueden causar que las acciones caigan bruscamente y no se pueda detener la pérdida.

  2. Cuando las acciones pasan de tendencia a consolidación, puede haber mayores bajadas.

Para el riesgo 1, se pueden establecer mecanismos de stop loss más estrictos, o se pueden utilizar paradas de intervención manuales.

Direcciones de optimización

La estrategia también puede optimizarse en los siguientes aspectos:

  1. Añadir una estrategia de stop loss para establecer puntos de stop loss más precisos para controlar mejor los riesgos.

  2. Optimizar los parámetros de la media móvil para probar la estabilidad de las diferentes combinaciones de parámetros.

  3. Aumentar los indicadores de impulso para determinar con mayor precisión el comienzo y el final de las tendencias.

  4. Prueba de los parámetros del ciclo de tiempo más largo para adaptarse a las operaciones a más largo plazo.

Conclusión

Esta estrategia determina las oportunidades de compra mediante el uso de ADX para determinar la fuerza de la tendencia, indicadores TSI para determinar la dirección de la tendencia, bandas de Bollinger para determinar las rupturas y promedios móviles para determinar las tendencias a largo plazo. La verificación de múltiples indicadores puede controlar los riesgos de manera efectiva. Esta estrategia es adecuada para el seguimiento a largo plazo de las acciones de tendencia con bajas reducciones y altos rendimientos.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © gary_trades
//This script has been designed to be used on trending stocks as a low risk trade with minimal drawdown, utilising 200 Moving Average, Custom Bollinger Band, TSI with weighted moving average and ADX strength. 
//Backtest dates are set to 2010 - 2020 and all other filters (moving average, ADX, TSI , Bollinger Band) are not locked so they can be user amended if desired. 
//Buy signal is given when trading above the 200 moving average + 5 candles have closed above the upper custom Bollinger + the TSI is positive + ADX is above 20.
//As back testing proved that this traded better only in tends then some Sell/Short conditions have been removed and this focueses on  Long orders.
//Only requires 2 additional lines of code to add shorting orders.
//Close for either long or short trades is signaled once the TSI crosses in the opposite direction indicating change in trend strength or if stop loss is trggered.
//Further optimization could be achieved by adding a stop loss.
//NOTE: This only shows the lower indicators however for visualization you can use my script "CUSTOM BOLLINGER WITH SMA", which is the upper indicators in this stratergy.
//------------
//@version=4
strategy(shorttitle="Trend Chaser", title="ADX_TSI_Bol Band Trend Chaser", overlay=false, pyramiding=0,
 currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10,
 initial_capital=10000, commission_value=0.1)
//------------
//Custom Bollinger Band
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(0.382, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=color.gray, offset = offset, display=display.none)
p1 = plot(upper, "Upper", color=color.gray, offset = offset, display=display.none)
p2 = plot(lower, "Lower", color=color.gray, offset = offset, display=display.none)
fill(p1, p2, title = "Background", color=#787B86, transp=85)
//------------
//Moving Average
MAlen = input(200, minval=1, title="Length")
MAout = sma(src, MAlen)
plot(MAout, color=color.black, title="MA", offset=offset, linewidth=2, display=display.none)
//------------
//True Strength WMA
TSlong = input(title="Long Length", type=input.integer, defval=25)
TSshort = input(title="Short Length", type=input.integer, defval=13)
TSsignal = input(title="Signal Length", type=input.integer, defval=52)
double_smooth(src, TSlong, TSshort) =>
    fist_smooth = wma(src, TSlong)
    wma(fist_smooth, TSshort)
price = close     
pc = change(price)
double_smoothed_pc = double_smooth(pc, TSlong, TSshort)
double_smoothed_abs_pc = double_smooth(abs(pc), TSlong, TSshort)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi2 = wma(tsi_value, TSsignal)
plot(tsi_value, color=color.blue)
plot(wma(tsi_value, TSsignal), color=color.red)
hline(0, title="Zero")
//------------
//ADX
adxlen = input(13, title="ADX Smoothing")
dilen = input(13, title="DI Length")
keyLevel = input(20, title="Keylevel for ADX")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

plot(sig, color=color.black, title="ADX", style=plot.style_histogram, transp=40)
plot(20, color=color.green, title="ADX Keyline", linewidth=1)
//------------
//Identify Triggers

//Back Test Range
start = timestamp("America/New_York", 2010, 1, 1, 9,30)
end = timestamp("America/New_York", 2030, 7, 1, 0, 0)

//Custom Bollinger Band
Long1 = close > upper[5] and close[5] > upper [6]
Short1 = close < lower[5] and close[5] < lower [6]

//Moving Average
Long2 = close >= MAout[1]
Short2 = close <= MAout[1]

//True Strength WMA
Long3 = tsi_value > tsi2  
Short3 = tsi_value < tsi2

//ADX
ADXkey = adx(dilen, adxlen) > 20 and adx(dilen, adxlen) < 100

//Buy
Buy = Long1 and Long2 and Long3 and ADXkey
CloseLong = crossunder(tsi_value,tsi2)

//Short
Sell = Short1 and Short2 and Short3 and ADXkey
CloseShort = crossover(tsi_value,tsi2)
//------------
//Entry and Exit
if time >= start and time <= end
    strategy.entry("Long", true, when = Buy)

strategy.close("Long", when = CloseLong)


Más.