
この戦略は、MACD (移動平均収束拡散) インジケーターに基づく高度な取引システムです。MACD シグナルと動的リスク管理を組み合わせて、包括的な取引ソリューションを実現します。この戦略は、MACD ラインとシグナル ラインのクロスオーバーに重点を置くだけでなく、ヒストグラムの確認を組み合わせ、柔軟なストップ ロスと利益の設定を通じて取引結果を最適化します。この戦略は、さまざまなパラメータ化された構成を提供し、さまざまな市場環境や取引ニーズに適応できるようにします。
戦略の中核となるロジックは、次の 3 つの主要な柱に基づいています。
この戦略は、古典的な MACD インジケーターと最新のリスク管理方法を組み合わせることで、堅牢な取引システムを作成します。その利点は、完璧なシグナル確認メカニズム、柔軟なリスク管理、強力なパラメータ調整機能にあり、さまざまな市場環境に適しています。提案された最適化の方向性を通じて、戦略をさらに改善する余地がまだあります。ただし、ユーザーはリスク管理に注意を払い、過度な最適化を避け、実際の取引環境に基づいて適切な調整を行う必要があります。
/*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)