
Chiến lược này là một chiến lược giao dịch định lượng tổng hợp dựa trên chỉ số MACD. Nó sử dụng tổng hợp nhiều chỉ số như MACD, KDJ và các chỉ số khác nhau để tạo ra tín hiệu giao dịch thông qua sự kết hợp giữa các chỉ số.
Chỉ số cốt lõi của chiến lược này là MACD. MACD đại diện cho chỉ số di chuyển trung bình, một chỉ số theo dõi xu hướng. Nó bao gồm một đường di chuyển trung bình nhanh (EMA) và một đường di chuyển chậm (EMA).
Chiến lược này cũng giới thiệu chỉ số KDJ. Chỉ số KDJ bao gồm giá trị K, giá trị D và giá trị J. Trong đó, giá trị K là giá trị ngẫu nhiên, giá trị D là trung bình di chuyển của giá trị K và giá trị J là giá trị xác định. Chỉ số KDJ phản ánh tình trạng quá mua quá bán của thị trường. Khi giá trị J lớn hơn 100 đại diện cho quá mua và nhỏ hơn 10 đại diện cho quá bán.
Chiến lược này sử dụng một số chỉ số tổng hợp như MACD và KDJ để lọc hiệu quả tiếng ồn thị trường và xác định hướng xu hướng. Chỉ số MACD có thể nắm bắt các biến động giá ngắn hạn và KDJ có thể xác nhận xu hướng trung hạn và dài hạn. Sự kết hợp của cả hai có thể cân bằng mối quan hệ giữa việc theo đuổi sự nhanh nhẹn và ổn định.
Ngoài ra, chiến lược đã thêm vào bộ chọn thời gian, có thể tự chọn phạm vi thời gian để đo lại. Điều này cung cấp sự linh hoạt hơn trong việc đánh giá hiệu suất của chiến lược.
Khi thị trường dao động lâu dài, MACD sẽ xuất hiện nhiều báo cáo sai. Khi đó, các tham số của đường EMA có thể được điều chỉnh thích hợp, lọc một phần tiếng ồn.
KDJ chỉ số tham số thiết lập không đúng cũng có thể ảnh hưởng đến kết quả. Bạn có thể thử nghiệm nhiều nhóm tham số, chọn một nhóm tham số ổn định hơn.
Lựa chọn thời gian phản hồi không phù hợp sẽ đánh giá quá cao hoặc đánh giá thấp lợi nhuận của chiến lược.
Chiến lược này có thể được tối ưu hóa bằng cách:
Tăng cơ chế dừng lỗ. Cần dừng lỗ khi giá kích hoạt đường dừng lỗ.
Thêm nhiều bộ lọc chỉ số. Kết hợp với các chỉ số khác như RSI, BRI, có thể cải thiện độ chính xác của tín hiệu.
Tối ưu hóa tham số chỉ số. Thay đổi sự kết hợp của tham số EMA và KDJ để tìm tham số tối ưu nhất.
Sử dụng công nghệ học máy để tối ưu hóa tự động. Sử dụng mạng thần kinh để đào tạo và tối ưu hóa các tham số chiến lược.
Chiến lược này là một chiến lược định lượng điển hình dựa trên theo dõi xu hướng, hỗ trợ bởi kiểm soát mua bán quá mức. Nó kết hợp các lợi thế của nhiều chỉ số, có thể cân bằng hiệu quả giữa sự ổn định và nhạy cảm. Bằng cách tiếp tục tối ưu hóa và điều chỉnh, mở rộng hơn nữa các trường hợp áp dụng chiến lược, để có được lợi nhuận ổn định lâu dài.
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000)
source = close
fastlength=input(12, minval=1)
slowlength=input(26,minval=1)
signallength=input(9,minval=1)
// === Defining the MACD oscillator
fastMA=ema(source,fastlength)
slowMA=ema(source,slowlength)
MACD=fastMA-slowMA
signal=sma(MACD,signallength)
delta=MACD-signal
// === Buy and Sell Signals ===
buy=crossover(MACD, signal)
sell=crossunder(MACD, signal)
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2018, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2020, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy) // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell) // exit long when "within window of time" AND crossunder