
এই কৌশলটি একটি স্বনির্ধারিত ট্রেডিং সিস্টেম যা বোলিংগার ব্যান্ডস এবং এটিআর ট্র্যাকিং স্টপকে একত্রিত করে। এই কৌশলটি বোলিংগার ট্র্যাকিং স্টপকে বিপর্যস্ত করে প্রবেশের সংকেত নির্ধারণ করে এবং এটিআর-ভিত্তিক গতিশীল ট্র্যাকিং স্টপ ব্যবহার করে ঝুঁকি পরিচালনা করতে এবং বেরিয়ে যাওয়ার সময় নির্ধারণ করে। এই কৌশলটি যখন বাজারের প্রবণতা সুস্পষ্ট হয় তখন ট্রেন্ডিং সুযোগগুলি ধরতে সক্ষম হয় এবং একই সাথে বাজারের ঝড়ের মধ্যে সুরক্ষা সরবরাহ করে।
কৌশলটির মূল যুক্তি দুটি প্রধান অংশ নিয়ে গঠিতঃ
এই কৌশলটি ব্রিনব্যান্ড এবং এটিআর ট্র্যাকিং স্টপ লস সংযুক্ত করে একটি ট্রেডিং সিস্টেম তৈরি করে যা প্রবণতা ক্যাপচার এবং ঝুঁকি নিয়ন্ত্রণের ক্ষমতা উভয়ই রাখে। কৌশলটির স্ব-অনুকূলিতকরণ বৈশিষ্ট্যটি এটিকে বিভিন্ন বাজার পরিবেশে স্থিতিশীল রাখতে সক্ষম করে, এবং একটি পরিষ্কার সংকেত সিস্টেমটি উদ্দেশ্যমূলক ব্যবসায়ের ভিত্তি সরবরাহ করে। প্রস্তাবিত অপ্টিমাইজড দিকনির্দেশের মাধ্যমে, কৌশলটির আরও উন্নতির জন্য জায়গা রয়েছে। বাস্তবে, বিনিয়োগকারীদের তাদের ঝুঁকি পছন্দ এবং ট্রেডের জাতের বৈশিষ্ট্য অনুসারে প্যারামিটারগুলিকে লক্ষ্যযুক্তভাবে সামঞ্জস্য করার পরামর্শ দেওয়া হয়।
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("ATR Trailing Stop Loss with Bollinger Bands", overlay=true)
// Input parameters for Bollinger Bands
bb_length = input.int(20, title="Bollinger Bands Length")
bb_stddev = input.float(2.0, title="Bollinger Bands Std Dev")
// Input parameters for ATR Trailing Stop Loss
atr_length = input.int(14, title="ATR Length")
atr_multiplier = input.float(3.0, title="ATR Multiplier")
// Calculate Bollinger Bands
basis = ta.sma(close, bb_length)
upper_band = ta.sma(close, bb_length) + ta.stdev(close, bb_length) * bb_stddev
lower_band = ta.sma(close, bb_length) - ta.stdev(close, bb_length) * bb_stddev
// Calculate ATR
atr = ta.atr(atr_length)
// Trailing Stop Loss Calculation
var float long_stop = na // Explicitly define as float type
var float short_stop = na // Explicitly define as float type
if (strategy.position_size > 0)
long_stop := close - atr * atr_multiplier
long_stop := math.max(long_stop, nz(long_stop[1], long_stop))
else
long_stop := na
if (strategy.position_size < 0)
short_stop := close + atr * atr_multiplier
short_stop := math.min(short_stop, nz(short_stop[1], short_stop))
else
short_stop := na
// Entry and Exit Conditions
long_condition = ta.crossover(close, lower_band) // Enter long when price crosses above lower band
short_condition = ta.crossunder(close, upper_band) // Enter short when price crosses below upper band
exit_long_condition = ta.crossunder(close, long_stop) // Exit long when price crosses below trailing stop
exit_short_condition = ta.crossover(close, short_stop) // Exit short when price crosses above trailing stop
// Execute Trades
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (exit_long_condition)
strategy.close("Long")
if (exit_short_condition)
strategy.close("Short")
// Plot Bollinger Bands
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")
// Plot Trailing Stop Loss
plot(strategy.position_size > 0 ? long_stop : na, color=color.orange, title="Long Trailing Stop")
plot(strategy.position_size < 0 ? short_stop : na, color=color.purple, title="Short Trailing Stop")
// Labels for Entry and Exit
if (long_condition)
label.new(bar_index, low, text="Entry Long", style=label.style_circle, color=color.green, textcolor=color.white, size=size.small)
if (short_condition)
label.new(bar_index, high, text="Entry Short", style=label.style_circle, color=color.red, textcolor=color.white, size=size.small)
if (exit_long_condition)
label.new(bar_index, low, text="Exit Long", style=label.style_circle, color=color.blue, textcolor=color.white, size=size.small)
if (exit_short_condition)
label.new(bar_index, high, text="Exit Short", style=label.style_circle, color=color.orange, textcolor=color.white, size=size.small)