
이 전략은 300주기 지수 이동 평균 ((EMA) 에 기반한 변동폭 거래 시스템입니다. 이 전략은 EMA와 표준 차이를 결합하여 시장의 오버 바이 오버 셀 기회를 잡기 위해 브린 밴드와 같은 동적 변동 범위를 형성합니다. 이 전략은 주로 가격과 변동폭의 교차로 거래 신호를 생성하며, 백분율에 기반한 중지 조건을 설정합니다.
전략의 핵심은 300주기 EMA를 통해 가격중심을 구축하고, 표준차이를 사용하여 위아래 변동대를 구성한다. 가격이 하향 궤도를 돌파할 때 과매매 신호를 생성하고, 궤도를 돌파할 때 과매매 신호를 생성한다. 구체적으로 다음을 포함한다:
이 전략은 EMA 변동대를 통해 시장 과매매 기회를 잡으며 거래 규칙이 명확하고 작동이 간단하다. 그러나 실제 응용에서는 위험을 제어하는 데 주의를 기울여야하며 보조 지표, 최적화 매개 변수 설정 등의 방법으로 전략 안정성을 향상시키는 것이 좋습니다. 전략은 전체적으로 합리적으로 설계되어 실용적인 가치와 최적화 공간을 가지고 있습니다.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estrategia de Compra/Venta en Bandas de EMA 300", overlay=true)
// Definir el período de la EMA
periodo = input.int(300, title="Período de la EMA")
// Calcular la EMA de 300
ema_300 = ta.ema(close, periodo)
// Definir el número de desviaciones estándar
num_desviaciones = input.float(2, title="Número de Desviaciones Estándar")
// Calcular la desviación estándar de la EMA de 300
desviacion = ta.stdev(close, periodo)
// Calcular los límites superior e inferior de las bandas
banda_superior = ema_300 + desviacion * num_desviaciones
banda_inferior = ema_300 - desviacion * num_desviaciones
// Definir el porcentaje para las señales de compra y venta
porcentaje = input.float(0.98, title="Porcentaje de Salida de Banda")
// Definir señales de compra y venta
compra = ta.crossover(close, banda_inferior)
venta = ta.crossunder(close, banda_superior)
// Calcular el precio de salida para las señales de compra y venta
precio_salida_compra = close * (1 + porcentaje / 100)
precio_salida_venta = close * (1 - porcentaje / 100)
// Plotear las bandas
plot(banda_superior, color=color.blue, linewidth=2, title="Banda Superior")
plot(banda_inferior, color=color.red, linewidth=2, title="Banda Inferior")
// Plotear las señales de compra y venta
plotshape(compra, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Compra")
plotshape(venta, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Venta")
// Simular operaciones
if (compra)
strategy.entry("Compra", strategy.long)
if (venta)
strategy.entry("Venta", strategy.short)
// Definir reglas de salida
if (strategy.position_size > 0)
strategy.exit("Exit Long", from_entry="Compra", limit=precio_salida_compra)
if (strategy.position_size < 0)
strategy.exit("Exit Short", from_entry="Venta", limit=precio_salida_venta)
// Crear alertas
alertcondition(compra, title="Alerta de Compra", message="¡Señal de Compra Detectada!")
alertcondition(venta, title="Alerta de Venta", message="¡Señal de Venta Detectada!")
// Mostrar alertas en el gráfico
if (compra)
label.new(bar_index, low, text="Compra", style=label.style_label_up, color=color.green, textcolor=color.white)
if (venta)
label.new(bar_index, high, text="Venta", style=label.style_label_down, color=color.red, textcolor=color.white)