এই কৌশলটি বাজারের প্রবণতা সনাক্ত করতে এবং ট্রেডিং সংকেত তৈরি করতে কেডিজে সূচক এবং চলমান গড় (এমএ) ব্যবহার করে। যখন কেডিজে সূচক ওভারবয়ড স্তর অতিক্রম করে এবং দাম এমএ এর নীচে ভেঙে যায়, তখন একটি সংক্ষিপ্ত সংকেত উত্পন্ন হয়; যখন কেডিজে সূচক ওভারসোল্ড স্তরের নীচে থাকে এবং দাম এমএ এর উপরে ভেঙে যায়, তখন একটি দীর্ঘ সংকেত উত্পন্ন হয়। এমএ প্রবণতা নিশ্চিতকরণের সাথে কেডিজে সূচককে একত্রিত করে, এই কৌশলটি ব্যাপ্তি বাজারে মিথ্যা সংকেত এড়ানোর সময় বাজারের প্রবণতা আরও ভালভাবে ক্যাপচার করতে পারে।
কেডিজে সূচককে চলমান গড়ের সাথে একত্রিত করে, এই কৌশলটি কার্যকরভাবে বাজারের প্রবণতা ক্যাপচার করতে এবং ট্রেডিং সংকেত তৈরি করতে পারে। অতিরিক্ত ক্রয় / অতিরিক্ত বিক্রয় তথ্য এবং প্রবণতা দিকের যুক্তিসঙ্গত ব্যবহার শক্তিশালী ট্রেডিং পারফরম্যান্সের দিকে পরিচালিত করতে পারে। তবে, কৌশলটির দৃust়তা এবং লাভজনকতা আরও বাড়ানোর জন্য আরও ফিল্টারিং শর্ত, গতিশীল অবস্থান পরিচালনা, স্টপ-লস এবং লাভ গ্রহণ ইত্যাদি প্রবর্তনের মতো অপ্টিমাইজেশনের জন্য এখনও জায়গা রয়েছে। ব্যবহারিক প্রয়োগে, কৌশলটি এর কার্যকারিতা এবং প্রয়োগযোগ্যতা যাচাই করার জন্য বিভিন্ন বাজার পরিবেশ এবং যন্ত্রের জন্য সূক্ষ্ম-টিউন এবং পরীক্ষার প্রয়োজন।
/*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")