
यह रणनीति बुलिंगर बैंड और एटीआर ट्रैकिंग स्टॉप के संयोजन के साथ एक अनुकूली ट्रेडिंग प्रणाली है। यह रणनीति बुलिंगर के साथ डाउनट्रैक के माध्यम से प्रवेश संकेतों को निर्धारित करती है, जबकि एटीआर-आधारित गतिशील ट्रैकिंग स्टॉप का उपयोग जोखिम को प्रबंधित करने और बाहर निकलने का समय निर्धारित करने के लिए करती है। यह रणनीति बाजार में स्पष्ट रूप से ट्रेंडिंग अवसरों को पकड़ने में सक्षम है, जबकि बाजार में उतार-चढ़ाव के दौरान सुरक्षा प्रदान करती है।
इस रणनीति के मूल में दो मुख्य भाग होते हैंः
इस रणनीति के संयोजन में ब्रुइन बैंड और एटीआर ट्रैकिंग स्टॉपलॉस, एक ट्रेडिंग प्रणाली है कि दोनों प्रवृत्ति पकड़ने और जोखिम नियंत्रण क्षमताओं का निर्माण. रणनीति की अनुकूलनशीलता की विशेषता यह विभिन्न बाजार के वातावरण में स्थिरता बनाए रखने के लिए अनुमति देता है, जबकि स्पष्ट सिग्नल प्रणाली के लिए प्रदान करता है एक उद्देश्य के आधार पर व्यापार. सुझाव दिया अनुकूलन दिशा के माध्यम से, रणनीति के लिए और अधिक उन्नयन के लिए जगह है.
/*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)