সুপারট্রেন্ড কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১০-১৩ ১৭ঃ৩৩ঃ৫৫
ট্যাগঃ

সারসংক্ষেপ

সুপারট্রেন্ড কৌশল হল গড় সত্য পরিসীমা গণনার উপর ভিত্তি করে একটি প্রবণতা অনুসরণকারী কৌশল। এটি স্টপ লস লাইন সেট করতে এটিআর ব্যবহার করে এবং দাম স্টপ লস লাইনগুলি ভেঙেছে কিনা তা বিচার করে প্রবণতা দিক নির্ধারণ করে, এইভাবে ট্রেডিং সংকেত উত্পন্ন করে।

কৌশলগত যুক্তি

কৌশলটি প্রথমে একটি নির্দিষ্ট সময়ের জন্য গড় সত্য পরিসীমা (এটিআর) গণনা করে। তারপর এটি দীর্ঘ স্টপ লস লাইন এবং সংক্ষিপ্ত স্টপ লস লাইন গণনা করতে একটি স্কেলিং ফ্যাক্টর দ্বারা গুণিত এটিআর মান ব্যবহার করে। নির্দিষ্ট গণনা নিম্নরূপঃ

atr = mult * atr(length)

longStop = hl2 - atr 

shortStop = hl2 + atr

যেখানে length হল ATR গণনা করার সময়কাল এবং mult হল ATR এর স্কেলিং ফ্যাক্টর।

স্টপ লস লাইন গণনা করার পর, কৌশলটি ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য পূর্ববর্তী বারটির স্টপ লস লাইন দিয়ে দাম ভেঙে যায় কিনা তা বিচার করে থাকেঃ

dir := dir == -1 and close > shortStopPrev ? 1 :  
         dir == 1 and close < longStopPrev ? -1 : dir

যখন লং স্টপ লস লাইনটি ভেঙে যায়, তখন ট্রেন্ডটি বুলিশ বলে মনে করা হয়। যখন শর্ট স্টপ লস লাইনটি ভেঙে যায়, তখন ট্রেন্ডটি হ্রাসকারী বলে মনে করা হয়।

প্রবণতার দিক পরিবর্তন অনুযায়ী, কিনুন এবং বিক্রয় সংকেত উত্পন্ন হয়ঃ

buySignal = dir == 1 and dir[1] == -1

sellSignal = dir == -1 and dir[1] == 1 

অবশেষে, ক্রয় বা বিক্রয় সংকেত প্রদর্শিত হলে সংশ্লিষ্ট ট্রেডিং পদক্ষেপ নেওয়া হয়।

সুবিধা

  1. স্টপ লস লাইন গণনা করার জন্য ATR ব্যবহার করে কার্যকরভাবে বাজার গোলমাল ফিল্টার করতে পারে এবং আরো নির্ভরযোগ্য প্রবণতা সংকেত ক্যাপচার করতে পারে।

  2. এই কৌশলটিতে কয়েকটি প্যারামিটার রয়েছে যা সহজেই বোঝা যায় এবং পরিচালনা করা যায়। বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নেওয়ার জন্য এটিআর সময়কাল এবং মাল্টিপ্লেকারকে সামঞ্জস্য করা যায়।

  3. ট্রেন্ডের দিক পরিবর্তন নির্ধারণের জন্য স্টপ লস লাইন ব্রেকআউট ব্যবহার করে ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করতে পারে এবং সময়মতো স্টপ লস করতে পারে।

  4. বিভিন্ন ট্রেডিং স্টাইলের জন্য শুধুমাত্র দীর্ঘ বা দ্বি-দিকের ট্রেডিংয়ের জন্য কনফিগারযোগ্য।

  5. এটি যেকোনো সময়সীমার মধ্যে এবং বিভিন্ন ট্রেডিং যন্ত্রের জন্য ব্যবহার করা যেতে পারে।

ঝুঁকি

  1. ব্যাপ্তি বাজারে, এটিআর উচ্চতর টানা হতে পারে যা বৃহত্তর স্টপ লস এবং আরও মিথ্যা সংকেত দেয়।

  2. অপ্টিমাম প্যারামিটার সমন্বয় অনিশ্চিত। এটিআর সময়কাল এবং গুণককে বাজারের অবস্থার উপর ভিত্তি করে অপ্টিমাইজেশান প্রয়োজন।

  3. প্রতিটি ট্রেডিং ইনস্ট্রুমেন্টের জন্য সর্বোত্তম সময়সীমা অজানা এবং এটি পরীক্ষা করা দরকার।

  4. সেরা প্রবেশের সময় অস্পষ্ট এবং কিছু বিলম্ব বিদ্যমান।

  5. যখন প্রবণতা দুর্বল তখন বাজারে না থাকার ঝুঁকি রয়েছে।

  6. স্টপ লস হ্রাসের ঝুঁকি রয়েছে। বৃহত্তর স্টপ লস বিবেচনা করা যেতে পারে।

উন্নতকরণ

  1. অন্যান্য সূচক যেমন এমএসিডি, আরএসআইকে ফিল্টারিংয়ের জন্য অন্তর্ভুক্ত করা যেতে পারে যাতে বাজারে ভুল সংকেত এড়ানো যায়।

  2. মেশিন লার্নিং বা জেনেটিক অ্যালগরিদম ব্যবহার করে সর্বোত্তম প্যারামিটার সেট খুঁজে পাওয়া যায়।

  3. সেরা এটিআর সময়কাল এবং গুণক খুঁজে পেতে প্রতিটি যন্ত্রের জন্য পরামিতি অপ্টিমাইজেশন করা যেতে পারে।

  4. ভলিউম সূচকগুলি ব্যবহার করা যেতে পারে আরও ভাল প্রবেশের সময় নির্ধারণ করতে এবং অকাল প্রবেশ এড়াতে।

  5. বাজারে না থাকলে অবস্থান ধরে রাখার জন্য লকিং কৌশল ব্যবহার করার কথা বিবেচনা করুন।

  6. স্টপ লস প্রস্থটি প্রবণতা শক্তি সূচকগুলির সাথে শিথিল এবং অনুকূলিত করা যেতে পারে।

সিদ্ধান্ত

সুপারট্রেন্ড কৌশলটি মূল্যের ব্রেকআউট ঘটলে প্রবণতা পরিবর্তন সনাক্ত করতে এটিআর থেকে গণনা করা গতিশীল স্টপ লস লাইন ব্যবহার করে। এটি একটি অপেক্ষাকৃত নির্ভরযোগ্য এবং ঝুঁকি-নিয়ন্ত্রিত প্রবণতা অনুসরণকারী সিস্টেম। কৌশলটি ব্যবহার করা সহজ এবং বিভিন্ন যন্ত্রের জন্য প্রযোজ্য, তবে বিভিন্ন বাজারে আরও ভাল পারফরম্যান্সের জন্য পরামিতি এবং নিয়মগুলির অপ্টিমাইজেশনের প্রয়োজন। অন্যান্য প্রযুক্তিগত সূচক এবং কৌশলগুলির সাথে সংমিশ্রণ ট্রেডিং ফলাফলগুলি আরও উন্নত করতে পারে। সাধারণভাবে, সুপারট্রেন্ড বৈজ্ঞানিকভাবে সুস্থ ধারণাগুলির উপর ভিত্তি করে এবং ব্যবসায়ীদের দ্বারা আরও গবেষণা এবং প্রয়োগের মূল্যবান।


/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy("SuperTrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000)

LongOnly = input(title="Long Only ?", type=input.bool, defval=true)
length = input(title="ATR Period", type=input.integer, defval=22)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2019, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=1, title="To Month", minval=1, maxval=12)
toYear = input(defval=2020, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

////////////////////////////////////////////////////////////////////////////////


atr = mult * atr(length)

longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : 
   dir == 1 and close < longStopPrev ? -1 : dir

longColor = color.green
shortColor = color.red


plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title="Long Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0)
plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0)

plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title="Short Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0)
plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0)

if LongOnly
    if buySignal and time_cond
        strategy.entry("Long", strategy.long, comment="Long")
    
    if(sellSignal and time_cond)
        strategy.close("Long")
else
    if buySignal and time_cond
        strategy.entry("Long", strategy.long, comment="Long")
    else
        strategy.cancel("Long")
    
    
    if sellSignal and time_cond
        strategy.entry("Short", strategy.short, comment="Short")
    else
        strategy.cancel("Short")

if not time_cond
    strategy.close_all()


আরো