
Diese Strategie ist ein fortschrittliches Handelssystem, das auf dem MACD-Indikator (Moving Average Convergence Divergence) basiert. Es kombiniert MACD-Signale mit dynamischem Risikomanagement, um eine umfassende Handelslösung zu erreichen. Diese Strategie konzentriert sich nicht nur auf den Übergang zwischen der MACD-Linie und der Signallinie, sondern kombiniert auch die Histogrammbestätigung und optimiert die Handelsergebnisse durch flexible Stop-Loss- und Gewinneinstellungen. Die Strategie bietet eine breite Palette parametrisierter Konfigurationen und kann dadurch an unterschiedliche Marktumgebungen und Handelsanforderungen angepasst werden.
Die Kernlogik der Strategie basiert auf drei Hauptsäulen:
Diese Strategie schafft ein robustes Handelssystem durch die Kombination des klassischen MACD-Indikators mit modernen Methoden des Risikomanagements. Seine Vorteile liegen in seinem perfekten Signalbestätigungsmechanismus, dem flexiblen Risikomanagement und der starken Parameteranpassbarkeit, wodurch es für unterschiedliche Marktumgebungen geeignet ist. Durch die vorgeschlagenen Optimierungsrichtungen besteht noch Spielraum für eine weitere Verbesserung der Strategie. Benutzer müssen jedoch auf die Kontrolle der Risiken achten, eine Überoptimierung vermeiden und basierend auf der tatsächlichen Handelsumgebung entsprechende Anpassungen vornehmen.
/*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)