Strategi ini adalah sistem perdagangan canggih berdasarkan indikator MACD (Moving Average Convergence Divergence), menggabungkan sinyal MACD dengan manajemen risiko dinamis untuk menciptakan solusi perdagangan yang komprehensif. Strategi ini tidak hanya berfokus pada garis MACD dan penyeberangan garis sinyal tetapi juga menggabungkan konfirmasi histogram dan pengaturan stop-loss dan take-profit yang fleksibel untuk mengoptimalkan kinerja perdagangan. Ini menawarkan opsi konfigurasi yang sepenuhnya parameter untuk beradaptasi dengan kondisi pasar dan persyaratan perdagangan yang berbeda.
Logika inti dibangun di atas tiga pilar utama:
Strategi ini menciptakan sistem perdagangan yang kuat dengan menggabungkan indikator MACD klasik dengan metode manajemen risiko modern. Kekuatannya terletak pada konfirmasi sinyal yang komprehensif, manajemen risiko yang fleksibel, dan penyesuaian parameter yang kuat, menjadikannya cocok untuk berbagai lingkungan pasar. Melalui arah optimasi yang disarankan, strategi ini memiliki ruang untuk perbaikan lebih lanjut. Namun, pengguna perlu memperhatikan pengendalian risiko, menghindari optimasi berlebihan, dan melakukan penyesuaian yang sesuai berdasarkan kondisi perdagangan yang sebenarnya.
/*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)