この戦略は,MACD (Moving Average Convergence Divergence) 指標に基づいた高度な取引システムで,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)