
Chiến lược này là một chiến lược kết hợp sử dụng RSI, MACD và đường trung bình di chuyển. Nó kết hợp các tín hiệu mua quá mức của RSI, độ nhạy cảm của MACD và hiệu quả của chỉ số của đường trung bình di chuyển để xác định thời điểm ra thị trường.
Chiến lược này dựa trên bốn điều kiện sau:
Chiến lược sẽ dừng lỗ khi hai điều kiện ra sân sau được thực hiện:
Do đó, chiến lược này có thể dừng lỗ khi thu hồi lợi nhuận và tránh thiệt hại lớn.
Lợi thế lớn nhất của chiến lược này là sự kết hợp của các chỉ số, sử dụng lợi thế của từng chỉ số, cụ thể là:
Chiến lược này có hai rủi ro chính:
Rủi ro rút lui lớn hơn. Rủi ro lớn nhất của các chiến lược theo xu hướng như trung bình di chuyển là sự rút lui lớn hơn do sự đảo ngược của thị trường.
Các tham số tối ưu hóa rất khó. Thiết lập và tối ưu hóa các tham số của chiến lược kết hợp nhiều chỉ số rất khó. Các phương pháp tối ưu hóa tham số như tiến trình bước, thuật toán di truyền có thể được sử dụng để xác định tham số tối ưu nhất.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm các điều kiện bổ sung để lọc thêm các tín hiệu giả. Ví dụ: kết hợp với chỉ số khối lượng giao dịch, chỉ số biến động, v.v.
Kiểm tra sự khác biệt trong thiết lập các tham số của các giống khác nhau. Điều chỉnh tham số để phù hợp với nhiều giống hơn.
Tối ưu hóa các thiết lập tham số trung bình di chuyển. Kiểm tra sự khác biệt giữa các tham số với các độ dài khác nhau.
Các nghiên cứu sử dụng các trung bình di chuyển thích ứng. Các tham số khác nhau được chuyển đổi theo môi trường thị trường.
Chiến lược này nói chung là một chiến lược theo dõi xu hướng và trung bình di chuyển tối ưu hóa điển hình. Nó hấp thụ các ưu điểm của một số chỉ số chính như MACD, RSI, và có tính độc đáo trong việc xác định thời gian ra thị trường và dừng lỗ. Tiếp theo, có thể cải thiện từ nhiều khía cạnh như tối ưu hóa tham số, kiểm soát rủi ro, để tham số chiến lược trở nên mạnh mẽ hơn, phù hợp với nhiều loại khác nhau, để có được sự ổn định cao hơn.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)
// Inputs
src = input(close, title="RSI Source")
// RSI Settings
lengthRSI = input.int(14, minval=1)
// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")
// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)
// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")
// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")
atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")
// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)
// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)
// Calculate ATR
atr = ta.atr(atrLength)
// Variables
var bool canEnterLong = na
// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr
// Entries and Exits
if hist < exitLevel and emaShort < emaLong
canEnterLong := true
strategy.close("Long")
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
strategy.entry("Long", strategy.long)
canEnterLong := false
lastEntryPrice := close
if lastEntryPrice < close
lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)
// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
last_buy = strategy.opentrades[0]
if (close < stopLossLevel)
strategy.close("Long", comment="Stop Loss Triggered")
if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
strategy.close("Long", comment="Take Profit Triggered")