Strategi ini adalah sistem perdagangan cerdas berdasarkan crossover rata-rata bergerak ganda, menggunakan rata-rata bergerak eksponensial (EMA) 9 periode dan 21 periode sebagai indikator inti. Strategi ini menggabungkan mekanisme stop-loss dan take-profit yang dinamis, secara otomatis mengeksekusi pesanan perdagangan dengan memantau sinyal crossover EMA secara real-time. Sistem ini menggunakan stop trailing berbasis persentase dan tingkat take-profit rasio tetap, memastikan keamanan perdagangan dan potensi keuntungan.
Logika inti beroperasi pada hubungan silang antara EMA cepat (9 periode) dan EMA lambat (21-periode). Ketika garis cepat melintasi di atas garis lambat, sistem mengenali sinyal bullish, secara otomatis menutup posisi pendek dan membuka posisi panjang. Ketika garis cepat melintasi di bawah garis lambat, sistem mengidentifikasi sinyal bearish, menutup posisi panjang dan membuka posisi pendek. Selain itu, sistem menerapkan mekanisme stop-loss dan take-profit dinamis: untuk posisi panjang, stop-loss ditetapkan 5% di bawah harga masuk dan take-profit 10% di atas; untuk posisi pendek, stop-loss ditetapkan 5% di atas harga masuk dan take-profit di bawah 10%.
Strategi ini merupakan sistem perdagangan otomatis yang lengkap dan logis. Melalui sinyal crossover EMA yang dikombinasikan dengan mekanisme stop-loss dan take-profit yang dinamis, strategi ini dapat berkinerja baik di pasar tren. Namun, pengguna perlu memantau kondisi pasar, menyesuaikan parameter sesuai, dan mempertahankan kontrol risiko yang tepat. Melalui optimalisasi dan penyempurnaan terus-menerus, strategi ini memiliki potensi untuk menjadi alat perdagangan yang stabil dan dapat diandalkan.
/*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)