Estrategia de canal de onda y stop loss


Fecha de creación: 2023-11-23 15:49:12 Última modificación: 2023-11-23 15:49:12
Copiar: 1 Número de Visitas: 772
1
Seguir
1617
Seguidores

Estrategia de canal de onda y stop loss

Descripción general

La estrategia de bandas de Bollinger es una estrategia clásica de seguimiento de tendencias y sobrecompra de señales de sobreventa que utiliza bandas de fluctuación de líneas de Bollinger. Esta versión, basada en la estrategia original, agrega un mecanismo de suspensión de pérdidas para controlar el riesgo.

La estrategia determina el exceso de compra y venta en el mercado a través de la horquilla dorada de la banda de Brin, y el seguimiento de la tendencia mediante el seguimiento de la banda de Brin. La zona entre la banda de Brin y la banda de Brin refleja el rango de fluctuación del mercado actual.

El principio

La banda de Brin es un indicador técnico que refleja la volatilidad y la amplitud de la oscilación del mercado. Cuando el precio toca el borde de la banda de Brin, indica que el mercado está en una situación de sobreventa.

Esta estrategia se combina con las señales de sobrecompra y sobreventa de las bandas de Brin para establecer posiciones de seguimiento de tendencias y agregar un mecanismo de stop loss para controlar el riesgo.

Cuando el precio sube a través de la banda de Brin y baja, indica que el mercado pasa de la zona de sobreventa a la zona razonable, en este momento se puede establecer una posición de más tiendas. Cuando el precio baja a través de la banda de Brin y baja, indica que el mercado entra en la zona de sobreventa, en este momento se puede establecer una posición de tiendas en blanco.

Después de la creación de la posición, el límite de pérdidas fijo por ciento para controlar el riesgo. Cuando la pérdida excede el límite de pérdidas fijas, el límite de pérdidas se retira de la posición actual, para evitar pérdidas excesivas.

Las ventajas

  1. La estrategia se combina con el indicador de las bandas de Brin para determinar las zonas de sobreventa y sobreventa, y se consigue un bajo precio y un alto precio mediante la determinación de la intersección de los precios con las vías ascendentes y descendentes.

  2. Utiliza las características de volatilidad de las bandas de Brin para seguir tendencias

  3. Aumentar el mecanismo de stop loss para controlar de manera efectiva las pérdidas máximas de una sola transacción

  4. La combinación de seguimiento de tendencias y paradas de pérdidas permite obtener ganancias estables

Riesgo y optimización

  1. La configuración de los parámetros de la banda de Bryn afecta a la calidad de la señal de negociación. La longitud de la vía media n y el múltiplo de la diferencia estándar k deben ajustarse de manera razonable según los diferentes mercados, de lo contrario afectan a la precisión de la señal de negociación.

  2. El alto o bajo nivel de los parados puede afectar a la estabilidad de los beneficios. El alto nivel de los parados aumenta el riesgo de pérdidas individuales, y el bajo nivel de los parados aumenta la probabilidad de que los parados se activen.

  3. Se puede considerar la posibilidad de filtrar la señal en combinación con otros indicadores para mejorar la precisión de la señal de negociación.

  4. Se pueden probar diferentes configuraciones de tiempo de tenencia de posiciones, como la combinación de la escala horaria o el período más corto de las bandas de Brin para una mayor frecuencia de negociación y una mayor eficiencia en el uso de los fondos.

Resumir

Esta estrategia, combinada con el establecimiento de posiciones en las zonas de sobreventa y sobrecompra de las bandas de Brin, es una estrategia de seguimiento de tendencias común para controlar el riesgo. Al optimizar la configuración de los parámetros, se puede obtener una ganancia estable combinada con una señal de negociación más precisa y la configuración de los niveles de parada.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na

var bool nextExpectedIsLong = true

var bool existedLong = false
var bool existedShort = false

buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)

if (buyEntry and nextExpectedIsLong == true)
	strategy.entry("BBandLE", strategy.long, comment="BBandLE")
	nextExpectedIsLong := false
	if(nz(strategy.position_size[1], 0) < 0) // new position detected
	    lastTradePrice := close
	    stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
	    stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandLE")

if (sellEntry and nextExpectedIsLong == false)
	strategy.entry("BBandSE", strategy.short, comment="BBandSE")
	nextExpectedIsLong := true
	if(nz(strategy.position_size[1], 0) > 0) // new position detected
        lastTradePrice := close
        stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
        stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandSE")

strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)

// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
//     strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// 	lastTradePrice := close
// 	stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// 	stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
//     strategy.exit("BBandSE", strategy.short, comment="BBandSE")
//     lastTradePrice := close
//     stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
//     stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))

plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)