
Ý tưởng cốt lõi của chiến lược này là kết hợp chỉ số KST và đường trung bình EMA để có thể đánh giá và theo dõi xu hướng. Mua khi chỉ số KST xuất hiện và thấp hơn 0 khi mua và bán khi xuất hiện và cao hơn 0. Đồng thời kết hợp đường trung bình EMA làm kháng cự hỗ trợ, chỉ khi giá đóng cửa phá vỡ đường trung bình EMA mới phát ra tín hiệu giao dịch. Chiến lược này đơn giản và thực tế, có thể tự động theo dõi xu hướng, phù hợp cho các vị trí trung hạn dài hạn.
Tính chỉ số KST: Tính chỉ số ROC 10, 15, 20 và 30 ngày, sau đó cộng trọng lượng cho chúng, và cuối cùng có chỉ số KST thông qua một SMA trơn tru 9 ngày.
Tính toán đường trung bình EMA: tính toán đường trung bình EMA với độ dài 50.
Sản xuất tín hiệu mua: Sản xuất tín hiệu mua khi đường nhanh của chỉ số KST xuyên qua đường chậm ((Goldfork) và thấp hơn 0, đồng thời giá đóng cửa cao hơn đường trung bình EMA.
Sản xuất tín hiệu bán: Sản xuất tín hiệu bán khi đường nhanh của chỉ số KST xuyên qua đường chậm (đường chết) và cao hơn 0, đồng thời giá đóng cửa thấp hơn đường trung bình EMA.
Thiết lập dừng di động: Theo dõi dừng được thiết lập là 1% giá trị tài khoản, thực hiện dừng tự động.
Chỉ số KST có thể nhận diện sự thay đổi xu hướng, đường trung bình EMA có thể xác nhận hướng xu hướng, kết hợp cả hai có thể xác định chính xác thời gian ENTRY.
Sử dụng trục 0 kết hợp chéo nhanh và chậm để đánh giá hướng chỉ số KST, tránh giao dịch vô nghĩa.
Đường trung bình EMA được sử dụng như một kháng cự hỗ trợ, để lọc thêm các tín hiệu giả, chỉ được sử dụng khi vượt qua EMA.
Tự động theo dõi lỗ hổng để kiểm soát rủi ro và hoạt động lợi nhuận.
Các tham số chiến lược ít hơn, dễ thực hiện và tối ưu hóa.
Chỉ số KST có sự chậm trễ trong việc đánh giá sự thay đổi xu hướng, có thể bỏ lỡ một số cơ hội. Bạn có thể rút ngắn chu kỳ tính toán hoặc tối ưu hóa cách tăng trọng.
EMA trung bình có độ trễ và có thể không có hiệu lực tại điểm chuyển hướng. Bạn có thể thử các chỉ số khác hoặc kết hợp nhiều đường trung bình.
Cài đặt dừng lỗ quá thoải mái sẽ làm cho tổn thất mở rộng; quá chặt chẽ sẽ bị dừng bởi biến động lớn qua đêm. Cần kiểm tra cẩn thận để tìm điểm cân bằng.
Các tín hiệu chiến lược thường xuyên và có thể có chi phí giao dịch cao.
Tối ưu hóa các tham số chu kỳ tính toán của chỉ số KST để tìm các tham số kết hợp nhạy cảm hơn với một giống cụ thể.
Kiểm tra các chỉ số hoặc kết hợp khác nhau, chẳng hạn như MA, WMA, v.v., để xem loại nào có hiệu quả hơn khi kết hợp với KST.
Cố gắng điều chỉnh mức dừng lỗ theo biến động của tỷ lệ biến động hoặc ATR
Thêm các điều kiện lọc, chẳng hạn như khối lượng giao dịch tăng đột biến, để tránh bị đặt.
Cân nhắc kết hợp với các chỉ số khác như RSI, MACD, v.v. để chiến lược toàn diện hơn.
Kiểm tra hiệu quả của các tham số của các giống khác nhau, xây dựng các chương trình tối ưu hóa cho các giống khác nhau.
Chiến lược này có ý tưởng tổng thể rõ ràng, đáng tin cậy, dễ thực hiện, thông qua chỉ số KST để đánh giá xu hướng đảo ngược, EMA đồng đều để lọc thêm, kiểm soát rủi ro, có thể tự động theo dõi xu hướng đường dài. Lựa chọn tham số hợp lý, có không gian tối ưu hóa, người dùng có thể điều chỉnh tham số theo nhu cầu, phù hợp với các giống khác nhau, có khả năng thích hợp tốt. Chiến lược này phù hợp cho người mới học và cũng có thể cung cấp hướng dẫn cho các nhà giao dịch chuyên nghiệp. Bằng cách tiếp tục tối ưu hóa thử nghiệm, chiến lược này có khả năng trở thành một chiến lược theo dõi xu hướng ổn định và đáng tin cậy.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")
len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)
delta = kst - sig
buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA
longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0
longStopPrice := if (strategy.position_size > 0)
stopValue = close * (1 - longTrailPerc)
max(stopValue, longStopPrice[1])
else
0
shortStopPrice := if (strategy.position_size < 0)
stopValue = close * (1 + shortTrailPerc)
min(stopValue, shortStopPrice[1])
else
999999
// Submit entry orders
if (buySignal)
strategy.entry(id="EL", long=true)
if (sellSignal)
strategy.entry(id="ES", long=false)
// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
strategy.exit(id="XL TRL STP", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="XS TRL STP", stop=shortStopPrice)
alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')
alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')