Esta estrategia es un sistema de negociación inteligente basado en cruces de promedios móviles dobles, utilizando promedios móviles exponenciales (EMA) de 9 períodos y 21 períodos como indicadores principales. La estrategia incorpora un mecanismo dinámico de stop-loss y take-profit, ejecutando automáticamente órdenes de negociación mediante el monitoreo de señales de cruce de EMA en tiempo real. El sistema emplea paradas de seguimiento basadas en porcentajes y niveles de take-profit de relación fija, lo que garantiza tanto la seguridad comercial como el potencial de ganancia.
La lógica central opera en la relación de cruce entre la EMA rápida (9 períodos) y la EMA lenta (21 períodos). Cuando la línea rápida cruza por encima de la línea lenta, el sistema reconoce una señal alcista, cierra automáticamente cualquier posición corta y abre posiciones largas. Cuando la línea rápida cruza por debajo de la línea lenta, el sistema identifica una señal bajista, cierra cualquier posición larga y abre posiciones cortas. Además, el sistema implementa mecanismos dinámicos de stop-loss y take-profit: para posiciones largas, la stop-loss se establece 5% por debajo del precio de entrada y take-profit 10% por encima; para posiciones cortas, la stop-loss se establece 5% por encima del precio de entrada y take-profit por debajo del 10%.
Esta estrategia representa un sistema de negociación automatizado completo y lógicamente sólido. A través de señales de cruce EMA combinadas con mecanismos dinámicos de stop-loss y take-profit, puede funcionar bien en los mercados de tendencia. Sin embargo, los usuarios deben monitorear las condiciones del mercado, ajustar los parámetros en consecuencia y mantener un control adecuado del riesgo. A través de la optimización y el refinamiento continuos, esta estrategia tiene el potencial de convertirse en una herramienta de negociación estable y confiable.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // 添加策略参数设置 var showLabels = input.bool(true, "显示标签") var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1) var takeProfitPercent = input.float(10.0, "止盈百分比", minval=0.1, maxval=50.0, step=0.1) // 计算EMA ema9 = ta.ema(close, 9) ema21 = ta.ema(close, 21) // 绘制EMA线 plot(ema9, "EMA9", color=color.blue, linewidth=2) plot(ema21, "EMA21", color=color.red, linewidth=2) // 检测交叉 crossOver = ta.crossover(ema9, ema21) crossUnder = ta.crossunder(ema9, ema21) // 格式化时间显示 (UTC+8) utc8Time = time + 8 * 60 * 60 * 1000 timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time) // 计算止损止盈价格 longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100) longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100) shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100) shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100) // 交易逻辑 if crossOver if strategy.position_size < 0 // 如果持有空仓 strategy.close("做空") // 先平掉空仓 strategy.entry("做多", strategy.long) // 开多仓 if showLabels label.new(bar_index, high, text="做多入场\n" + timeStr, color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar) if crossUnder if strategy.position_size > 0 // 如果持有多仓 strategy.close("做多") // 先平掉多仓 strategy.entry("做空", strategy.short) // 开空仓 if showLabels label.new(bar_index, low, text="做空入场\n" + timeStr, color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar) // 设置止损止盈 if strategy.position_size > 0 // 多仓止损止盈 strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit) if strategy.position_size < 0 // 空仓止损止盈 strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit)