Cette stratégie utilise l'indicateur KDJ et la moyenne mobile (MA) pour identifier les tendances du marché et générer des signaux de négociation. Lorsque l'indicateur KDJ dépasse le niveau de surachat et que le prix dépasse le niveau de MA, un signal court est généré; lorsque l'indicateur KDJ est en dessous du niveau de survente et que le prix dépasse le niveau de MA, un signal long est généré. En combinant l'indicateur KDJ avec la confirmation de tendance MA, cette stratégie peut mieux capturer les tendances du marché tout en évitant de faux signaux sur les marchés en évolution.
En combinant l'indicateur KDJ avec des moyennes mobiles, cette stratégie peut capturer efficacement les tendances du marché et générer des signaux de trading. Une utilisation raisonnable des informations sur achat / survente et de la direction de la tendance peut conduire à une performance de trading robuste. Cependant, il reste encore une marge d'optimisation, comme l'introduction de conditions de filtrage plus strictes, une gestion dynamique des positions, un stop-loss et un take-profit, etc., pour améliorer davantage la robustesse et la rentabilité de la stratégie. Dans l'application pratique, la stratégie doit être affinée et testée pour différents environnements et instruments de marché afin de vérifier son efficacité et son applicabilité.
/*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")