সুপারট্রেন্ডের উপর ভিত্তি করে দীর্ঘমেয়াদী ট্রেডিং কৌশল

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

সারসংক্ষেপ

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

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

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

  2. বর্তমান প্রবণতা ট্র্যাক করা হয়, আপট্রেন্ডের জন্য 1 এবং ডাউনট্রেন্ডের জন্য -1 সহ। উপরের ব্যান্ডের উপরে দাম ভাঙ্গার প্রবণতা নীচে থেকে উপরে স্যুইচ করে, ক্রয়ের সংকেত উত্পন্ন করে। নীচের ব্যান্ডের নীচে ভাঙ্গার উপরে থেকে নীচে স্যুইচ করে, বিক্রয় সংকেত উত্পন্ন করে।

  3. প্রবণতা ফিল্টার হিসাবে একটি চলমান গড় যোগ করা হয়। উপরের ব্যান্ডের উপরে ভাঙ্গার সময় দাম এমএ এর উপরে থাকলে কেবল কিনুন। নিম্ন ব্যান্ডের নীচে ভাঙ্গার সময় দাম এমএ এর নীচে থাকলে কেবল বিক্রয় করুন। এটি ভুয়া ব্রেকআউট এড়ায়।

  4. ভিজ্যুয়াল সাহায্যকারীরা সিদ্ধান্ত গ্রহণে সহায়তা করার জন্য প্রবণতা, সংকেত ইত্যাদি তুলে ধরে।

সুবিধা বিশ্লেষণ

এই কৌশলটির সুবিধাঃ

  1. সুপারট্রেন্ড গতিশীলভাবে দামের পরিবর্তনগুলি ট্র্যাক করে এবং প্রবণতা পরিবর্তনগুলি সময়মতো প্রতিফলিত করে।

  2. এটিআর স্টপ লস বাজার অস্থিরতার উপর ভিত্তি করে স্টপগুলি সামঞ্জস্য করে, লাভকে লক করতে সহায়তা করে।

  3. এমএ ফিল্টার বিভিন্ন বাজারে গোলমাল থেকে মিথ্যা সংকেত দূর করে।

  4. ভিজ্যুয়াল ডিজাইন স্বজ্ঞাতভাবে কৌশল যান্ত্রিক এবং বাজার পরিস্থিতি উপস্থাপন করে।

  5. শুধুমাত্র ট্রেডিং প্রবণতা বিপরীততা দীর্ঘমেয়াদী হোল্ডিং জন্য উপযুক্ত করে তোলে।

ঝুঁকি বিশ্লেষণ

প্রধান ঝুঁকিগুলি হলঃ

  1. সুপারট্রেন্ড প্যারামিটারগুলির প্রতি সংবেদনশীল। ঘন ঘন ব্যান্ড সমন্বয় অতিরিক্ত ট্রেডিংয়ের দিকে পরিচালিত করতে পারে।

  2. অস্থির বাজারে, স্টপগুলি প্রায়শই সক্রিয় হতে পারে।

  3. ট্রেডিং খরচ বিবেচনা করা হয় না। ছোট অ্যাকাউন্টের উপর বেশি প্রভাব পড়ে।

  4. স্টপ লস না থাকলে উচ্চ ড্রাউনডাউন ঝুঁকি থাকে।

  5. ট্রেন্ড ফিল্টার কিছু সুযোগ মিস করতে পারে।

নিম্নলিখিত উপায়ে ঝুঁকি কমাতে পারেঃ

  1. কম ব্যান্ড রেজল্যুশন ফ্রিকোয়েন্সিতে ATR পরামিতি অপ্টিমাইজ করা।

  2. উচ্চ ফ্রিকোয়েন্সির ছোটখাটো দোলের দ্বারা থামানো এড়ানোর জন্য সমতুল্য বার ফিল্টারিং যোগ করা।

  3. লাভ রক্ষার জন্য স্টপ লস এবং লাভ গ্রহণের ব্যবস্থা করা।

  4. চলমান গড় সময়ের সমীকরণ ভারসাম্য ফিল্টারিং প্রভাব।

  5. ট্রেডিং খরচ কমিয়ে আনার জন্য অর্থ ব্যবস্থাপনা অপ্টিমাইজ করা।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিকগুলিতে উন্নত করা যেতে পারেঃ

  1. বিভিন্ন মূল্য সূত্র যেমন বন্ধ, উচ্চ ইত্যাদি পরীক্ষা করুন।

  2. চ্যান্ডেলিয়ার এক্সট্যাশনের মতো অন্যান্য গতিশীল স্টপ লস সূচক চেষ্টা করুন।

  3. মূলধন ব্যবহারের অপ্টিমাইজেশান করার জন্য পজিশন সাইজিং যোগ করুন।

  4. এন্ট্রিগুলিকে পরিমার্জন করার জন্য অস্থিরতা সূচক অন্তর্ভুক্ত করুন।

  5. ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস এবং লভ্যাংশ গ্রহণ করুন।

  6. বিভিন্ন বাজারের জন্য পরামিতি সামঞ্জস্য করুন।

  7. প্যারামিটার অপ্টিমাইজেশনের জন্য মেশিন লার্নিং অন্বেষণ করুন।

  8. ফিল্টারের নির্ভুলতা উন্নত করতে অন্যান্য সূচক একত্রিত করুন।

সিদ্ধান্ত

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


/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())

shortCondition = sellSignal
if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short, when = window())

buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)


আরো