estrategia comercial a corto plazo

El autor:¿ Qué pasa?, fecha: 2023-10-25 14:40:21
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación a corto plazo basada en las rupturas de canal. Utiliza las rupturas del tren superior e inferior del canal para determinar el comienzo y el final de las tendencias, y tomar decisiones comerciales en consecuencia. En mercados con tendencias fuertes, esta estrategia de ruptura puede generar ganancias decentes.

Estrategia lógica

  1. La estrategia calcula primero el más alto y el más bajo bajo durante un cierto período para construir el carril superior e inferior del canal.

  2. Si el precio se rompe por encima de la barandilla superior, ir largo. Si el precio se rompe por debajo de la barandilla inferior, ir corto.

  3. Utilice un stop loss móvil para controlar los riesgos. El stop loss se establece en la línea media del canal.

  4. Hay dos reglas de salida opcionales: regresar a la línea media o seguir el stop loss móvil.

  5. El período de canal y otros parámetros pueden ajustarse para optimizar la estrategia para diferentes condiciones de mercado.

Análisis de ventajas

  1. Simple de implementar, sólo hay que monitorear la relación precio-canal y seguir las reglas para el comercio.

  2. Comercio a lo largo de la tendencia, sin riesgos contra la tendencia.

  3. Un canal claro e intuitivo da señales de entrada explícitas.

  4. Un buen margen de ganancia, puede lograr rendimientos satisfactorios en la mayoría de los casos.

  5. Muchos parámetros ajustables para la optimización en diferentes mercados.

Análisis de riesgos

  1. La fuga puede fallar, existe el riesgo de quedar atrapados.

  2. El canal necesita un período para formarse, no adecuado para mercados de rango limitado.

  3. Volver a la media de la pérdida de parada puede ser demasiado conservador, incapaz de mantener las tendencias.

  4. La optimización de parámetros necesita datos históricos, sobreajuste posible en el comercio en vivo.

  5. La negociación mecánica de puntos de ruptura puede aumentar la frecuencia de las operaciones y los costes de deslizamiento.

Direcciones de optimización

  1. Evaluar los canales de diferentes períodos y seleccionar el óptimo.

  2. Prueba de volver a la mitad y mover la pérdida de parada para encontrar un mejor mecanismo de salida.

  3. Optimice el porcentaje de pérdida de parada para reducir las posibilidades de ser detenido.

  4. Añadir un filtro de tendencia para evitar operaciones de ruptura inapropiadas.

  5. Considere aumentar el tamaño de la posición pero controlar los riesgos.

Resumen de las actividades

En general, esta es una estrategia madura de ruptura a corto plazo. Tiene reglas de entrada claras, un control adecuado del riesgo y funciona bien en general. Se puede lograr una mejora adicional a través del ajuste de parámetros. Pero se deben tener en cuenta las limitaciones inherentes, los ajustes necesarios para diferentes mercados. Si se usa sistemáticamente, debe ofrecer ganancias globales consistentes.


/*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()


Más.