
Chiến lược này là một hệ thống giao dịch kết hợp theo dõi xu hướng và đảo ngược động lực. Nó chủ yếu dựa trên đường trung bình 34 chu kỳ EMA để đánh giá xu hướng tổng thể, xác định khu vực quá mua quá bán thông qua chỉ số RSI, đồng thời kết hợp hình dạng đường K và tín hiệu giao dịch xác nhận khối lượng giao dịch. Chiến lược sử dụng phương thức dừng lỗ và lợi nhuận động dựa trên ATR, có thể điều chỉnh tham số giao dịch tùy theo biến động của thị trường.
Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:
Chiến lược này xây dựng một hệ thống giao dịch hoàn chỉnh bằng cách kết hợp nhiều chỉ số kỹ thuật, có khả năng thích ứng tốt và khả năng mở rộng. Điểm mạnh cốt lõi của chiến lược là xác nhận tín hiệu đa chiều và quản lý rủi ro động, nhưng cũng cần chú ý đến các vấn đề tối ưu hóa tham số và thích ứng với môi trường thị trường.
/*backtest
start: 2024-08-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"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/
// © bommytarton
//@version=6
strategy("Improved Momentum and Pivot Reversal Strategy", overlay=true)
// Define user inputs
lengthEMA = input.int(34, title="EMA Length", minval=1)
lengthRSI = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
lengthATR = input.int(14, title="ATR Length", minval=1)
multATR = input.float(1.5, title="ATR Multiplier for Take-Profit", minval=1.0)
stopLossMultiplier = input.float(1.0, title="Stop Loss Multiplier for ATR", minval=0.5, maxval=3.0) // Adjust the stop-loss to be tighter or wider
// Calculate the indicators
ema34 = ta.ema(close, lengthEMA)
rsiValue = ta.rsi(close, lengthRSI)
atrValue = ta.atr(lengthATR)
// Define entry conditions
longCondition = close > ema34 and close[1] < open[1] and close > open and close[2] > open[2] and close[1] < open[1] and rsiValue > 50
// Define stop-loss and take-profit based on ATR
stopLoss = close - (atrValue * stopLossMultiplier) // Tighter stop-loss using the ATR multiplier
takeProfit = close + (atrValue * multATR) // Take profit with adjustable multiplier
// Volume condition filter (make sure that the volume is higher than average over the past 20 bars)
avgVolume = ta.sma(volume, 20)
volumeCondition = volume > avgVolume
// Only trigger long if all conditions are met (trend above 34 EMA, red-green-green candle pattern, volume confirmation)
if (longCondition and volumeCondition)
strategy.entry("Long", strategy.long, stop=stopLoss, limit=takeProfit)
// Exit conditions based on RSI overbought/oversold and trailing stop
exitCondition = rsiValue > rsiOverbought or close < stopLoss
// Execute the exit strategy when RSI is overbought or price hits the stop-loss level
if (exitCondition)
strategy.close("Long") // Close the position when exit condition is met
// Plotting for visualization
plot(ema34, title="34 EMA", color=color.blue)
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=2)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=2)