
양적 거래 분야에서, 트렌드 추적 전략은 항상 가장 인기있는 거래 방법 중 하나입니다. 이 글은 양평선 시스템을 기반으로 한 트렌드 추적 전략을 소개할 것이며, 이 전략은 최적화된 위험/수익 비율을 통해 거래 효율성을 높인다.
이 전략은 20일 및 200일 지수 이동 평균 ((EMA) 을 주요 지표로 사용하고, 3:1의 위험-이익 비율과 결합하여 거래 결정을 내린다. 가격이 20일 평균선을 돌파하고 20일 평균선이 200일 평균선 위에 있을 때, 시스템은 구매 신호를 발산한다. 각 거래에는 고정된 스톱로스 ((-0.5%) 와 수익 (-1.5%) 수준이 설정되어 있으며, 이는 위험을 통제할 수 있도록 한다.
전략의 핵심 논리에는 다음과 같은 핵심 요소가 포함됩니다.
이것은 구조가 완전하고, 논리가 명확한 트렌드 추적 전략이다. 이진평선 시스템과 고정된 위험-수익률을 결합하여, 이 전략은 수익을 보장하면서도 위험을 잘 통제한다. 여전히 최적화해야 할 부분이 있지만, 전체적으로 이것은 더 많은 연구와 개선을 할 가치가 있는 거래 시스템이다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estrategia de Compra con Ratio 3:1", overlay=true)
// Parámetros de la temporalidad diaria y las EMAs
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)
// Condiciones para la entrada en largo
cierre_por_encima_ema20 = close > ema20
ema20_mayor_ema200 = ema20 > ema200
// Variable para registrar si ya se realizó una compra
var bool compra_realizada = false
// Condición para registrar una compra: primera vez que cierra por encima de EMA 20 con EMA 20 > EMA 200
if (cierre_por_encima_ema20 and ema20_mayor_ema200 and not compra_realizada)
// Abrir una operación de compra
strategy.entry("Compra", strategy.long)
compra_realizada := true // Registrar que se realizó una compra
// Definir los niveles de stop loss y take profit basados en el ratio 3:1
stop_loss = strategy.position_avg_price * 0.995 // -0.50% (rendimiento)
take_profit = strategy.position_avg_price * 1.015 // +1.50% (3:1 ratio)
// Establecer el stop loss y take profit
strategy.exit("Take Profit / Stop Loss", from_entry="Compra", stop=stop_loss, limit=take_profit)
// Condición para resetear la compra: cuando el precio cierra por debajo de la EMA de 20
if (close < ema20)
compra_realizada := false // Permitir una nueva operación
// Ploteo de las EMAs
plot(ema20, title="EMA 20", color=color.blue, linewidth=2)
plot(ema200, title="EMA 200", color=color.red, linewidth=2)
// Colorear el fondo cuando el precio está por encima de ambas EMAs
bgcolor(cierre_por_encima_ema20 and ema20_mayor_ema200 ? color.new(color.green, 80) : na)