Estrategia de ruptura de canal a corto plazo


Fecha de creación: 2023-10-25 14:40:21 Última modificación: 2023-10-25 14:40:21
Copiar: 0 Número de Visitas: 674
1
Seguir
1617
Seguidores

Estrategia de ruptura de canal a corto plazo

Descripción general

La estrategia es una estrategia de negociación a corto plazo basada en indicadores de canal. Utiliza brechas en el ascenso y descenso del canal para determinar el inicio y el final de la tendencia y luego tomar decisiones de compra y venta. En un mercado de tendencia fuerte, esta estrategia de ruptura puede obtener mejores ganancias.

Principio de estrategia

  1. La estrategia comienza por calcular los precios máximos y mínimos de un determinado período para construir la vía de subida y bajada.

  2. Si el precio sube y rompe la vía de la subida, se hace una entrada más. Si el precio baja y rompe la vía de la baja, se hace una entrada en blanco.

  3. El uso de un stop móvil para controlar el riesgo. La línea de stop se establece como la línea media del canal.

  4. Hay dos reglas de salida opcionales: Regreso a la línea media y Stop Loss móvil. La primera permite una salida rápida de ganancias, la segunda controla el riesgo.

  5. Se puede seleccionar el ciclo de la vía de acceso, ajustar el stop loss y otros parámetros según el entorno del mercado para optimizar la estrategia.

Análisis de las ventajas

  1. La operación es sencilla y fácil de llevar a cabo. Sólo se necesita monitorear la relación entre el precio y el canal y abrir posiciones de acuerdo a las reglas.

  2. El comercio de acuerdo a la tendencia, no hay riesgo de reversión.

  3. El paso es claro e intuitivo, con una clara señal de entrada.

  4. Con un buen margen de ganancias, generalmente se obtiene un retorno más satisfactorio.

  5. Hay muchos parámetros ajustables que se pueden optimizar para diferentes mercados.

Análisis de riesgos

  1. La brecha no siempre es exitosa, existe el riesgo de ser atrapado. Se necesita detener el daño a tiempo.

  2. Los canales requieren una formación periódica y no son adecuados para situaciones sísmicas.

  3. La pérdida de la línea media del canal puede ser demasiado conservadora para mantener una tendencia.

  4. La optimización de parámetros requiere el apoyo de datos históricos, y es posible que haya una optimización en el disco.

  5. Los puntos de ruptura mecánicos pueden aumentar el número de transacciones y el costo de los puntos de deslizamiento.

Dirección de optimización

  1. Evaluar el efecto de los diferentes parámetros de ciclo y seleccionar el ciclo de canal óptimo.

  2. Prueba los paros de regreso de la línea media y los paros móviles para elegir el mecanismo de salida más adecuado.

  3. Optimización de la amplitud del stop loss y reducción de la probabilidad de que el stop loss se active.

  4. Además, se incluyen filtros de tendencias para evitar brechas inapropiadas.

  5. Encuentra la posibilidad de aumentar tu posición, pero controla el riesgo.

Resumir

La estrategia en general es una estrategia de brecha a corto plazo más madura. Tiene reglas de entrada claras, medidas de control de riesgos en su lugar, y el funcionamiento es bueno. La optimización de los parámetros puede mejorar aún más el rendimiento de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


// Short Position
if timeRange and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, stop = SellEnter)
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()