Chiến lược này là một hệ thống giao dịch theo xu hướng kết hợp nhiều chỉ số kỹ thuật. Nó tích hợp RSI (Chỉ số sức mạnh tương đối), MACD (Moving Average Convergence Divergence) và SMA (Moving Average đơn giản) để thực hiện giao dịch khi xu hướng thị trường được xác định rõ ràng. Chiến lược cũng kết hợp các cơ chế lấy lợi nhuận, dừng lỗ và dừng kéo theo để quản lý rủi ro tốt hơn.
Chiến lược thực hiện giao dịch dựa trên các điều kiện cốt lõi sau:
Khi tất cả các điều kiện này được đáp ứng đồng thời, hệ thống tạo ra một tín hiệu dài. Ngoài ra, chiến lược đặt mục tiêu lợi nhuận 5%, giới hạn dừng lỗ 3%, và dừng kéo theo 2% để bảo vệ lợi nhuận tích lũy. Cách tiếp cận nhiều lớp này cho các điều kiện giao dịch giúp cải thiện độ chính xác và an toàn.
Chiến lược này thiết lập một hệ thống giao dịch toàn diện thông qua sự kết hợp của nhiều chỉ số kỹ thuật. Nó bao gồm cả logic theo xu hướng và các cân nhắc quản lý rủi ro. Mặc dù có các lĩnh vực tối ưu hóa, khung tổng thể cung cấp khả năng mở rộng và thích nghi tốt. Việc thực hiện thành công đòi hỏi các nhà giao dịch tối ưu hóa các tham số và cải thiện chiến lược dựa trên điều kiện thị trường thực tế.
/*backtest start: 2024-12-03 00:00:00 end: 2024-12-10 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Flexible Swing Trading Strategy with Trailing Stop and Date Range", overlay=true) // Input parameters rsiPeriod = input.int(14, title="RSI Period") macdFastLength = input.int(12, title="MACD Fast Length") macdSlowLength = input.int(26, title="MACD Slow Length") macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing") smaShortPeriod = input.int(20, title="Short-term SMA Period") smaLongPeriod = input.int(50, title="Long-term SMA Period") takeProfitPercent = input.float(5.0, title="Take Profit Percentage") stopLossPercent = input.float(3.0, title="Stop Loss Percentage") trailingStopPercent = input.float(2.0, title="Trailing Stop Percentage") // Date range inputs startDate = input(timestamp("2023-01-01 00:00"), title="Start Date") endDate = input(timestamp("2023-12-31 23:59"), title="End Date") // Calculate RSI rsi = ta.rsi(close, rsiPeriod) // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing) // Calculate SMAs smaShort = ta.sma(close, smaShortPeriod) smaLong = ta.sma(close, smaLongPeriod) // Buy condition buyCondition = ta.crossover(macdLine, signalLine) and rsi < 70 and close > smaShort and smaShort > smaLong // Execute buy orders within the date range if (buyCondition ) strategy.entry("Buy", strategy.long) // Calculate take profit and stop loss levels takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent / 100) stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent / 100) // Set take profit, stop loss, and trailing stop strategy.exit("Take Profit", "Buy", limit=takeProfitLevel) strategy.exit("Stop Loss", "Buy", stop=stopLossLevel) strategy.exit("Trailing Stop", "Buy", trail_price=close * (1 - trailingStopPercent / 100), trail_offset=trailingStopPercent / 100) // Plot Buy signals plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Plot SMAs plot(smaShort, color=color.blue, title="20 SMA") plot(smaLong, color=color.red, title="50 SMA") // Plot MACD and Signal Line plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(70, "Overbought", color=color.red) hline(30, "Oversold", color=color.green) plot(rsi, color=color.purple, title="RSI") // Debugging plots plotchar(buyCondition , char='B', location=location.belowbar, color=color.green, size=size.small) plotchar(strategy.opentrades > 0, char='T', location=location.abovebar, color=color.blue, size=size.small) plot(stopLossLevel, color=color.red, title="Stop Loss Level") plot(takeProfitLevel, color=color.green, title="Take Profit Level")