এই কৌশলটি বোলিংজার ব্যান্ড এবং এটিআর সূচকগুলির উপর ভিত্তি করে একটি বুদ্ধিমান ট্রেডিং সিস্টেম, যা বহু-স্তরের মুনাফা গ্রহণ এবং স্টপ-লস প্রক্রিয়া অন্তর্ভুক্ত করে। কৌশলটি মূলত নিম্ন বোলিংজার ব্যান্ডের কাছাকাছি বিপরীত সংকেত সনাক্ত করে এবং গতিশীল ট্রেইলিং স্টপ ব্যবহার করে ঝুঁকি পরিচালনা করে দীর্ঘ অবস্থানে প্রবেশ করে। সিস্টেমটি 20% মুনাফা লক্ষ্য এবং 12% স্টপ-লস স্তরের সাথে ডিজাইন করা হয়েছে, যখন এটিআর-ভিত্তিক গতিশীল ট্রেইলিং স্টপগুলিকে মুনাফা রক্ষা করার জন্য অন্তর্ভুক্ত করা হয় যখন প্রবণতা বিকাশের জন্য পর্যাপ্ত জায়গা দেয়।
মূল যুক্তিতে বেশ কয়েকটি মূল উপাদান অন্তর্ভুক্ত রয়েছেঃ
এই কৌশলটি বোলিংজার ব্যান্ড এবং এটিআর সূচক ব্যবহার করে একটি বহু-স্তরের ট্রেডিং সিস্টেম তৈরি করে, প্রবেশ, স্টপ-লস এবং মুনাফা গ্রহণের জন্য গতিশীল পরিচালন পদ্ধতি ব্যবহার করে। এর শক্তিগুলি এর বিস্তৃত ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা এবং বাজারের অস্থিরতার সাথে খাপ খাইয়ে নেওয়ার ক্ষমতাতে রয়েছে। প্রস্তাবিত অপ্টিমাইজেশান দিকগুলির মাধ্যমে কৌশলটির উন্নতির জন্য উল্লেখযোগ্য জায়গা রয়েছে। এটি বৃহত্তর সময়সীমার উপর ব্যবহারের জন্য বিশেষভাবে উপযুক্ত এবং মানসম্পন্ন সম্পদ ধারণকারী বিনিয়োগকারীদের তাদের প্রবেশ এবং প্রস্থান সময়কে অনুকূল করতে সহায়তা করতে পারে।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3) // Input settings length = input.int(20, minval=1) maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = 1.5 // Standard deviation multiplier set to 1.5 offset = input.int(0, "Offset", minval=-500, maxval=500) atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop // Time range filters start_date = input(timestamp("2018-01-01 00:00"), title="Start Date") end_date = input(timestamp("2069-12-31 23:59"), title="End Date") in_date_range = true // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // ATR Calculation atr = ta.atr(length) // Use ATR for trailing stop adjustments // Plotting plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Candle color detection isGreen = close > open isRed = close < open // Flags for entry and exit conditions var bool redTouchedLower = false var float targetPrice = na var float stopLossPrice = na var float trailingStopPrice = na if in_date_range // Entry Logic: First green candle after a red candle touches the lower band if close < lower and isRed redTouchedLower := true if redTouchedLower and isGreen strategy.entry("Long", strategy.long) targetPrice := close * 1.2 // Set the target price to 20% above the entry price stopLossPrice := close * 0.88 // Set the stop loss to 12% below the entry price trailingStopPrice := na // Reset trailing stop on entry redTouchedLower := false // Exit Logic: Trailing stop after 20% price increase if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice if na(trailingStopPrice) trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR // Exit if the price falls below the trailing stop after 20% increase if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice strategy.close("Long", comment="Trailing Stop After 20% Increase") targetPrice := na // Reset the target price stopLossPrice := na // Reset the stop loss price trailingStopPrice := na // Reset trailing stop // Stop Loss: Exit if the price drops 12% below the entry price if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice strategy.close("Long", comment="Stop Loss Triggered") targetPrice := na // Reset the target price stopLossPrice := na // Reset the stop loss price trailingStopPrice := na // Reset trailing stop // Trailing Stop: Activate after touching the upper band if strategy.position_size > 0 and close >= upper and isGreen if na(trailingStopPrice) trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR // Exit if the price falls below the trailing stop if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice strategy.close("Long", comment="Trailing Stop Triggered") trailingStopPrice := na // Reset trailing stop targetPrice := na // Reset the target price stopLossPrice := na // Reset the stop loss price