
সুপারট্রেন্ড ট্রেডিং স্ট্র্যাটেজি (Supertrend Trading Strategy) একটি ট্রেন্ড ট্র্যাকিং কৌশল যা গড় বাস্তব পরিসীমা (ATR) এবং চলমান গড় (MA) এর উপর ভিত্তি করে। এটি ট্রেন্ড অনুসরণ এবং বিরতি ট্রেডিংয়ের সুবিধাগুলিকে একত্রিত করে, যা মধ্যমেয়াদী ট্রেন্ডের দিকনির্দেশনা সনাক্ত করতে এবং ট্রেন্ড পরিবর্তনের উপর ভিত্তি করে ট্রেডিং সংকেত তৈরি করে।
এই কৌশলটির মূল ধারণা হল যখন দাম সুপারট্রেন্ডের চ্যানেলটি ভেঙে দেয়, তখন ট্রেন্ডটি বিপরীত হয়, যার ফলে ক্রয় বা বিক্রয় করা হয়। এটি একই সাথে লাভের জন্য লকিং এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস এবং স্টপ স্টপ লেভেল সেট করে।
সুপারট্রেন্ড কৌশল গণনা করার প্রক্রিয়াটি নিম্নলিখিত ধাপে বিভক্তঃ
এই কৌশলটির সুবিধা হল যে এটি একই সময়ে প্রবণতা অনুসরণ এবং প্রবণতা বিপরীত ট্রেডিং পদ্ধতির সমন্বয় করে। এটি বড় প্রবণতার দিক নির্ধারণ করতে পারে এবং সময়মত বিপরীত সুযোগগুলি ধরতে পারে। এছাড়াও, এটি ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস স্টপ ব্যবস্থাও স্থাপন করে।
সুপারট্রেন্ডিং কৌশলগুলির নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
১. মধ্যমেয়াদি ট্রেন্ড ট্র্যাকিং
সুপার ট্রেন্ডিং চ্যানেলটি এটিআর গণনার উপর ভিত্তি করে তৈরি করা হয়েছে, যা মধ্যবর্তী সময়ের মূল্যের অস্থিরতার পরিধিকে কার্যকরভাবে প্রতিফলিত করে। এটি সাধারণ মুভিং এভারেজের চেয়ে মধ্যবর্তী সময়ের প্রবণতাকে আরও ভালভাবে অনুসরণ করে।
২. সময়মতো ট্রেন্ড রিভার্সন ধরা
যখন দাম চ্যানেল ভেঙে যায়, তখন দ্রুত ট্রেডিং সিগন্যাল পাঠানো হয়, যা বড় প্রবণতার বিপরীত দিকে সময়মতো ধরা যায়। এটি যথাযথভাবে অবস্থানের সমন্বয় এবং ওভারটাইম হোল্ডিং হ্রাস করার গ্যারান্টি দেয়।
৩. ক্ষতি প্রতিরোধক ব্যবস্থা
এই কৌশলটি একই সময়ে স্টপ লস এবং স্টপ স্টপ সেট করে, যা স্বয়ংক্রিয়ভাবে স্টপ লস ক্যাপগুলি বন্ধ করে দেয়। এটি প্রবণতা পরিস্থিতির উপর নির্ভর করে, যা ব্যাপকভাবে ক্ষতির ঝুঁকি হ্রাস করে।
৪. সহজ পদ্ধতি
এই কৌশলটি মূলত গড়রেখা এবং এটিআর সূচক ব্যবহার করে, যা সহজ এবং সহজেই উপলব্ধ। এটি রিয়েল-ডিস্ক অপারেশনগুলিকে কমিয়ে দেয়।
৫। অর্থের ব্যবহারের দক্ষতা
সুপার ট্রেন্ড কৌশলগুলি মধ্যমেয়াদী প্রবণতা অনুসরণ করে এবং একক স্লাইড পয়েন্ট নিয়ন্ত্রণ করে, সামগ্রিক তহবিলের ব্যবহারের দক্ষতা বেশি।
সুপারট্রেন্ডিং কৌশলগুলির কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
১. ঝড়ের উচ্চতর সুযোগের খরচ
সুপার ট্রেন্ডস কৌশলগুলি মধ্য ও দীর্ঘমেয়াদী প্রবণতা অনুসরণ করে, এবং বাজারের ঝাঁকুনির মধ্যে, ব্যয় বেশি হয় এবং কিছু ডিকোয়ারি সুযোগ মিস হতে পারে।
২. প্যারামিটার অপ্টিমাইজেশনের প্রভাব
এটিআর চক্র এবং এটিআর গুণকের পছন্দটি ট্রেডিং কৌশলটির কার্যকারিতার উপর একটি বড় প্রভাব ফেলে। যদি প্যারামিটারটি ভুলভাবে সেট করা হয় তবে এটি ট্রেডিং সিগন্যালের কার্যকারিতা হ্রাস করে।
৩. কিছু পিছিয়ে পড়া
সুপার ট্রেন্ড চ্যানেলের হিসাবের ক্ষেত্রে কিছু ধরনের বিলম্ব দেখা দিতে পারে, যার ফলে সময়মত সংকেত পাওয়া যায় না। এটিই এই কৌশলটির প্রধান সমস্যা।
৪। কঠোর ক্ষতি নিয়ন্ত্রণ প্রয়োজন
যদি স্টপ পজিশনটি খুব বড় হয় বা বায়ু নিয়ন্ত্রণের এড়ানো অসম্পূর্ণ হয় তবে চরম পরিস্থিতিতে এটি আরও বেশি ক্ষতির কারণ হতে পারে। তাই স্থিতিশীল লাভের জন্য স্টপ পজিশন কৌশলটি কঠোরভাবে প্রয়োগ করতে হবে।
সুপারট্রেন্ডস কৌশলটি আরও অপ্টিমাইজেশনের জন্য জায়গা রয়েছে, যার মধ্যে রয়েছেঃ
১. একাধিক ATR চক্রের সমন্বয়
উদাহরণস্বরূপ, 10 এবং 20 দিনের মতো একাধিক এটিআর চক্রকে একত্রিত করে একটি সমন্বিত এটিআর সূচক তৈরি করা যেতে পারে। এটি সূচকের সংবেদনশীলতা বাড়িয়ে তুলতে পারে এবং পিছিয়ে পড়া সমস্যার সমাধান করতে পারে।
২. স্টপ লস স্ট্র্যাটেজি মডিউল যুক্ত করা হয়েছে
তদুপরি, ট্রিপল স্টপ, ওসিলেশন স্টপ এবং ক্রমিক স্টপ এর মতো কৌশলগত মডিউল যুক্ত করে স্টপ কন্ট্রোলকে আরও শক্তিশালী করা যায়, যার ফলে ক্ষতির ঝুঁকি হ্রাস করা যায়।
৩. প্যারামিটার সেটিং অপ্টিমাইজ করুন
এটিআর চক্র, এটিআর গুণক ইত্যাদির প্যারামিটার সেটিংগুলি অনুকূলিতকরণ করে, সর্বোত্তম প্যারামিটার সমন্বয় সন্ধান করে, কৌশলগত উপার্জনকে আরও বাড়িয়ে তুলতে পারে। এছাড়াও, প্যারামিটারগুলি গতিশীলভাবে অনুকূলিতকরণ করা যেতে পারে, বিভিন্ন জাত এবং বাজারের পর্যায়ে উপযুক্ত মান নির্বাচন করা যেতে পারে।
৪। মেশিন লার্নিং মডেল ইন্টিগ্রেশন
অবশেষে, মেশিন লার্নিং মডেলগুলিকে একত্রিত করার চেষ্টা করা যেতে পারে, যা প্রবণতা বিচার এবং সংকেত উত্পন্ন স্বয়ংক্রিয়করণের জন্য। এটি বিষয়গত কারণগুলির হস্তক্ষেপকে হ্রাস করতে পারে এবং কৌশলগত সিস্টেমের স্থায়িত্বকে আরও উন্নত করতে পারে।
সুপার ট্রেন্ড ট্রেডিং কৌশলটি মধ্যবর্তী প্রবণতা নির্ধারণের জন্য গড় লাইন সূচক এবং এটিআর সূচকগুলির সমন্বিত ব্যবহার করে এবং প্রবণতা বিপরীত হওয়ার সময় একটি ট্রেডিং সংকেত উত্পন্ন করে, স্বয়ংক্রিয় স্টপ লস অর্জন করে। এই কৌশলটি বড় প্রবণতা ক্যাপচার করার পাশাপাশি কিছু বিপরীত সুযোগকে সময়মতো দখল করতে পারে। এর সুবিধা মূলত মধ্যবর্তী প্রবণতা ট্র্যাকিং, প্রবণতা বিপরীত সনাক্তকরণ এবং স্টপ লস নিয়ন্ত্রণের তিনটি দিকের মধ্যে প্রকাশিত হয়।
তবে এই কৌশলটির কিছু ত্রুটিও রয়েছে, মূলত অস্থিরতার পরিস্থিতি বোঝার অভাব এবং বিলম্বিত সমস্যা। এটির জন্য একাধিক দিক থেকে অপ্টিমাইজেশনের প্রয়োজন যেমন এটিআর চক্রের সমন্বয়, ক্ষতি প্রতিরোধ মডিউল, প্যারামিটার অপ্টিমাইজেশান এবং মেশিন লার্নিং প্রবর্তনের মতো পদ্ধতি। এটি অবশ্যই সুপার ট্রেন্ড কৌশলটির স্থিতিশীলতা এবং সোনার হারকে আরও বাড়িয়ে তুলতে পারে।
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true)
Factor=input(3, minval=1,maxval = 100)
Pd=input(7, minval=1,maxval = 100)
//Calculating ATR
atrLength = input(title="ATR Length:", defval=14, minval=1)
Stop_Loss_Factor = input(1.5, minval=0,step=0.01)
factor_profit = input(1.0, minval=0,step=0.01)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2009)
ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2039, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculate ATR
atrValue=atr(atrLength)
decimals = abs(log(syminfo.mintick) / log(10))
Atr = atrValue
if(decimals == 5)
Atr := atrValue * 10000
if(decimals == 4)
Atr := atrValue * 1000
if(decimals == 3)
Atr := atrValue * 100
if(decimals == 2)
Atr := atrValue * 10
//VJ2 Supertrend
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp = 0.0
TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown = 0.0
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend = 0.0
Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = 0.0
Tsl := Trend==1? TrendUp: TrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
//plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend")
plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
//Strategy
Trend_buy = Trend == 1
Trend_buy_prev = Trend[1] == -1
algo_buy_pre = Trend_buy and Trend_buy_prev
algo_buy = algo_buy_pre == 1 ? 1 : na
Trend_sell= Trend == -1
Trend_sell_prev = Trend[1] == 1
algo_sell_pre = Trend_sell and Trend_sell_prev
algo_sell = algo_sell_pre == 1 ? 1:na
strategy.entry("Long1", strategy.long, when= window() and algo_buy==1)
strategy.entry("Short1", strategy.short, when=window() and algo_sell==1)
bought = strategy.position_size > strategy.position_size
sold = strategy.position_size < strategy.position_size
longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0)
shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0)
longProfit = factor_profit * longStop
shortProfit = factor_profit * shortStop
if(decimals == 5)
longStop := longStop *100000
longProfit := longProfit *100000
if(decimals == 4)
longStop := longStop * 10000
longProfit := longProfit * 10000
if(decimals == 3)
longStop := longStop * 1000
longProfit := longProfit * 1000
if(decimals == 2)
longStop := longStop * 100
longProfit := longProfit *100
if(decimals == 5)
shortStop := shortStop * 100000
shortProfit := shortProfit * 100000
if(decimals == 4)
shortStop := shortStop * 10000
shortProfit := shortProfit * 10000
if(decimals == 3)
shortStop := shortStop * 1000
shortProfit := shortProfit * 1000
if(decimals == 2)
shortStop := shortStop * 100
shortProfit := shortProfit * 100
strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit)
strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)