Chiến lược này là một hệ thống giao dịch thông minh dựa trên hai đường chéo trung bình động, sử dụng 9 giai đoạn và 21 giai đoạn Giai đoạn Giai đoạn Giai đoạn Giai đoạn (EMA) như các chỉ số cốt lõi. Chiến lược kết hợp một cơ chế dừng lỗ và lấy lợi nhuận năng động, tự động thực hiện lệnh giao dịch bằng cách theo dõi tín hiệu chéo EMA trong thời gian thực. Hệ thống sử dụng các mức dừng theo dõi dựa trên tỷ lệ phần trăm và tỷ lệ lấy lợi nhuận cố định, đảm bảo cả an toàn giao dịch và tiềm năng lợi nhuận.
Hệ thống EMA hoạt động dựa trên mối quan hệ chéo giữa EMA nhanh (9 giai đoạn) và EMA chậm (21 giai đoạn). Khi đường nhanh vượt qua đường chậm, hệ thống nhận ra tín hiệu tăng, tự động đóng bất kỳ vị trí ngắn nào và mở các vị trí dài. Khi đường nhanh vượt qua đường chậm, hệ thống xác định tín hiệu giảm, đóng bất kỳ vị trí dài nào và mở các vị trí ngắn. Ngoài ra, hệ thống thực hiện các cơ chế dừng lỗ và lấy lợi nhuận năng động: đối với các vị trí dài, dừng lỗ được thiết lập 5% dưới giá nhập và lấy lợi nhuận 10% trên; cho các vị trí ngắn, dừng lỗ được thiết lập 5% trên giá nhập và lấy lợi nhuận dưới 10%.
Chiến lược này đại diện cho một hệ thống giao dịch tự động hoàn chỉnh và hợp lý. Thông qua các tín hiệu chéo EMA kết hợp với các cơ chế dừng lỗ và lấy lợi nhuận năng động, nó có thể hoạt động tốt trong các thị trường xu hướng. Tuy nhiên, người dùng cần theo dõi điều kiện thị trường, điều chỉnh các tham số phù hợp và duy trì kiểm soát rủi ro thích hợp. Thông qua tối ưu hóa và tinh chỉnh liên tục, chiến lược này có tiềm năng trở thành một công cụ giao dịch ổn định và đáng tin cậy.
/*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)