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 ra tín hiệu giao dịch. Khi chỉ số KDJ vượt quá vùng bán tháo và giá giảm xuống MA, nó tạo ra tín hiệu không; khi chỉ số KDJ thấp hơn vùng bán tháo và giá vượt qua MA, nó tạo ra tín hiệu tăng. Bằng cách kết hợp chỉ số KDJ và MA, xác nhận xu hướng giúp nắm bắt xu hướng thị trường tốt hơn, đồng thời tránh các tín hiệu giả của thị trường lung lay.
Chiến lược này có thể nắm bắt tốt hơn xu hướng thị trường 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 chuyển động. Sử dụng thông tin mua quá nhiều và hướng xu hướng một cách hợp lý để đạt được hiệu suất giao dịch vững chắc. Tuy nhiên, chiến lược vẫn còn chỗ để 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í năng động và ngăn chặn lỗ, để nâng cao thêm độ vững chắc và khả năng 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")