
이 전략은 MACD와 RSI 이중 지표 필터링에 기반한 트렌드 추적 시스템이며, 동적 스톱 메커니즘을 통합한다. 이 전략은 주로 MACD의 교차 신호를 통해 거래 기회를 창출하며, RSI를 2차 확인으로 사용하며, 위험을 제어하기 위해 백분율 스톱을 도입한다. 전략의 핵심은 기술 지표의 조합을 통해 거래 신호의 신뢰성을 높이고, 동적 스톱을 통해 수익을 보호하는 것이다.
이 전략은 MACD ((12,26,9) 와 RSI ((14)) 를 주요 지표로 사용합니다. 입시 신호는 두 가지 조건을 동시에 충족해야합니다. MACD 금 포크와 RSI가 초매 지역 (설정 40 이하) 에 있으면 더하고, MACD 사각지대와 RSI가 초매 지역 (설정 59 이상) 에 있으면 더하지 않습니다.
이것은 구조적이고, 논리적으로 명확한 트렌드 추적 전략이다. MACD와 RSI의 조합을 사용하여 거래 신호의 질을 효과적으로 향상시킵니다. 동적 인 손실 디자인은 위험을 통제하는 데 도움이되어 전략이 좋은 위험 관리 특성을 갖는다. 이 전략은 트렌드가 명확한 시장에서 사용하기에 적합하지만 특정 시장 특성에 따라 매개 변수를 조정해야합니다. 제안된 최적화 방향으로 전략의 안정성과 신뢰성을 더욱 향상시킬 수 있습니다.
/*backtest
start: 2025-02-13 10:00:00
end: 2025-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eagle916
//@version=5
strategy("EAG MACD + RSI Strategy",overlay=true, initial_capital = 300, default_qty_value = 10, default_qty_type = "percent_of_equity", commission_type=strategy.commission.percent, commission_value=0.1)
// Input para el RSI
rsi_length = input.int(14, title="RSI Length", minval=1)
rsi_overbought = input.int(59, title="RSI Overbought Level", minval=1, maxval=100)
rsi_oversold = input.int(40, title="RSI Oversold Level", minval=1, maxval=100)
// Input para el MACD
macd_length = input.int(12, title="MACD Length", minval=1)
macd_overbought = input.int(26, title="MACD Overbought Level", minval=1, maxval=100)
macd_signal = input.int(9, title="MACD Signal Level", minval=1, maxval=100)
// Input para el porcentaje de pérdida (stop loss)
stop_loss_percent = input.float(3.0, title="Porcentaje de Stop Loss (%)", minval=0.1, step=0.1)
// Calcular RSI
rsi_value = ta.rsi(close, rsi_length)
// Calcular MACD
[macdLine, signalLine, _] = ta.macd(close, macd_length, macd_overbought, macd_signal)
macd_crossup = ta.crossover(macdLine, signalLine) // Cruce al alza del MACD
macd_crossdown = ta.crossunder(macdLine, signalLine) // Cruce a la baja del MACD
// Condiciones de compra y venta
buy_condition = macd_crossup and rsi_value <= rsi_oversold
sell_condition = macd_crossdown and rsi_value >= rsi_overbought
// Registrar precio de entrada
var float entry_price = na
if strategy.position_size == 0
entry_price := na
// Mostrar señales de compra y venta en la gráfica principal
plotshape(series=buy_condition, title="Señal de Compra", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Compra debajo de la vela
plotshape(series=sell_condition, title="Señal de Venta", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Venta encima de la vela
// Órdenes de estrategia
if buy_condition
strategy.entry("Compra", strategy.long)
entry_price := close
if sell_condition
strategy.entry("Venta", strategy.short)
entry_price := close
// Calcular el precio de stop loss
long_stop_loss = entry_price * (1 - stop_loss_percent / 100)
short_stop_loss = entry_price * (1 + stop_loss_percent / 100)
// Cerrar posición si el precio va en contra el porcentaje definido por el usuario
if strategy.position_size > 0 and close < long_stop_loss
strategy.close("Compra", comment="Stop Loss Compra")
if strategy.position_size < 0 and close > short_stop_loss
strategy.close("Venta", comment="Stop Loss Venta")