この戦略は,2つの移動平均クロスオーバーをベースとしたインテリジェントな取引システムで,コア指標として9期と21期指数的な移動平均 (EMA) を利用している.この戦略はダイナミックなストップ・ロストとテイク・プロフィートメカニズムを組み込み,リアルタイムでEMAクロスオーバー信号を監視することによって自動的に取引オーダーを実行している.このシステムはパーセントベースのトレーリングストップと固定比率のテイク・プロフィートレベルを採用し,取引の安全性と利益の可能性の両方を保証している.
基本論理は,高速EMA (9期) と遅いEMA (21期) の間のクロスオーバー関係に基づいて動作する.高速EMAがスローEMAを超えると,システムは上昇信号を認識し,自動的にすべてのショートポジションを閉じてロングポジションを開く.高速EMAがスローEMAを下回ると,システムは下落信号を識別し,すべてのロングポジションを閉じてショートポジションを開く.さらに,システムはダイナミックなストップ・ロストとテイク・プロフィートメカニズムを実装する.ロングポジションでは,ストップ・ロスはエントリー価格を下回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)