সুপারট্রেন্ড দ্বৈত দিকনির্দেশক কৌশল

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

সারসংক্ষেপ

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

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

  1. এটিআর সূচক গণনা করুন, যা গড় মূল্যের অস্থিরতার পরিসীমাকে উপস্থাপন করে।
  2. উপরের এবং নীচের ব্যান্ড গণনা করা হয় ATR মানকে একটি ফ্যাক্টর দ্বারা গুণিত করে।
  3. ব্যান্ডের সাথে দামের সম্পর্কের উপর ভিত্তি করে প্রবণতা দিক নির্ধারণ করুন।
    • যখন দাম উপরের ব্যান্ডের উপরে থাকে, তখন এটি একটি আপট্রেন্ড।
    • যখন দাম নিম্ন স্তরের নীচে থাকে, তখন এটি একটি ডাউনট্রেন্ড।
  4. ট্রেন্ডের দিক পরিবর্তন হলে ক্রয় এবং বিক্রয় সংকেত তৈরি করুন।
    • যখন ট্রেন্ড ডাউনট্রেন্ড থেকে আপট্রেন্ডে পরিবর্তিত হয় তখন উপরের ব্যান্ডের কাছাকাছি একটি ক্রয় সংকেত তৈরি হয়।
    • যখন প্রবণতা আপট্রেন্ড থেকে ডাউনট্রেন্ডে পরিবর্তিত হয় তখন নীচের ব্যান্ডের কাছাকাছি একটি বিক্রয় সংকেত উত্পন্ন হয়।
  5. উপরের/নিচের ব্যান্ড, ট্রেন্ডের দিক এবং ট্রেড সিগন্যালগুলি ভিজ্যুয়ালাইজ করুন।

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

  • প্রবণতা নির্ধারণের জন্য ATR ব্যবহার করে প্যারামিটারগুলি সামঞ্জস্য করে বাজারের অস্থিরতার সাথে ব্যান্ডগুলিকে মানিয়ে নিতে পারে।
  • ব্যান্ডের ব্রেকআউট দ্বারা প্রবণতা বিপরীত সময় ধরা হয়।
  • প্রবণতা দিক অনুসারে সংকেত ফিল্টার করে ভুয়া ব্রেকআউট এড়াতে।
  • ব্যান্ড এবং সংকেতগুলির স্পষ্ট দৃশ্যমানতা।

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

  • অনুপযুক্ত এটিআর সময়কাল দাম থেকে ব্যান্ডগুলিকে বিচ্ছিন্ন করতে পারে।
  • খুব বড়/ছোট মাল্টিপ্লিফায়ার আরও মিথ্যা সংকেত এবং বিলম্বিত সংকেত সৃষ্টি করে।
  • ভুল রিভার্সাল টাইমিং রিভার্সাল ট্রেডিং থেকে ক্ষতির দিকে পরিচালিত করে।
  • তার অন্য ফিল্টার দরকার, যাতে তাকে চড় মারতে না হয়।

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

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

সংক্ষিপ্তসার

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


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

TradeId = "RVG"

InitCapital = 1000
InitPosition = 1000
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true

//@version=4
// strategy("Supertrend RG", overlay = true,process_orders_on_close=true,commission_type=strategy.commission.percent,commission_value=InitCommission,
//  currency=currency.USD,initial_capital=InitCapital,default_qty_type=strategy.cash, default_qty_value=InitPosition, calc_on_order_fills=CalcOnorderFills, calc_on_every_tick=CalcOnTick,pyramiding=InitPyramidMax)

//
////////////////////////////////////////////////////////////////////////////////
// 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=2018, 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=2100, 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



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=true)
highlighting = input(title="Highlighter 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
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
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=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
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")


strategy.entry(TradeId + " Long", true, when=buySignal[1] and time_cond)
strategy.entry(TradeId + " Short", false, when=sellSignal[1] and time_cond)   




আরো