এটি ব্রেক অব স্ট্রাকচার (বিওএস) এবং ভলিউম নিশ্চিতকরণের উপর ভিত্তি করে একটি বুদ্ধিমান ট্রেডিং কৌশল। কৌশলটি ভলিউম সম্প্রসারণের নিশ্চিতকরণের সাথে মিলিত পূর্ববর্তী উচ্চ বা নিম্নের দামের ব্রেকআউট সনাক্ত করে ট্রেডিং সংকেত তৈরি করে। এটি ট্রেডিং নির্ভরযোগ্যতা এবং ঝুঁকি নিয়ন্ত্রণ ক্ষমতা উন্নত করতে ধারাবাহিক নিশ্চিতকরণের প্রয়োজনীয়তা এবং গতিশীল লাভ / স্টপ-লস সেটিংস সহ একাধিক শর্ত যাচাইকরণ প্রক্রিয়া ব্যবহার করে।
মূল যুক্তিতে নিম্নলিখিত মূল উপাদানগুলি অন্তর্ভুক্ত রয়েছেঃ
এটি একটি কৌশল ব্যবস্থা যা ক্লাসিকাল প্রযুক্তিগত বিশ্লেষণ তত্ত্বকে আধুনিক পরিমাণগত ট্রেডিং পদ্ধতির সাথে একত্রিত করে। একাধিক শর্ত যাচাইকরণ এবং কঠোর ঝুঁকি নিয়ন্ত্রণের মাধ্যমে, কৌশলটি ভাল স্থিতিশীলতা এবং নির্ভরযোগ্যতা প্রদর্শন করে। যদিও অপ্টিমাইজেশান প্রয়োজন এমন দিক রয়েছে, সামগ্রিক কাঠামো নকশা যুক্তিসঙ্গত এবং ব্যবহারিক প্রয়োগের মূল্য রয়েছে। প্রস্তাবিত অপ্টিমাইজেশান দিকগুলির মাধ্যমে কৌশলটির পারফরম্যান্স আরও উন্নত করা যেতে পারে।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BOS and Volume Strategy with Confirmation", overlay=true) // Parameters swingLength = input.int(20, title="Swing Length", minval=1) volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1) volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1) takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01) stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01) // New parameter for stop loss atrLength = input.int(14, title="ATR Length") confirmationBars = input.int(2, title="Confirmation Bars", minval=1) // Calculate Swing Highs and Lows swingHigh = ta.highest(high, swingLength)[1] swingLow = ta.lowest(low, swingLength)[1] // Calculate Volume Moving Average volumeSMA = ta.sma(volume, volumeSMA_length) highVolume = volume > (volumeSMA * volumeMultiplier) // Break of Structure Detection with Confirmation var int bullishCount = 0 var int bearishCount = 0 if (close > swingHigh and highVolume) bullishCount := bullishCount + 1 bearishCount := 0 else if (close < swingLow and highVolume) bearishCount := bearishCount + 1 bullishCount := 0 else bullishCount := 0 bearishCount := 0 bullishBOSConfirmed = (bullishCount >= confirmationBars) bearishBOSConfirmed = (bearishCount >= confirmationBars) // Entry and Exit Conditions var float entryPrice = na // Declare entryPrice as a variable if (bullishBOSConfirmed and strategy.position_size <= 0) entryPrice := close // Use ':=' for assignment strategy.entry("Long", strategy.long) if (strategy.position_size > 0) // Calculate stop loss price stopLossPrice = entryPrice * (1 - stopLossPercentage) strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice) if (bearishBOSConfirmed and strategy.position_size >= 0) entryPrice := close // Use ':=' for assignment strategy.entry("Short", strategy.short) if (strategy.position_size < 0) // Calculate stop loss price stopLossPrice = entryPrice * (1 + stopLossPercentage) strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice) // Plot Swing Highs and Lows for Visualization plot(swingHigh, title="Swing High", color=color.green, linewidth=1) plot(swingLow, title="Swing Low", color=color.red, linewidth=1)