
Chiến lược giao chéo K-line là một chiến lược theo dõi xu hướng điển hình. Chiến lược này xây dựng nhiều nhóm K-line và D-line bằng cách tính các giá trị sai lệch tiêu chuẩn của các khoảng thời gian khác nhau (như đường mặt trời, đường tuần hoàn, đường mặt trăng, v.v.), sau đó lấy trung bình của các đường này để xây dựng đường trung bình, làm nhiều khi đi qua đường chậm trên đường nhanh và không khi đi xuống.
Lý luận cốt lõi của chiến lược này là tính toán độ lệch chuẩn trong nhiều chu kỳ thời gian, sau đó lấy trung bình để xây dựng tín hiệu giao dịch.
Đầu tiên, chiến lược thông quastoch()Chức năng tính toán độ lệch chuẩn K theo các tham số khác nhau, ở đây tổng cộng tính toán 5 nhóm giá trị K, tương ứng với chu kỳ thời gian là mặt trời, đường tròn, mặt trăng.
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
...
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
Sau đó tính D-line với các tham số khác nhau:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
Sau đó, tính trung bình của các nhóm K và D để xây dựng đường nhanh Kavg và đường chậm Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Cuối cùng, hãy làm nhiều hơn khi sử dụng đường dây nhanh, và làm trống khi sử dụng đường dây chậm:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
Bằng cách kết hợp các đường trung bình lệch chuẩn của nhiều chu kỳ thời gian, bạn có thể loại bỏ tiếng ồn thị trường trong các chu kỳ thời gian lớn hơn và khóa các hướng xu hướng chính.
Giải pháp:
Tăng các điều kiện lọc để tránh bị lừa bởi các đột phá giả ngắn hạn
Sử dụng thiết lập chu kỳ thích ứng, điều chỉnh các tham số chu kỳ theo mức độ biến động của thị trường
Thiết lập dừng di động để dừng lỗ kịp thời, tránh theo đuổi cao giết thấp
Tối ưu hóa tham số chu kỳ trung bình để tìm điểm cân bằng tốt nhất
Kết hợp nhiều tín hiệu chỉ số để tăng sự ổn định chiến lược
Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:
Việc đưa ra các tín hiệu chỉ số khác để kết hợp, chẳng hạn như đưa MACD, Bollinger Bands, có thể cải thiện chất lượng tín hiệu
Thêm bộ lọc xu hướng, chẳng hạn như giới thiệu hướng đường SMA, các chỉ số như ADX để đánh giá xu hướng, tránh giao dịch ngược
Sử dụng thiết lập chu kỳ thích ứng, điều chỉnh động các tham số chu kỳ theo mức độ biến động của thị trường
Thêm chiến lược dừng chân di động, đặt điểm dừng chân theo các tham số của chiến lược, dừng chân kịp thời
Tối ưu hóa các tham số chu kỳ trung bình của đường nhanh và đường chậm để tìm các tham số kết hợp tốt nhất
Thêm điều kiện lọc kho mở để tránh tín hiệu sai lệch do tiếng ồn ngắn hạn
Hãy thử chiến lược Breakout để mở lệnh sau khi phá vỡ đường trung bình.
Kiểm tra các chiến lược thoát khác nhau, chẳng hạn như Chandelier Exit, tối ưu hóa Stop Loss
Chiến lược giao chéo đường K của các chỉ số sai tiêu chuẩn nhiều chu kỳ thời gian kết hợp khả năng theo dõi xu hướng của các chỉ số sai tiêu chuẩn và sự ổn định của chiến lược đồng bằng. Bằng cách tính toán đường K và đường D của các chỉ số sai tiêu chuẩn nhiều chu kỳ, xây dựng tín hiệu giao dịch, có thể sử dụng hiệu quả sức mạnh dự đoán của các chỉ số sai tiêu tiêu chuẩn theo các thang thời gian khác nhau, lọc tiếng ồn thị trường và nắm bắt hướng xu hướng chính. Chiến lược này có không gian điều chỉnh tham số chu kỳ, có thể được tối ưu hóa để có hiệu quả chiến lược tốt hơn bằng cách điều chỉnh các tham số chu kỳ và giới thiệu thêm các điều kiện lọc, chiến lược dừng lỗ.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)
price = input(close)
///////////////////////////////
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothD = input(34)
d = sma(k, smoothD)
///////////////////////////
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
smoothD1 = input(55)
d1 = sma(k1, smoothD1)
//////////////////////////////////////
smoothK2 = input(144)
SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)
smoothD2 = input(89)
d2 = sma(k2, smoothD2)
/////////////////////////////////////
smoothK3 = input(233)
SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)
smoothD3 = input(144)
d3 = sma(k3, smoothD3)
////////////////////////////////////////////////
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
/////////////////////////////////////////////////
Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)
Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)
///////////////////////////////////////
hline(50, color=gray)
long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal)
//len1 = input(3)
//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]
//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)