Estrategia de prueba de retroceso de candeleros de inversión

El autor:¿ Qué pasa?, Fecha: 2024-01-26 16:04:26
Las etiquetas:

img

Resumen general

Esta estrategia identifica patrones de candlestick para rastrear las señales de trading e incorpora la lógica de take profit y stop loss para el trading automatizado.

Estrategia lógica

  1. Identificar patrones de candelabro: Cuando el tamaño del cuerpo de la vela es menor que el umbral y la apertura es igual a cerrar, se identifica como señal de seguimiento.

  2. Largo/corto: cuando se identifique un patrón de candelería de reversión, ir largo si el cierre anterior fue superior a hace 2 días, ir corto si el cierre anterior fue inferior a hace 2 días.

Ventajas

  1. Los patrones de inversión de velas capturan efectivamente los puntos de inflexión del precio, mejorando la validez de las señales comerciales.

  2. El mecanismo de toma de ganancias/detención de pérdidas controla eficazmente los riesgos, bloquea las ganancias, evita el aumento de las pérdidas.

  3. La negociación automatizada sin intervención manual reduce los costes de negociación y mejora la eficiencia.

Los riesgos

  1. La subjetividad en la identificación de patrones de velas puede conducir a juicios erróneos.

  2. Las configuraciones incorrectas del punto de toma de ganancias/detención de pérdidas pueden perder tendencias más grandes o detener pérdidas prematuramente.

  3. Los parámetros estratégicos necesitan pruebas y optimización constantes, de lo contrario se sobreajustan.

Direcciones de optimización

  1. Optimizar las condiciones de identificación de velas con más indicadores para mejorar la precisión.

  2. Prueba en diferentes instrumentos de negociación, ajusta los puntos de toma de ganancias / stop loss, optimiza los parámetros.

  3. Añadir un módulo de dimensionamiento de posición para ajustar dinámicamente las posiciones en función de los indicadores de referencia.

Conclusión

Esta estrategia identifica señales de reversión a través de patrones de velas y establece reglas de toma de ganancias/detención de pérdidas para la negociación automatizada. La estrategia es simple y práctica hasta cierto punto. Pero hay margen de mejora en términos de precisión de identificación y optimización de parámetros. Se recomienda realizar más pruebas y optimización antes de aplicarla en la negociación en vivo.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/01/2019
//   This is a candlestick where the open and close are the same. 
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title = "Doji Backtest", overlay = true)
input_takeprofit = input(10, title="Take Profit pip", step=0.01)
input_stoploss = input(10, title="Stop Loss pip", step=0.01)
input_minsizebody = input(0.5, title="Min. Size Body pip", step=0.01)
barcolor(abs(close - open) <= input_minsizebody ? open == close ? yellow : na : na)
possell = 0.0
posbuy = 0.0
pospricebuy = 0.0
pospricesell = 0.0
barcolornow = blue
pospricesell := close< close[2] ? abs(close - open) <= input_minsizebody ? open == close ? close : nz(pospricesell[1], 0) : nz(pospricesell[1], 0) : nz(pospricesell[1], 0) 
possell := iff(pospricesell > 0 , -1, 0)
barcolornow := possell == -1 ? red: posbuy == 1 ? green : blue 
pospricesell := iff(low <= pospricesell - input_takeprofit and pospricesell > 0, 0 ,  nz(pospricesell, 0))
pospricesell := iff(high >= pospricesell + input_stoploss and pospricesell > 0, 0 ,  nz(pospricesell, 0))
pospricebuy := close > close[2] ? abs(close - open) <= input_minsizebody ? open == close ? close : nz(pospricebuy[1], 0) : nz(pospricebuy[1], 0) : nz(pospricebuy[1], 0) 
posbuy := iff(pospricebuy > 0 , 1, 0)
barcolornow := posbuy == 1 ? green: barcolornow
pospricebuy := iff(high >= pospricebuy + input_takeprofit and pospricebuy > 0, 0 ,  nz(pospricebuy, 0))
pospricebuy := iff(low <= pospricebuy - input_stoploss and pospricebuy > 0, 0 ,  nz(pospricebuy, 0))
barcolor(barcolornow)
if (posbuy == 0 and possell == 0) 
    strategy.close_all()
if (posbuy == 1)
    strategy.entry("Long", strategy.long)
if (possell == -1)
    strategy.entry("Short", strategy.short)	   	    
pospricebuy := iff(high <= pospricebuy + input_takeprofit and pospricebuy > 0, 0 ,  nz(pospricebuy, 0))
pospricebuy := iff(low >= pospricebuy - input_stoploss and pospricebuy > 0, 0 ,  nz(pospricebuy, 0))
pospricesell := iff(low <= pospricesell - input_takeprofit and pospricesell > 0, 0 ,  nz(pospricesell, 0))
pospricesell := iff(high >= pospricesell + input_stoploss and pospricesell > 0, 0 ,  nz(pospricesell, 0))


Más.