Estrategia de ruptura del precio de cierre de inversión con stop loss oscilante

El autor:¿ Qué pasa?, fecha: 2023-12-11 11:44:49
Las etiquetas:

img

Resumen general

Esta estrategia utiliza las señales de ruptura de precios y el mecanismo de stop loss oscilante para la gestión de riesgos. Se hace largo cuando el precio rompe la resistencia y se hace corto cuando el precio rompe el soporte. Al mismo tiempo, se aplican paradas de stop loss y profit taking para un mejor control del riesgo.

Estrategia lógica

La estrategia se basa en los siguientes puntos clave:

  1. Usando MA para determinar la dirección de la tendencia: se trazan MA rápidos y lentos, MA rápido que cruza por encima de MA lento señala tendencia alcista, mientras que cruza por debajo de las señales de tendencia bajista.

  2. Cuando el precio sube y rompe su nivel más alto reciente, se considera que rompe el nivel de resistencia, yendo largo.

  3. Cuando el precio cae y rompe el mínimo de oscilación reciente, se considera que rompe el nivel de soporte, yendo corto.

  4. Después de la entrada, la línea de stop loss se establece y sigue ajustándose en función de la fluctuación del precio, formando un mecanismo de stop loss oscilante.

  5. El stop loss controla el riesgo, el take profit bloquea las ganancias.

Específicamente, utiliza el promedio de precios altos y bajos como fuente, traza EMA rápidos y lentos para determinar tendencias. Cuando la EMA rápida supera la EMA lenta y surge la señal de ruptura de resistencia, se va largo. Cuando la EMA rápida cae por debajo de la EMA lenta y aparece la ruptura de soporte, se corta. Después de la entrada, el precio más bajo en ciertos períodos se establece como la línea de stop loss, sigue ajustándose a medida que aumenta el precio.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Seguir las tendencias puede generar ganancias estables de las tendencias a largo plazo.

  2. Control de riesgos excelente, parada oscilante y parada protectora reducen rápidamente las pérdidas.

  3. Las señales de resistencia de largo y de apoyo corto proporcionan señales confiables.

  4. Las reglas son sencillas, los indicadores y las señales son sencillos y fáciles de seguir.

  5. Adaptable al mercado, funciona bien en diferentes productos y condiciones de mercado.

Análisis de riesgos

Algunos riesgos a tener en cuenta para esta estrategia:

  1. Riesgo de fracaso de la ruptura: el precio puede tener retroceso o retroceso después de la ruptura inicial, lo que desencadena el stop loss.

  2. El riesgo de optimización de parámetros. La mala sintonización de parámetros conduce a demasiadas o muy pocas señales. La optimización requiere prudencia.

  3. En condiciones extremas, las EMA pueden dejar de funcionar o retrasarse en el precio.

  4. El riesgo de reversión de tendencia: mantener una posición en contra de la tendencia genera pérdidas acumuladas cuando la tendencia se invierte.

Un ajuste adecuado de los parámetros, una gran pérdida de parada, el estricto cumplimiento de las reglas pueden mitigar en gran medida los riesgos anteriores.

Direcciones de optimización

La estrategia puede mejorarse aún más en los siguientes aspectos:

  1. Optimización del marco de tiempo, ajuste de los períodos de cálculo de las MAs y los patrones de precios, encuentre las mejores combinaciones.

  2. Optimización de la adaptabilidad, ajuste de parámetros para diferentes productos.

  3. Optimización de pérdida de parada. Prueba métodos de pérdida de parada más avanzados como parada de seguimiento, parada de la lámpara.

  4. Tomemos la optimización de ganancias. Adopte ganancias adaptativas o exponenciales tomando salidas para una mejor recompensa.

  5. Añadir filtros de volumen y volatilidad para evitar falsas rupturas.

  6. Mejorar las señales de entrada, combinar más indicadores o patrones para confirmar las entradas.

Conclusión

Esta es una estrategia de breakout eficaz con un buen control de riesgos, un modelo de ganancias estable y un flujo lógico sencillo.


/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
basePeriod: 15m
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/
// © EduardoMattje

//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])

// EMA calculation and plot

ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)

// Settings

risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")

// RCP calculation

rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]

// Order placement

in_market = strategy.position_size != 0

long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"

bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]

long_position = strategy.position_size > 0
short_position = strategy.position_size < 0

buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick

if long_condition
    strategy.entry("Long", true, stop=buy_price)
if short_condition
    strategy.entry("Short", false, stop=sell_price)
    
if allow_retracing
    better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
    if better_price_long
        strategy.cancel("Long")
        strategy.entry("Long", true, stop=buy_price)
    
    better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
    if better_price_short
        strategy.cancel("Short")
        strategy.entry("Short", false, stop=sell_price)

// Stoploss orders

stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)

// EMA cross close orders

if ema_cross_stop
    if long_position and ema_bear
        strategy.close("Long", comment=stop_comment)
    if short_position and ema_bull
        strategy.close("Short", comment=stop_comment)

// Take profit orders

stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price  - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)


Más.