Chiến lược này tạo ra các tín hiệu giao dịch dựa trên sự chéo chéo của trung bình di chuyển đơn giản và trung bình di chuyển trọng số, kết hợp với dừng lỗ và lấy lợi nhuận để quản lý các vị trí. Chiến lược tích hợp các yếu tố động (crossover trung bình di chuyển) và các yếu tố tĩnh (tỷ lệ dừng lỗ cố định và lấy lợi nhuận) để đạt được hiệu ứng đan xen của các yếu tố động và tĩnh.
Lý thuyết cốt lõi là tính toán hai đường trung bình động với các khoảng thời gian khác nhau, một là đường trung bình động đơn giản 9 ngày và một là đường trung bình động cân nặng 21 ngày. Khi SMA 9 ngày ngắn vượt qua đường WMA 21 ngày dài, một tín hiệu mua được tạo ra. Khi đường ngắn vượt qua đường dài, một tín hiệu bán được tạo ra.
Sau khi nhận được tín hiệu, lệnh được đặt theo tỷ lệ dừng lỗ và lấy lợi nhuận đã thiết lập. Ví dụ, nếu tỷ lệ dừng lỗ được thiết lập ở mức 5%, thì giá dừng lỗ sẽ được thiết lập ở mức 95% giá nhập. Nếu tỷ lệ lấy lợi nhuận là 5%, thì giá lấy lợi nhuận sẽ được thiết lập ở mức 105% giá nhập. Điều này nhận ra sự hợp nhất của các yếu tố năng động (crossover trung bình động quyết định thời gian nhập và thoát) và các yếu tố tĩnh (tỷ lệ dừng lỗ cố định và lấy lợi nhuận).
Chiến lược kết hợp các chỉ số kỹ thuật năng động và các tham số chiến lược tĩnh, sở hữu những ưu điểm của cả hai hệ thống động và tĩnh. Các chỉ số kỹ thuật có thể nắm bắt các đặc điểm thị trường một cách năng động, có lợi cho việc nắm bắt xu hướng. Cài đặt tham số cung cấp rủi ro ổn định và kiểm soát lợi nhuận, giúp giảm sự ngẫu nhiên trong quản lý vị trí.
So với các hệ thống động thuần túy, chiến lược này mạnh mẽ hơn trong quản lý vị trí, làm giảm tác động của các quyết định không hợp lý. So với các hệ thống tĩnh thuần túy, chiến lược này linh hoạt hơn trong lựa chọn đầu vào, thích nghi tốt hơn với những thay đổi của thị trường. Do đó, chiến lược này có độ mạnh mẽ và lợi nhuận tổng thể tốt.
Rủi ro của chiến lược này chủ yếu đến từ hai khía cạnh. Thứ nhất, khả năng tín hiệu sai từ các đường trung bình động. Khi thị trường bị giới hạn trong phạm vi, đường trung bình động có thể có sự chéo chéo thường xuyên, khiến chiến lược bị chọc.
Thứ hai, rủi ro dừng lỗ cố định và lấy lợi nhuận không thể thích nghi với điều kiện thị trường cực đoan. Khi các sự kiện thiên nga đen gây ra biến động thị trường lớn, mức dừng lỗ và lấy lợi nhuận đã được đặt trước có thể bị xâm nhập, không thể kiểm soát rủi ro hiệu quả.
Các biện pháp đối phó là: đầu tiên, tránh các nút thời gian chính để giảm khả năng tín hiệu sai; thứ hai, cho phép các thuật toán dừng lỗ thích nghi theo biến động thị trường và các sự kiện đặc biệt, làm cho dừng lỗ và lấy lợi nhuận điều chỉnh với thị trường.
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Kiểm tra các kết hợp tham số khác nhau để tìm ra các tham số tối ưu;
Thêm các điều kiện lọc để tránh các tín hiệu không hợp lệ;
Áp dụng các thuật toán dừng lỗ thích nghi để di chuyển theo thị trường;
Bao gồm các chỉ số khác để đánh giá sức mạnh xu hướng, tránh các thị trường giới hạn phạm vi;
Sử dụng các phương pháp học máy để tối ưu hóa các thông số tự động.
Thông qua kiểm tra các thông số, thêm các bộ lọc, cải thiện các điểm dừng, đánh giá xu hướng, v.v., sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm.
Chiến lược này kết hợp thành công các chỉ số động và tham số tĩnh, cân bằng tính linh hoạt và độ bền. So với các chiến lược động và tĩnh thuần túy, chiến lược này hoạt động tốt hơn tổng thể. Tất nhiên, vẫn còn chỗ để tối ưu hóa bằng cách điều chỉnh các tham số, thêm bộ lọc, dừng thích nghi, học máy, v.v., để làm cho chiến lược hiệu quả hơn.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("WMA vs MMA Crossover Strategy with SL/TP", shorttitle="WMA_MMA_Cross_SL_TP", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Définition des périodes pour les moyennes mobiles wmaLength = input.int(9, title="WMA Length") mmaLength = input.int(21, title="MMA Length") // Paramètres de Stop Loss et Take Profit en pourcentage stopLossPercentage = input.float(5, title="Stop Loss (%)") / 100 takeProfitPercentage = input.float(5, title="Take Profit (%)") / 100 // Calcul des moyennes mobiles wmaValue = ta.wma(close, wmaLength) mmaValue = ta.sma(close, mmaLength) // Conditions pour les signaux d'achat et de vente buySignal = ta.crossover(wmaValue, mmaValue) sellSignal = ta.crossunder(wmaValue, mmaValue) // Génération des ordres en fonction des signaux if buySignal strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=strategy.position_avg_price * (1 - stopLossPercentage), limit=strategy.position_avg_price * (1 + takeProfitPercentage)) if sellSignal strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=strategy.position_avg_price * (1 + stopLossPercentage), limit=strategy.position_avg_price * (1 - takeProfitPercentage)) // Affichage des moyennes mobiles sur le graphique plot(wmaValue, color=color.blue, title="WMA") plot(mmaValue, color=color.red, title="MMA") // Affichage des signaux sur le graphique pour référence plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")