Chiến lược này là một hệ thống giao dịch định lượng kết hợp giữa Mức trung bình chuyển động theo hàm số (EMA) và dao động chứng khoán. Nó sử dụng Mức trung bình chuyển động theo thời gian 20 và 50 để xác định xu hướng thị trường trong khi sử dụng Mức dao động chứng khoán để xác định các cơ hội giao dịch trong các khu vực mua quá nhiều và bán quá nhiều, đạt được sự pha trộn hoàn hảo giữa xu hướng và động lực. Chiến lược thực hiện các biện pháp quản lý rủi ro nghiêm ngặt, bao gồm các mục tiêu dừng lỗ và lợi nhuận cố định.
Khái niệm cơ bản bao gồm ba thành phần: xác định xu hướng, thời gian nhập cảnh và kiểm soát rủi ro. Xác định xu hướng chủ yếu dựa trên vị trí tương đối của EMA nhanh (20 giai đoạn) và EMA chậm (50 giai đoạn), nơi một xu hướng tăng được xác nhận khi đường nhanh nằm trên đường chậm, và ngược lại. Các tín hiệu nhập cảnh được xác nhận bởi các giao dịch chéo dao động Stochastic, tìm kiếm các giao dịch có khả năng cao trong các vùng mua quá mức và bán quá mức. Kiểm soát rủi ro sử dụng các mục tiêu dừng lỗ tỷ lệ phần trăm cố định và 2: 1, đảm bảo tỷ lệ rủi ro-lợi nhuận rõ ràng cho mỗi giao dịch.
Chiến lược này thiết lập một hệ thống giao dịch hoàn chỉnh bằng cách kết hợp các chỉ số xu hướng và động lực. Sức mạnh cốt lõi của nó nằm trong khuôn khổ logic rõ ràng và kiểm soát rủi ro nghiêm ngặt, mặc dù ứng dụng thực tế đòi hỏi tối ưu hóa tham số dựa trên điều kiện thị trường cụ thể. Thông qua cải tiến và tối ưu hóa liên tục, chiến lược có tiềm năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("EMA + Stochastic Strategy", overlay=true) // Inputs for EMA emaShortLength = input.int(20, title="Short EMA Length") emaLongLength = input.int(50, title="Long EMA Length") // Inputs for Stochastic stochK = input.int(14, title="Stochastic %K Length") stochD = input.int(3, title="Stochastic %D Smoothing") stochOverbought = input.int(85, title="Stochastic Overbought Level") stochOversold = input.int(15, title="Stochastic Oversold Level") // Inputs for Risk Management riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio") stopLossPercent = input.float(1.0, title="Stop Loss (%)") // EMA Calculation emaShort = ta.ema(close, emaShortLength) emaLong = ta.ema(close, emaLongLength) // Stochastic Calculation k = ta.stoch(high, low, close, stochK) d = ta.sma(k, stochD) // Trend Condition isUptrend = emaShort > emaLong isDowntrend = emaShort < emaLong // Stochastic Signals stochBuyCrossover = ta.crossover(k, d) stochBuySignal = k < stochOversold and stochBuyCrossover stochSellCrossunder = ta.crossunder(k, d) stochSellSignal = k > stochOverbought and stochSellCrossunder // Entry Signals buySignal = isUptrend and stochBuySignal sellSignal = isDowntrend and stochSellSignal // Strategy Execution if buySignal strategy.entry("Buy", strategy.long) stopLoss = close * (1 - stopLossPercent / 100) takeProfit = close * (1 + stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLoss, limit=takeProfit) if sellSignal strategy.entry("Sell", strategy.short) stopLoss = close * (1 + stopLossPercent / 100) takeProfit = close * (1 - stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLoss, limit=takeProfit) // Plotting plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA")