
Chiến lược này sử dụng chỉ số KDJ và đường trung bình di chuyển ((MA) để xác định xu hướng thị trường và tạo tín hiệu giao dịch. Khi chỉ số KDJ vượt quá khu vực mua quá mức và giá giảm xuống MA, nó tạo ra tín hiệu bán tháo. Khi chỉ số KDJ thấp hơn khu vực bán tháo và giá vượt qua MA, nó tạo ra tín hiệu bán tháo. Bằng cách kết hợp chỉ số KDJ và MA để xác nhận xu hướng, chiến lược này có thể nắm bắt được xu hướng thị trường tốt hơn, đồng thời tránh các tín hiệu giả mạo trong tình huống biến động.
Chiến lược này có thể nắm bắt được xu hướng thị trường tốt hơn và tạo ra tín hiệu giao dịch thông qua sự kết hợp của chỉ số KDJ và đường trung bình di chuyển. Sử dụng thông tin mua bán quá mức và hướng xu hướng một cách hợp lý, có thể đạt được hiệu suất giao dịch ổn định. Tuy nhiên, chiến lược vẫn có không gian để tối ưu hóa, chẳng hạn như giới thiệu nhiều điều kiện lọc hơn, quản lý vị trí vị trí động và dừng lỗ để nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("KDJ Trending View with Signals and MA Strategy", overlay=true)
// KDJ Settings
kdjLength = input.int(9, title="KDJ Length")
kdjSignal = input.int(3, title="KDJ Signal")
kdjOverbought = input.int(80, title="KDJ Overbought Level")
kdjOversold = input.int(20, title="KDJ Oversold Level")
// Margin Settings
longMargin = input.float(2.0, title="Long Margin", step=0.01)
shortMargin = input.float(2.0, title="Short Margin", step=0.01)
// MA Settings
maLength = input.int(20, title="MA Length")
maType = input.string("SMA", title="MA Type (SMA, EMA, etc.)")
// Calculate KDJ
kdj_highest = ta.highest(high, kdjLength)
kdj_lowest = ta.lowest(low, kdjLength)
kdjRSV = 100 * ((close - kdj_lowest) / (kdj_highest - kdj_lowest))
kdjK = ta.sma(kdjRSV, kdjSignal)
kdjD = ta.sma(kdjK, kdjSignal)
kdjJ = 3 * kdjK - 2 * kdjD
// Calculate Moving Average
ma = ta.sma(close, maLength) // SMA kullanarak ortalama hesaplama
// Determine MA Direction
maCrossUp = ta.crossover(close, ma)
maCrossDown = ta.crossunder(close, ma)
// Plot MA with Direction Color Change
maColor = maCrossUp ? color.green : maCrossDown ? color.red : color.gray
plot(ma, color=maColor, title="Moving Average")
// Plot Trading Signals
plotshape(kdjJ >= kdjOverbought ? low : na, style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small, title="Short Signal")
plotshape(kdjJ <= kdjOversold ? high : na, style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small, title="Long Signal")
// Trading Strategy with Manual Margin and MA Strategy
if (kdjJ >= kdjOverbought and maCrossDown)
strategy.entry("Short", strategy.short, qty=1, comment="Short Entry")
if (kdjJ <= kdjOversold and maCrossUp)
strategy.entry("Long", strategy.long, qty=1, comment="Long Entry")