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.
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.
Mejoras posibles:
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 )