Strategi ini adalah sistem perdagangan canggih berdasarkan penunjuk MACD (Moving Average Convergence Divergence), menggabungkan isyarat MACD dengan pengurusan risiko dinamik untuk mewujudkan penyelesaian perdagangan yang komprehensif. Strategi ini bukan sahaja memberi tumpuan kepada garis MACD dan persilangan garis isyarat tetapi juga menggabungkan pengesahan histogram dan tetapan stop-loss dan mengambil keuntungan yang fleksibel untuk mengoptimumkan prestasi perdagangan. Ia menawarkan pilihan konfigurasi yang sepenuhnya parameter untuk menyesuaikan diri dengan keadaan pasaran dan keperluan perdagangan yang berbeza.
Logik teras dibina di atas tiga tiang utama:
Strategi ini mewujudkan sistem perdagangan yang kukuh dengan menggabungkan penunjuk MACD klasik dengan kaedah pengurusan risiko moden. Kekuatannya terletak pada pengesahan isyarat yang komprehensif, pengurusan risiko yang fleksibel, dan penyesuaian parameter yang kuat, menjadikannya sesuai untuk pelbagai persekitaran pasaran. Melalui arah pengoptimuman yang dicadangkan, strategi ini mempunyai ruang untuk peningkatan lanjut. Walau bagaimanapun, pengguna perlu memberi perhatian kepada kawalan risiko, mengelakkan pengoptimuman berlebihan, dan membuat penyesuaian yang sesuai berdasarkan keadaan perdagangan sebenar.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia MACD", overlay=true) // Parámetros entrada direccion = input.string("ambas", "Dirección de operaciones", options=["larga", "corta", "ambas"]) velas_sl = input.int(3, "Velas para calcular Stop Loss", minval=1) ratio = input.float(1.5, "Ratio Beneficio:Riesgo", minval=0.5) rapida = input.int(12, "Periodo Media Rápida") lenta = input.int(26, "Periodo Media Lenta") senal = input.int(9, "Periodo Señal") // Calcular MACD [macdLinea, senalLinea, histograma] = ta.macd(close, rapida, lenta, senal) // Señales senal_larga = ta.crossover(macdLinea, senalLinea) and histograma > 0 senal_corta = ta.crossunder(macdLinea, senalLinea) and histograma < 0 // Gestión de riesgo calcular_sl_largo() => ta.lowest(low, velas_sl) calcular_sl_corto() => ta.highest(high, velas_sl) calcular_tp(entrada, sl, es_larga) => distancia = math.abs(entrada - sl) es_larga ? entrada + (distancia * ratio) : entrada - (distancia * ratio) // Operaciones sl_largo = calcular_sl_largo() sl_corto = calcular_sl_corto() if (direccion != "corta" and senal_larga and strategy.position_size == 0) entrada = close tp = calcular_tp(entrada, sl_largo, true) strategy.entry("Larga", strategy.long) strategy.exit("Salida Larga", "Larga", stop=sl_largo, limit=tp) if (direccion != "larga" and senal_corta and strategy.position_size == 0) entrada = close tp = calcular_tp(entrada, sl_corto, false) strategy.entry("Corta", strategy.short) strategy.exit("Salida Corta", "Corta", stop=sl_corto, limit=tp) // Visualización plotshape(senal_larga and direccion != "corta", "Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.normal) plotshape(senal_corta and direccion != "larga", "Venta", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal)