Đây là một chiến lược theo xu hướng kết hợp nhiều chỉ số. Nó sử dụng ba EMA với các khoảng thời gian khác nhau, Stochastic RSI và ATR để xác định hướng xu hướng và thiết lập các vị trí. Nó sẽ dài khi EMA nhanh hơn vượt qua EMA chậm hơn, với mức dừng lỗ đặt ở mức 3 lần giá trị ATR gần đây và lấy lợi nhuận ở mức 2 lần giá trị ATR gần đây.
Chiến lược này sử dụng ba đường EMA - 8-, 14 và 50 giai đoạn EMA, đại diện cho xu hướng giá trong các khung thời gian khác nhau. Khi EMA 8 giai đoạn vượt qua trên EMA 14 giai đoạn và EMA 14 giai đoạn vượt qua trên EMA 50 giai đoạn, nó báo hiệu sự khởi đầu của xu hướng tăng và một vị trí dài có thể được bắt đầu.
Chỉ số Stochastic RSI kết hợp các tính toán RSI và Stochastic để xác định các điều kiện mua quá mức / bán quá mức. Khi đường Stochastic RSI K vượt qua trên đường D từ bên dưới, nó cho thấy thị trường đang chuyển từ quá mức bán sang triển vọng tăng, cho phép một vị trí dài.
ATR đại diện cho phạm vi biến động gần đây. Chiến lược sử dụng 3 lần ATR như khoảng cách dừng lỗ và 2 lần ATR như khoảng cách lấy lợi nhuận để khóa lợi nhuận và kiểm soát rủi ro.
Tối ưu hóa có thể được thực hiện bằng cách điều chỉnh thời gian EMA để tối ưu hóa độ nhạy. Làm cho tỷ lệ ATR có thể điều chỉnh cho phép tùy chỉnh dựa trên điều kiện thị trường. Thêm các chỉ số khác giúp xác nhận tín hiệu và tránh sai lầm.
Chiến lược này xem xét xu hướng, mức mua quá mức / bán quá mức và phạm vi biến động để xác định thời gian nhập cảnh. EMA và Stochastic RSI kết hợp hiệu quả xác định xu hướng, trong khi ATR
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © FreddieChopin //@version=4 strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // 3x EMA ema1Length = input(8, "EMA1 Length", minval = 1) ema2Length = input(14, "EMA2 Length", minval = 1) ema3Length = input(50, "EMA3 Length", minval = 1) ema1 = ema(close, ema1Length) ema2 = ema(close, ema2Length) ema3 = ema(close, ema3Length) plot(ema1, color = color.green) plot(ema2, color = color.orange) plot(ema3, color = color.red) // Stochastic RSI smoothK = input(3, "K", minval=1) smoothD = input(3, "D", minval=1) lengthRSI = input(14, "RSI Length", minval=1) lengthStoch = input(14, "Stochastic Length", minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) // ATR atrPeriod = input(14, "ATR Period") takeProfitMultiplier= input(2.0, "Take-profit Multiplier") stopLossMultiplier= input(3.0, "Stop-loss Multiplier") atrSeries = atr(atrPeriod)[1] longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d) strategy.entry("long", strategy.long, when = longCondition) float stopLoss = na float takeProfit = na if (strategy.position_size > 0) if (na(stopLoss[1])) stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier else stopLoss := stopLoss[1] if (na(takeProfit[1])) takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier else takeProfit := takeProfit[1] strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss) plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr) plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)