이 전략은 두 개의 이동 평균 크로스오버를 기반으로 한 지능형 거래 시스템으로, 9 기간 및 21 기간 기하급수적인 이동 평균 (EMA) 을 핵심 지표로 사용합니다. 이 전략은 동적인 스톱 로스 및 영리 메커니즘을 통합하여 EMA 크로스오버 신호를 실시간으로 모니터링하여 자동으로 거래 명령을 실행합니다. 이 시스템은 비율 기반의 트레일링 스톱과 고정 비율의 영리 수준을 사용하여 거래 안전과 수익 잠재력을 모두 보장합니다.
핵심 논리는 빠른 EMA (9주기) 와 느린 EMA (21주기) 사이의 교차 관계에서 작동합니다. 빠른 라인이 느린 라인의 위를 넘을 때 시스템은 상승 신호를 인식하고 자동으로 모든 단위 포지션을 닫고 긴 포지션을 열습니다. 빠른 라인이 느린 라인의 아래를 넘을 때 시스템은 하락 신호를 식별하고 모든 긴 포지션을 닫고 짧은 포지션을 열습니다. 또한 시스템은 동적인 스톱 로스 및 영업 메커니즘을 구현합니다. 긴 포지션의 경우 스톱 로스는 엔트리 가격보다 5% 낮고 영업 영업은 10% 높습니다. 짧은 포지션의 경우 스톱 로스는 엔트리 가격보다 5% 높고 영업 영업은 10% 이하로 설정됩니다.
이 전략은 완전하고 논리적으로 건전한 자동화 거래 시스템을 나타냅니다. 동적 인 스톱 로스 및 영리 메커니즘과 결합된 EMA 크로스오버 신호를 통해 트렌딩 시장에서 잘 수행 할 수 있습니다. 그러나 사용자는 시장 조건을 모니터링하고 그에 따라 매개 변수를 조정하고 적절한 위험 통제를 유지해야합니다. 지속적인 최적화 및 정제로 인해이 전략은 안정적이고 신뢰할 수있는 거래 도구가 될 가능성이 있습니다.
/*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)