
La estrategia combina las señales de ruptura de las medias móviles del índice y el indicador MACD, estableciendo dos períodos de tenencia largos y cortos para obtener ganancias a través del seguimiento de tendencias y el comercio inverso.
La estrategia se basa principalmente en los siguientes principios:
Calcula el promedio móvil de 200 días del índice para determinar la dirección de la tendencia general. Los precios de cierre por encima de este promedio son positivos y por debajo son negativos.
Traza un promedio móvil de precios de medias basado en precios máximos, mínimos y cerradores, calcula el promedio con el diferencial entre los precios máximos y mínimos y construye un gráfico en forma de columna MACD.
Calcula el promedio móvil de 9 días del gráfico de columnas MACD para construir la línea de señal MACD.
La MACD genera una señal de compra al romper la línea de señal de abajo hacia arriba; genera una señal de venta al romper la línea de señal de arriba hacia abajo.
La dirección de la tendencia general se combina para determinar si la tendencia es hacia la línea larga o hacia la línea corta.
Esta estrategia combina tendencias y inversiones para seguir tendencias de períodos más largos y capturar oportunidades de inversiones en líneas cortas, con flexibilidad para responder a diferentes situaciones en el mercado.
Las ventajas concretas incluyen:
Utilice las medias móviles de 200 días para determinar la dirección de las principales tendencias y evite las operaciones de contravalor.
Los indicadores MACD son más sensibles a los cambios de precios a corto plazo y pueden capturar oportunidades de reversión más efectivas.
La combinación de MACDs bajo diferentes parámetros de configuración permite señales de negociación en múltiples marcos de tiempo.
La combinación de una estrategia de stop loss puede controlar eficazmente las pérdidas individuales.
El principal riesgo de esta estrategia es:
Los indicadores de largo y corto plazo pueden emitir señales de negociación con diferencias temporales que requieren un análisis integral de la tendencia general.
El MACD es un indicador de reversión, cuya fuerza de interpretación se reduce cuando hay una situación de agitación.
El punto de parada está mal configurado y puede detenerse prematuramente o demasiado.
Las brechas son demasiado frecuentes y pueden generar más falsas señales.
Resolución de las mismas:
Optimización de los parámetros MACD y ajuste de la sensibilidad de los indicadores.
En combinación con otros indicadores para evaluar la situación, evitar el seguimiento ciego de las señales MACD.
Prueba y optimiza los parámetros de la estrategia de stop loss.
Se han añadido condiciones de filtración para evitar la aparición de demasiadas señales falsas.
La estrategia se puede optimizar en las siguientes direcciones:
Optimización de los parámetros de las medias móviles y MACD para obtener señales de negociación más eficaces.
Algunos otros indicadores para mejorar la efectividad de la estrategia.
Establecer una estrategia de tamaño de posición en lugar de lotes fijos para cada operación.
Agregar reglas de salida más avanzadas en lugar de solo detener la pérdida, como el objetivo de ganancia, las paradas de seguimiento, etc.
Backtest with more complex fee settings to better simulate real trading environoment. Prueba de respaldo con configuraciones de tarifas más complejas para simular mejor el entorno de negociación real.
Walk forward analysis, robustness test among multiple products to enhance reliability. Análisis de paso, prueba de robustez entre varios productos para mejorar la confiabilidad.
La estrategia contempla tanto la tendencia como la inversión. La clave reside en la precisión de la configuración de los parámetros del indicador y la comprensión de las grandes tendencias. Mediante la optimización continua de la configuración de los parámetros, el aumento de las condiciones de las ondas de onda, la estrategia puede ser más precisa en el juicio de las señales de mercado y obtener ganancias más estables.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)
// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)
var float ema200 = na
if bar_index >= ema_length
ema200 := ema(close, ema_length)
// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na
calc_smma(src, len) =>
var float smma = na
if na(smma)
smma := sma(src, len)
else
smma := (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
d = ema1 - ema2
ema1 + d
if bar_index >= lengthMA
src = hlc3
hi := calc_smma(high, lengthMA)
lo := calc_smma(low, lengthMA)
mi := calc_zlema(src, lengthMA)
impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
impulseMACDSignal := sma(impulseMACD, lengthSignal)
// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na
stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)
// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na
if not na(stopLossLong)
takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
takeProfitShort := close - (stopLossShort - close) * 1.5
// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)
// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)
// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")
// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)
// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)
// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")