Estrategia de negociación de riesgos controlados MACD

El autor:¿ Qué pasa?, Fecha: 2023-10-26 15:51:34
Las etiquetas:

img

Resumen general

Esta estrategia diseña una estrategia de negociación a largo plazo que controla el riesgo de cada operación basada en el indicador MACD. En comparación con las estrategias tradicionales de giro largo y corto, esta estrategia se centra más en controlar el riesgo de cada operación. Al calcular niveles razonables de stop loss y take profit y establecer tamaños de posición apropiados, limita la pérdida máxima para cada operación. Esto puede controlar de manera efectiva las reducciones y lograr ganancias constantes a largo plazo.

Principios

La estrategia primero calcula la línea MACD y la línea de señal del indicador MACD. Cuando la línea MACD cruza por encima de la línea de señal, se determina como una señal de compra. Para filtrar las falsas rupturas, la estrategia requiere barsince ((crossover ((macd_line, signal_line)) <= 5, lo que significa que la ruptura ocurrió dentro de las 5 barras más recientes. También requiere que tanto la línea MACD como la línea de señal estén por debajo de 0, lo que indica una condición de sobreventa, y que el cierre esté por encima de la línea WMA, lo que indica una tendencia al alza. Cuando se cumplen las condiciones anteriores, se abre una posición larga.

Para cada operación, la estrategia calcula niveles razonables de stop loss y take profit. La stop loss se establece en el mínimo de las 3 barras más recientes. La take profit se establece en el precio de entrada más 4 veces la distancia entre el stop loss y el precio de entrada.

La clave es que la estrategia calcula el tamaño específico de la posición en función del riesgo máximo asequible. El parámetro capital_risco establece el porcentaje del capital total que se puede perder para cada operación. El tamaño de la posición en USD se calcula luego en función del rango de stop loss. Luego se convierte en contratos para la ejecución.

El riesgo de cada operación está controlado dentro del 1% del capital total, lo que puede controlar eficazmente los tiros.

Ventajas

  • El control del riesgo tiene prioridad, el riesgo por operación es controlable
  • Tamaño de las posiciones optimizado para maximizar el uso del capital
  • La estrategia de stop loss controla eficazmente las reducciones
  • El beneficio razonable permite un alto potencial de ganancia

Riesgos y mejoras

  • MACD tiene retraso, puede perder cambios rápidos de tendencia
  • El valor de las pérdidas de suspensión o de las pérdidas de toma de beneficios incorrectas puede reducir las ganancias o aumentar el riesgo.
  • La alta frecuencia de negociación puede aumentar los costes de transacción

Mejoras posibles:

  • Incorporar otros indicadores para determinar la tendencia, evitar el retraso del MACD
  • Optimizar los algoritmos de stop loss y take profit para ser más flexibles
  • Relajar la frecuencia de las operaciones para reducir los costes de transacción

Resumen de las actividades

Esta estrategia determina la dirección de la tendencia utilizando el MACD, y toma el control de riesgos como la prioridad para el comercio con el tamaño de posición optimizado. Las claves son el control de riesgos y el tamaño de posición, que pueden lograr ganancias constantes a largo plazo. Pero el MACD tiene algunos defectos, y los mecanismos de stop loss / take profit necesitan una mayor optimización.


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

Más.