Chiến lược này là một chiến lược lưới vị trí biến động theo xu hướng chủ yếu sử dụng EMA, RSI và các mô hình ngập để xác định hướng xu hướng và thời gian nhập cảnh. Chiến lược điều chỉnh các vị trí dừng lỗ và lấy lợi nhuận dựa trên kích thước của cơ thể mô hình ngập trong khi cho phép người dùng chọn chỉ mua dài, chỉ mua ngắn hoặc cả hai. Ngoài ra, chiến lược cung cấp tùy chọn sử dụng MACD làm bộ lọc xu hướng.
Chiến lược sử dụng EMA 200 giai đoạn để xác định hướng xu hướng tổng thể. Khi giá trên EMA, nó được coi là xu hướng tăng, và khi dưới EMA, nó được coi là xu hướng giảm. Một RSI 9 giai đoạn được sử dụng để đo đạc động lực, với RSI trên 50 chỉ ra động lực tăng mạnh hơn và dưới 50 chỉ ra động lực giảm mạnh hơn. Chiến lược cũng sử dụng các mô hình hấp thụ tăng và giảm như các tín hiệu đầu vào. Khi các tín hiệu EMA, RSI và mô hình hấp thụ đồng ý, chiến lược mở một vị trí.
Các vị trí stop-loss và take-profit được xác định dựa trên kích thước của cơ thể mô hình ngập. Stop-loss được thiết lập ở kích thước gấp đôi cơ thể ngập, với tỷ lệ stop-loss tối thiểu 0,3% so với giá nhập cảnh để tránh stop-out thường xuyên do khoảng cách stop-loss nhỏ.
Theo dõi xu hướng: Chiến lược sử dụng nhiều chỉ số để xác định xu hướng, giúp vào giai đoạn đầu của sự hình thành xu hướng và nắm bắt các động thái xu hướng.
Động thái dừng lỗ và lấy lợi nhuận: Bằng cách điều chỉnh các vị trí dừng lỗ và lấy lợi nhuận dựa trên kích thước của cơ thể mô hình hấp thụ, chiến lược mở rộng phạm vi lấy lợi nhuận khi xu hướng mạnh và thu hẹp phạm vi dừng lỗ khi xu hướng yếu, cho phép quản lý vị trí linh hoạt.
Người dùng có thể tùy chỉnh hướng giao dịch, sở thích rủi ro và các thông số khác để phù hợp với nhu cầu của người dùng khác nhau.
Tùy chọn sử dụng MACD làm bộ lọc xu hướng xác nhận thêm sức mạnh xu hướng và cải thiện độ chính xác nhập cảnh.
Xác định xu hướng không chính xác: Mặc dù chiến lược sử dụng nhiều chỉ số để xác định xu hướng, vẫn có thể có trường hợp xu hướng được xác định không chính xác, dẫn đến tổn thất.
Phạm vi thu hẹp: Nếu cơ thể của mô hình ngập là nhỏ, khoảng cách dừng lỗ và lấy lợi nhuận sẽ rất gần nhau, dẫn đến sự suy giảm tỷ lệ rủi ro-lợi nhuận.
Tối ưu hóa tham số: Các tham số tối ưu có thể khác nhau đáng kể giữa các công cụ và khung thời gian khác nhau, đòi hỏi người dùng phải liên tục kiểm tra và tối ưu hóa.
Xác định xu hướng: Xem xét việc giới thiệu các công cụ xác nhận xu hướng bổ sung như Bollinger Bands, Chỉ số hướng trung bình (ADX), v.v., để cải thiện độ chính xác của việc xác định xu hướng.
Tối ưu hóa stop-loss và take-profit: Xem xét kết hợp các chỉ số liên quan đến biến động như ATR để điều chỉnh năng động khoảng cách stop-loss và take-profit, giảm rủi ro liên quan đến phạm vi nhỏ.
Kích thước vị trí: Điều chỉnh kích thước vị trí một cách năng động dựa trên sức mạnh xu hướng, lợi nhuận tài khoản, v.v., tăng kích thước vị trí khi xu hướng mạnh và có lợi nhuận liên tục và giảm chi phí giao dịch thường xuyên.
Điều phối nhiều khung thời gian và nhiều công cụ: Xác nhận tín hiệu xu hướng trên các khung thời gian và công cụ để cải thiện độ chính xác của việc xác định xu hướng trong khi đa dạng hóa rủi ro của một công cụ hoặc khung thời gian duy nhất.
Chiến lược lưới vị trí biến động theo xu hướng này hoạt động tốt trong các thị trường xu hướng bằng cách sử dụng nhiều chỉ số để xác định hướng và sức mạnh xu hướng, điều chỉnh động stop-loss, take-profit và kích cỡ vị trí để nắm bắt xu hướng và đạt được lợi nhuận vượt quá. Tuy nhiên, hiệu suất của chiến lược là trung bình trong các thị trường không rõ ràng hoặc dao động thường xuyên. Do đó, khi sử dụng chiến lược này, điều quan trọng là tập trung vào việc chọn các công cụ xu hướng và điều chỉnh các tham số khi điều kiện thị trường thay đổi. Hơn nữa, có không gian tối ưu hóa hơn nữa trong xác định xu hướng, đặt stop-loss và take-profit, kích cỡ vị trí và phối hợp nhiều khung thời gian và nhiều công cụ.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © niosupetranmartinez //@version=5 strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true) // Inputs emaLen = input(200, 'EMA Length') rsiLen = input(9, 'RSI Length') trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"]) risk_reward_ratio = input(2, 'Risk Reward Ratio') useMacdFilter = input.bool(true, "Use MACD Filter") macdTimeframe = input("5", "MACD Timeframe") // EMA and RSI ema200 = ta.ema(close, emaLen) customRsi = ta.rsi(close, rsiLen) // MACD Filter [macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9)) // Majority Body Candle Identification Function isMajorityBodyCandle(candleOpen, candleClose, high, low) => bodySize = math.abs(candleClose - candleOpen) fullSize = high - low bodySize / fullSize > 0.6 // Engulfing Patterns isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low) isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low) // Entry Conditions with MACD Filter longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine) shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine) // Trade Execution var float stopLossPrice = na var float entryPrice = na // Long Entry if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(close - open) minimumStopLoss = entryPrice * 0.997 calculatedStopLoss = entryPrice - (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = entryPrice - stopLossPrice takeProfitPrice = entryPrice + (risk_reward_ratio * risk) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice) // Short Entry if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(open - close) minimumStopLoss = entryPrice * 1.003 calculatedStopLoss = entryPrice + (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = stopLossPrice - entryPrice takeProfitPrice = entryPrice - (risk_reward_ratio * risk) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice) // Plotting plot(ema200, color=color.blue, linewidth=2, title="EMA 200")