Estrategia de stop loss basada en el indicador MACD


Fecha de creación: 2023-10-26 15:51:34 Última modificación: 2023-10-26 15:51:34
Copiar: 0 Número de Visitas: 709
1
Seguir
1617
Seguidores

Estrategia de stop loss basada en el indicador MACD

Descripción general

Esta estrategia se basa en el indicador MACD para diseñar una estrategia de negociación de línea larga que controle el riesgo de cada operación. En comparación con la estrategia tradicional de inversión de inversiones de largo plazo, esta estrategia se centra más en el control del riesgo de cada operación. La estrategia establece un tamaño razonable de la posición para limitar la pérdida máxima posible en cada operación mediante el cálculo del precio de parada y el precio de parada objetivo.

El principio

Esta estrategia calcula primero la línea macd y la línea de señal del indicador MACD. Cuando la línea macd rompe la línea de señal de abajo hacia arriba, se considera una señal de compra. Para filtrar una falsa ruptura, la estrategia requiere barssince ((crossover ((macd_line, signal_line)) <= 5, es decir, la ruptura ocurrió dentro de las 5 líneas K más recientes.

Para cada operación, la estrategia calcula un precio de parada y un precio de parada razonables. El precio de parada se establece como el precio más bajo de las 3 líneas K más recientes. El precio de parada se establece como el precio de compra más el precio de parada a la distancia de compra de 4 veces.

La clave es que la estrategia calcula la posición específica de cada operación en función del riesgo aceptable. Se establece la pérdida máxima aceptable por operación en porcentaje del capital total mediante el parámetro capital_risk. Luego se calcula el tamaño de la posición en dólares en función del margen de pérdida.

El riesgo de cada transacción está controlado dentro del 1% del capital total, lo que permite un control efectivo de los retiros. Al mismo tiempo, la mayor posición de parada permite obtener mayores ganancias.

Las ventajas

  • El control de riesgos es primordial, el riesgo de cada transacción es controlado
  • Optimizar el tamaño de las posiciones y aprovechar al máximo los fondos
  • Las estrategias de stop loss pueden ser efectivas para controlar la retirada.
  • El objetivo de este proyecto es crear una red de contactos entre los usuarios de Internet.

Riesgos y mejoras

  • El índice MACD está rezagado y puede haber perdido una tendencia de cambios rápidos
  • La posición de parada o parada incorrecta puede reducir los beneficios o aumentar el riesgo
  • La frecuencia de las transacciones podría ser demasiado alta y los costos de las transacciones podrían aumentar.

Se puede considerar:

  • Integrar otros indicadores para evaluar las tendencias y evitar el atraso en el MACD
  • Optimizar los algoritmos de stop loss para hacerlos más flexibles
  • La liberalización adecuada de la frecuencia de las transacciones y la reducción de los costos de las transacciones

Resumir

Esta estrategia se basa en los indicadores MACD para determinar la dirección de la tendencia, controlar el riesgo de manera prioritaria y calcular posiciones razonables para operar. La clave está en el control del riesgo y la optimización de las posiciones, que pueden obtener ganancias estables a largo plazo.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )