এই কৌশলটি একটি ট্রেলিং স্টপ (টিএস) এর ভিত্তি হিসাবে গড় সত্য পরিসীমা (এটিআর) ব্যবহার করে, প্রবণতা অনুসরণ করার জন্য স্টপ-লস অবস্থানকে গতিশীলভাবে সামঞ্জস্য করে। যখন দাম অনুকূল দিকে চলে যায়, তখন লাভের লক করার জন্য স্টপ-লস অবস্থানটি সেই অনুযায়ী সামঞ্জস্য করা হয়; যখন দাম প্রতিকূল দিকে চলে যায়, স্টপ-লস অবস্থানটি অপরিবর্তিত থাকে এবং একবার দাম স্টপ-লস মূল্যে পৌঁছে যায়, অবস্থানটি বন্ধ হয়ে যায়। এই কৌশলটির মূল চাবিকাঠি স্টপ-লস অবস্থানের গতিশীল সামঞ্জস্যের মধ্যে রয়েছে, যা মুনাফা উভয়ই রক্ষা করতে পারে এবং প্রবণতা অব্যাহত থাকাকালীন মুনাফা প্রসারিত করার অনুমতি দেয়।
এটিআর ট্রেইলিং স্টপ কৌশলটি দামের ওঠানামা এর মাত্রার উপর ভিত্তি করে স্টপ-লস পজিশনকে গতিশীলভাবে সামঞ্জস্য করতে পারে এবং ট্রেন্ডিং মার্কেটে ভাল ফলাফল অর্জন করতে পারে। তবে, এই কৌশলটির ঝুঁকি যেমন অস্থির বাজারগুলি মোকাবেলা করতে অক্ষমতা, অত্যধিক স্টপ-লস ফ্রিকোয়েন্সি এবং ফাঁক খোলার এড়াতে অসুবিধা রয়েছে। এই ঘাটতিগুলি মোকাবেলায়, কৌশলটি প্রবণতা বিচার, লাভ গ্রহণের কৌশল এবং সর্বাধিক স্টপ-লস সীমা হিসাবে অনুকূলিত এবং উন্নত করা যেতে পারে। এই সামঞ্জস্যগুলির সাথে, কৌশলটির অভিযোজনযোগ্যতা এবং লাভজনকতা আশা করা যায়।
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Long TAP", overlay=true) // Constants keyValueDefault = 3.0 keyValueStep = 0.5 atrPeriodDefault = 10 // Inputs keyValue = input.float(keyValueDefault, title="Key Value") atrPeriod = input.int(atrPeriodDefault, title="ATR Period") // Calculations xATR = ta.atr(atrPeriod) nLoss = keyValue * xATR // Trailing Stop Calculation var float xATRTrailingStop = 0.0 xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1) xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1) // Position Calculation var int pos = 0 pos := nz(pos[1], 0) if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0)) pos := 1 else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0)) pos := -1 // Plotting Trailing Stop var color xcolor = na if (pos == -1) xcolor := color.red else if (pos == 1) xcolor := color.green plot(xATRTrailingStop, color=xcolor, title="Trailing Stop") // Buy/Sell Signals buySignal = ta.crossover(close, xATRTrailingStop) sellSignal = ta.crossunder(close, xATRTrailingStop) // Strategy if (buySignal) strategy.entry("Long", strategy.long) label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar) if (sellSignal) strategy.entry("Short", strategy.short) label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar) // Alerts alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy') alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')