
Strategi ini adalah sistem perdagangan ribut yang dibangunkan berdasarkan purata bergerak indeks 300-siklus ((EMA)). Dengan menggabungkan EMA dan perbezaan piawai, ia membentuk kawasan pergerakan dinamik yang serupa dengan Brin’s ribut untuk menangkap peluang overbought dan oversold di pasaran. Strategi ini menghasilkan isyarat perdagangan terutamanya melalui persilangan harga dengan ribut yang bergelombang, dan menetapkan syarat berhenti berdasarkan peratusan.
Inti strategi ini adalah untuk menubuhkan pusat harga melalui EMA 300 kitaran, dan kemudian menggunakan perbezaan piawai untuk membina band turun naik. Apabila harga menembusi terbalik, ia dianggap sebagai tanda jual beli dan apabila ia menembusi terbalik, ia dianggap sebagai tanda beli beli.
Strategi ini menangkap peluang overbought dan oversold di pasaran melalui EMA band, peraturan perdagangan jelas, operasi mudah. Tetapi dalam aplikasi praktikal, perlu berhati-hati untuk mengawal risiko, disarankan untuk meningkatkan kestabilan strategi dengan menambah petunjuk tambahan, menetapkan parameter pengoptimuman dan sebagainya. Strategi ini secara keseluruhan direka dengan munasabah, mempunyai nilai praktikal yang lebih baik dan ruang pengoptimuman.
/*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)