এই কৌশলটি স্টপ লস ট্র্যাকিংয়ের ভিত্তি হিসাবে গড় সত্যিকারের তরঙ্গদৈর্ঘ্য (এটিআর) ব্যবহার করে, স্টপ লস পজিশনকে গতিশীলভাবে সামঞ্জস্য করে ট্রেন্ড ট্র্যাকিংয়ের উদ্দেশ্য অর্জনের জন্য। যখন দাম অনুকূল দিকে চলে যায়, তখন স্টপ লস পজিশনও তার সাথে সামঞ্জস্য হয়, যার ফলে অর্জিত মুনাফা লক হয়ে যায়। যখন দাম অনুকূল দিকে চলে যায়, তখন স্টপ লস পজিশনটি অপরিবর্তিত থাকে এবং যখন দাম স্টপ লস মূল্যকে স্পর্শ করে, তখন পজিশন স্টপ লস হয়। এই কৌশলটির মূল চাবিকাঠি হ’ল স্টপ পজিশনের গতিশীল সামঞ্জস্য, যা ইতিমধ্যে অর্জিত মুনাফা রক্ষা করতে পারে এবং প্রবণতা অব্যাহত রাখার সাথে সাথে মুনাফা বাড়িয়ে তুলতে পারে।
এটিআর ট্র্যাকিং স্টপ কৌশলটি দামের ওঠানামাটির মাত্রার উপর নির্ভর করে গতিশীলভাবে স্টপ পজিশনের সমন্বয় করতে পারে, যা প্রবণতার ক্ষেত্রে ভাল প্রভাব ফেলতে পারে। তবে, এই কৌশলটি ঝড়ের বাজার, খুব ঘন ঘন স্টপ এবং উড়ন্ত ফাঁক এড়াতে পারে না এমন ঝুঁকিও রয়েছে। উপরোক্ত ত্রুটিগুলির জন্য, কৌশলটি প্রবণতা, স্টপ কৌশল, সর্বাধিক স্টপ সীমাবদ্ধতা ইত্যাদির দিক থেকে অপ্টিমাইজ করা এবং উন্নত করা যেতে পারে। এই সমন্বয়গুলির মাধ্যমে কৌশলটির অভিযোজনযোগ্যতা এবং লাভজনকতা বাড়ানোর সম্ভাবনা রয়েছে।
/*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')