এই কৌশলটি হল বোলিংজার ব্যান্ড, উডিস সিসিআই (কমোডিটি চ্যানেল সূচক), চলমান গড় (এমএ), এবং অন-ব্যালেন্স ভলিউম (ওবিভি) একত্রিত করে একটি মাল্টি-ইনডিকেটর ট্রেডিং সিস্টেম। এটি বাজারের অস্থিরতা পরিসীমা, সিগন্যাল ফিল্টারিংয়ের জন্য সিসিআই সূচক সরবরাহ করতে বোলিংজার ব্যান্ড ব্যবহার করে এবং বাজারের প্রবণতা স্পষ্ট হলে ট্রেডগুলি সম্পাদনের জন্য ভলিউম নিশ্চিতকরণের সাথে এমএ সিস্টেমগুলিকে একত্রিত করে। উপরন্তু, এটি কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণের জন্য গতিশীল স্টপ-লস এবং লাভ গ্রহণের জন্য এটিআর ব্যবহার করে।
মূল যুক্তি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করেঃ
এটি প্রযুক্তিগত সূচক সমন্বয়ের উপর ভিত্তি করে একটি সম্পূর্ণ ট্রেডিং সিস্টেম যা একাধিক সংকেত নিশ্চিতকরণের মাধ্যমে ট্রেডিং নির্ভুলতা উন্নত করে। কৌশল নকশা যথাযথ ঝুঁকি নিয়ন্ত্রণের সাথে যুক্তিসঙ্গত এবং ভাল ব্যবহারিক প্রয়োগের মান রয়েছে। লাইভ ট্রেডিংয়ে রক্ষণশীল অবস্থানগুলির সাথে পরীক্ষা করার এবং বাজারের অবস্থার উপর ভিত্তি করে পরামিতিগুলি ক্রমাগত অনুকূল করার পরামর্শ দেওয়া হয়।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy(shorttitle="BB Debug + Woodies CCI Filter", title="Debug Buy/Sell Signals with Woodies CCI Filter", overlay=true) // Input Parameters length = input.int(20, minval=1, title="BB MA Length") src = input.source(close, title="BB Source") mult1 = input.float(1.0, minval=0.001, maxval=50, title="BB Multiplier 1 (Std Dev 1)") mult2 = input.float(2.0, minval=0.001, maxval=50, title="BB Multiplier 2 (Std Dev 2)") ma_length = input.int(50, minval=1, title="MA Length") ma_long_length = input.int(200, minval=1, title="Long MA Length") obv_smoothing = input.int(10, minval=1, title="OBV Smoothing Length") atr_length = input.int(14, minval=1, title="ATR Length") // ATR Length for TP/SL // Bollinger Bands basis = ta.sma(src, length) dev1 = mult1 * ta.stdev(src, length) dev2 = mult2 * ta.stdev(src, length) upper_1 = basis + dev1 lower_1 = basis - dev1 upper_2 = basis + dev2 lower_2 = basis - dev2 plot(basis, color=color.blue, title="BB MA") p1 = plot(upper_1, color=color.new(color.green, 80), title="BB Upper 1") p2 = plot(lower_1, color=color.new(color.green, 80), title="BB Lower 1") p3 = plot(upper_2, color=color.new(color.red, 80), title="BB Upper 2") p4 = plot(lower_2, color=color.new(color.red, 80), title="BB Lower 2") fill(p1, p2, color=color.new(color.green, 90)) fill(p3, p4, color=color.new(color.red, 90)) // Moving Averages ma_short = ta.sma(close, ma_length) ma_long = ta.sma(close, ma_long_length) plot(ma_short, color=color.orange, title="MA Short") plot(ma_long, color=color.yellow, title="MA Long") // OBV and Smoothing obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0) obv_smooth = ta.sma(obv, obv_smoothing) // Debugging: Buy/Sell Signals debugBuy = ta.crossover(close, ma_short) debugSell = ta.crossunder(close, ma_short) // Woodies CCI cciTurboLength = 6 cci14Length = 14 cciTurbo = ta.cci(src, cciTurboLength) cci14 = ta.cci(src, cci14Length) // Filter: Only allow trades when CCI confirms the signal cciBuyFilter = cciTurbo > 0 and cci14 > 0 cciSellFilter = cciTurbo < 0 and cci14 < 0 finalBuySignal = debugBuy and cciBuyFilter finalSellSignal = debugSell and cciSellFilter // Plot Debug Buy/Sell Signals plotshape(finalBuySignal, title="Filtered Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.normal) plotshape(finalSellSignal, title="Filtered Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal) // Change candle color based on filtered signals barcolor(finalBuySignal ? color.lime : finalSellSignal ? color.red : na) // ATR for Stop Loss and Take Profit atr = ta.atr(atr_length) tp_long = close + 2 * atr // Take Profit for Long = 2x ATR sl_long = close - 1 * atr // Stop Loss for Long = 1x ATR tp_short = close - 2 * atr // Take Profit for Short = 2x ATR sl_short = close + 1 * atr // Stop Loss for Short = 1x ATR // Strategy Execution if (finalBuySignal) strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", limit=tp_long, stop=sl_long) if (finalSellSignal) strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", limit=tp_short, stop=sl_short) // Check for BTC/USDT pair isBTCUSDT = syminfo.ticker == "BTCUSDT" // Add alerts only for BTC/USDT alertcondition(isBTCUSDT and finalBuySignal, title="BTCUSDT Buy Signal", message="Buy signal detected for BTCUSDT!") alertcondition(isBTCUSDT and finalSellSignal, title="BTCUSDT Sell Signal", message="Sell signal detected for BTCUSDT!")