ADX ডায়নামিক ইন্ডিকেটরের সাথে মিলিত মুভিং এভারেজ ক্রসওভার খোলা এবং বন্ধ করার পরিমাণগত ট্রেডিং কৌশল

MA ADX SMMA EMA DEMA TEMA WMA VWMA HullMA LSMA ALMA SSMA TMA ATR
সৃষ্টির তারিখ: 2025-02-18 13:35:54 অবশেষে সংশোধন করুন: 2025-02-18 13:35:54
অনুলিপি: 1 ক্লিকের সংখ্যা: 445
1
ফোকাস
1617
অনুসারী

ADX ডায়নামিক ইন্ডিকেটরের সাথে মিলিত মুভিং এভারেজ ক্রসওভার খোলা এবং বন্ধ করার পরিমাণগত ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

কৌশলটির কেন্দ্রীয় যুক্তি হ’ল ওপেনিং এবং ক্লোজিং দামের চলমান গড় গণনা করে, যখন ক্লোজিং দামের গড়টি ওপেনিং দামের গড়কে অতিক্রম করে এবং ADX মানটি সেট থ্রেশহোল্ডের চেয়ে বেশি হয়, তখন একাধিক সংকেত উত্পন্ন হয়; যখন ক্লোজিং দামের গড়টি ওপেনিং দামের গড়কে অতিক্রম করে এবং ADX মানটি সেট থ্রেশহোল্ডের চেয়ে বেশি হয়, তখন একটি শূন্য সংকেত উত্পন্ন হয়। কৌশলটি একাধিক চলমান গড় গণনা পদ্ধতি সমর্থন করে, যার মধ্যে রয়েছে সহজ চলমান গড় ((এসএমএ), সূচকীয় চলমান গড় ((ইএমএ), দ্বৈত সূচকীয় চলমান গড় ((ইএমএডি)) ইত্যাদি, বিভিন্ন বাজারের বৈশিষ্ট্য অনুসারে সবচেয়ে উপযুক্ত গড়ের ধরণ নির্বাচন করা যায়।

কৌশলগত সুবিধা

  1. নমনীয়তাঃ একাধিক চলমান গড় প্রকারের সমর্থন, বিভিন্ন বাজারের পরিস্থিতির উপর ভিত্তি করে সর্বোত্তম গড় গণনা পদ্ধতি নির্বাচন করা যায়
  2. ট্রেন্ড নিশ্চিতকরণঃ এডিএক্স সূচক ফিল্টারিংয়ের মাধ্যমে বাজারের অস্থিরতার সময় মিথ্যা সংকেতগুলি কার্যকরভাবে হ্রাস করুন
  3. উন্নত ঝুঁকি নিয়ন্ত্রণঃ প্রতিটি লেনদেনের ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করার জন্য স্টপ লস এবং স্টপস্টপ ফাংশন অন্তর্ভুক্ত
  4. উচ্চ কাস্টমাইজযোগ্যতাঃ একাধিক প্যারামিটার ইন্টারফেস প্রদান করে, যার মধ্যে রয়েছে গড় লাইন সময়কাল, ADX থ্রেশহোল্ড, ট্রেডিং দিক ইত্যাদি, কৌশল অপ্টিমাইজ করার জন্য
  5. মাল্টি টাইম সাইকেল সাপোর্টঃ বিভিন্ন টাইম সাইকেলে কাজ করা যায়, বিভিন্ন ট্রেডিং স্টাইলের জন্য উপযুক্ত

কৌশলগত ঝুঁকি

  1. গড় লাইন পিছিয়ে পড়াঃ মুভিং গড় লাইনটি মূলত একটি পিছিয়ে পড়া সূচক, যা দ্রুত ওঠানামা বাজারে পিছিয়ে পড়া সংকেত তৈরি করতে পারে
  2. ভুয়া ব্রেকিংয়ের ঝুঁকিঃ এডিএক্স ফিল্টার থাকা সত্ত্বেও বাজারের অস্থিরতার সময় মিডললাইন ভুয়া ব্রেকিংয়ের সম্ভাবনা রয়েছে
  3. প্যারামিটার সংবেদনশীলতাঃ প্যারামিটার সেটিংসের প্রতি কৌশলগত প্রভাবগুলি সংবেদনশীল, বিভিন্ন বাজারের পরিস্থিতিতে যথাযথভাবে সামঞ্জস্য করা প্রয়োজন
  4. বাজার অভিযোজনযোগ্যতাঃ প্রবণতা বিশিষ্ট বাজারগুলিতে ভাল পারফরম্যান্স, তবে ঝড়ের বাজারে ঘন ঘন লেনদেন হতে পারে
  5. গণনা জটিলতাঃ একাধিক গড়-লাইন টাইপ গণনা সিস্টেমের বোঝা বাড়িয়ে তুলতে পারে এবং অপারেশনাল দক্ষতার দিকে মনোযোগ দেওয়া দরকার

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. ট্রেডিং ভলিউম সূচকগুলি প্রবর্তন করুন: ট্রেন্ডের বৈধতা নিশ্চিত করতে আপনি ট্রেডিং ভলিউমের পরিবর্তনগুলি একত্রিত করতে পারেন
  2. ADX প্যারামিটার অপ্টিমাইজ করুনঃ ADX থ্রেশহোল্ডগুলিকে বিভিন্ন বাজার চক্রের গতিশীলতার সাথে সামঞ্জস্য করুন
  3. প্রবণতা নিশ্চিতকরণ সূচক যোগ করুনঃ অন্যান্য প্রবণতা সূচক যুক্ত করার কথা বিবেচনা করা যেতে পারে যাতে সিগন্যালের নির্ভরযোগ্যতা বৃদ্ধি পায়
  4. ক্ষতি বন্ধ করার প্রক্রিয়া উন্নত করুনঃ ট্র্যাকিং ক্ষতি বা স্বতঃস্ফূর্ত ক্ষতি বন্ধের প্রবর্তন করুন
  5. লেনদেনের সময় অপ্টিমাইজ করুনঃ বাজারের অস্থিরতা এবং তরলতার কারণগুলি বিবেচনা করে সর্বোত্তম লেনদেনের সময় নির্বাচন করুন

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio

//@version=6
strategy("Open Close Cross Strategy R5.1", shorttitle="OCC Strategy R5.1", overlay=true,
     pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false)

// === INPUTS ===
useRes      = input.bool(true, title="Use Alternate Resolution?")
intRes      = input.int(3, title="Multiplier for Alternate Resolution", minval=1)
stratRes    = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes) + "M" :
              timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes) + "W" :
              timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes) + "D" :
              timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes) : "60"

basisType   = input.string("SMMA", title="MA Type:", options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "HullMA", "LSMA", "ALMA", "SSMA", "TMA"])
basisLen    = input.int(8, title="MA Period", minval=1)
offsetSigma = input.int(6, title="Offset for LSMA / Sigma for ALMA", minval=0)
offsetALMA  = input.float(0.85, title="Offset for ALMA", minval=0, step=0.01)
scolor      = input.bool(false, title="Show Colored Bars to Indicate Trend?")
delayOffset = input.int(0, title="Delay Open/Close MA (Forces Non-Repainting)", minval=0, step=1)
tradeType   = input.string("BOTH", title="What trades should be taken:", options=["LONG", "SHORT", "BOTH", "NONE"])

// === BASE FUNCTIONS ===
variant(type, src, len, offSig, offALMA) =>
    if type == "EMA"
        ta.ema(src, len)
    else if type == "DEMA"
        ta.ema(ta.ema(src, len), len) * 2 - ta.ema(ta.ema(ta.ema(src, len), len), len)
    else if type == "TEMA"
        3 * (ta.ema(src, len) - ta.ema(ta.ema(src, len), len)) + ta.ema(ta.ema(ta.ema(src, len), len), len)
    else if type == "WMA"
        ta.wma(src, len)
    else if type == "VWMA"
        ta.vwma(src, len)
    else if type == "SMMA"
        ta.sma(src, len)
    else if type == "HullMA"
        ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
    else if type == "LSMA"
        ta.linreg(src, len, offSig)
    else if type == "ALMA"
        ta.alma(src, len, offALMA, offSig)
    else if type == "TMA"
        ta.sma(ta.sma(src, len), len)
    else
        ta.sma(src, len)

// Security wrapper
reso(exp, use, res) => use ? request.security(syminfo.tickerid, res, exp, lookahead=barmerge.lookahead_on) : exp

// === SERIES SETUP ===
closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
openSeries  = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA)

// Alternate resolution series
closeSeriesAlt = reso(closeSeries, useRes, stratRes)
openSeriesAlt  = reso(openSeries, useRes, stratRes)

// Trend Colors
trendColour = closeSeriesAlt > openSeriesAlt ? color.green : color.red
bcolour     = closeSeries > openSeriesAlt ? color.lime : color.red
barcolor(scolor ? bcolour : na, title="Bar Colours")

closeP = plot(closeSeriesAlt, title="Close Series", color=trendColour, linewidth=2, style=plot.style_line)
openP  = plot(openSeriesAlt, title="Open Series", color=trendColour, linewidth=2, style=plot.style_line)
fill(closeP, openP, color=trendColour)
// === ADX FILTER ===
// ADX Calculation
// Input parameters
adxLength = input.int(14, title="ADX Length", minval=1)
adxfilter = input.int(13, title="ADX filter", minval=1)
// Calculate +DM and -DM (Directional Movement)
plusDM = math.max(high - high[1], 0)
minusDM = math.max(low[1] - low, 0)

// Remove cases where both are positive
plusDM := plusDM > minusDM ? plusDM : 0
minusDM := minusDM > plusDM ? minusDM : 0

// Smooth the directional movement using RMA
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)

// Calculate True Range and smooth it
tr = ta.atr(adxLength)
smoothedTR = ta.rma(tr, adxLength)

// Compute +DI and -DI
plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

// Compute DX (Directional Index)
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100

// Compute ADX by smoothing DX
adx = ta.rma(dx, adxLength)




// === UPDATED TRADE CONDITIONS ===
xlong     = ta.crossover(closeSeriesAlt, openSeriesAlt) and adx > adxfilter
xshort    = ta.crossunder(closeSeriesAlt, openSeriesAlt) and adx > adxfilter
longCond  = xlong
shortCond = xshort


// === STRATEGY ===
slPoints  = input.float(0, title="Initial Stop Loss Points", minval=0)
tpPoints  = input.float(0, title="Initial Target Profit Points", minval=0)
ebar      = input.int(10000, title="Number of Bars for Back Testing", minval=0)

tdays     = (timenow - time) / 60000.0

tdays     := timeframe.ismonthly ? tdays / 1440.0 / 5.0 / 4.3 / timeframe.multiplier :
             timeframe.isweekly ? tdays / 1440.0 / 5.0 / timeframe.multiplier :
             timeframe.isdaily ? tdays / 1440.0 / timeframe.multiplier :
             tdays / timeframe.multiplier

TP = tpPoints > 0 ? tpPoints : na
SL = slPoints > 0 ? slPoints : na

if (ebar == 0 or tdays <= ebar)
    if longCond and tradeType != "SHORT"
        strategy.entry("long", strategy.long)
    if shortCond and tradeType != "LONG"
        strategy.entry("short", strategy.short)
    if shortCond and tradeType == "LONG"
        strategy.close("long")
    if longCond and tradeType == "SHORT"
        strategy.close("short")
    strategy.exit("XL", from_entry="long", profit=TP, loss=SL)
    strategy.exit("XS", from_entry="short", profit=TP, loss=SL)

// === END ===