একাধিক সময়সীমা অভিযোজিত গতিশীল KDJ সূচক কৌশল

MTF-ADK ATR EMA KDJ TSL
সৃষ্টির তারিখ: 2025-04-03 14:27:21 অবশেষে সংশোধন করুন: 2025-04-03 15:13:59
অনুলিপি: 0 ক্লিকের সংখ্যা: 429
2
ফোকাস
319
অনুসারী

একাধিক সময়সীমা অভিযোজিত গতিশীল KDJ সূচক কৌশল একাধিক সময়সীমা অভিযোজিত গতিশীল KDJ সূচক কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূলনীতিতে নিম্নলিখিত মূল প্রযুক্তি অন্তর্ভুক্ত রয়েছেঃ

  1. মাল্টি টাইম ফ্রেম বিশ্লেষণঃ একসাথে ১ মিনিট, ৫ মিনিট এবং ১৫ মিনিটের তিনটি টাইম ফ্রেম ব্যবহার করে
  2. স্বনির্ধারিত সুইং দৈর্ঘ্যের গণনাঃ বাজার ওঠানামা উপর ভিত্তি করে গতিশীল সমন্বয় সূচক প্যারামিটার
  3. গতিশীল ওজন বন্টনঃ বিভিন্ন সময় ফ্রেম জন্য বিভিন্ন ওজন ফ্যাক্টর বরাদ্দ
  4. প্রবণতা বিচার প্রক্রিয়াঃ Smooth AvgTotal এর গড় গণনা করে বাজারের প্রবণতার দিক নির্ধারণ করা
  5. স্মার্ট সিগন্যাল জেনারেশনঃ প্রধান সংকেত এবং প্রত্যাশিত সংকেত একত্রিত করে, সংকেতের নির্ভুলতা বাড়ায়

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

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

কৌশলগত ঝুঁকি

  1. প্যারামিটার ওভারফিট ঝুঁকি
  2. একাধিক টাইম ফ্রেম সংকেত জটিলতা বাড়াতে পারে
  3. চরম বাজার পরিস্থিতিতে সংকেতের নির্ভরযোগ্যতা হ্রাস পেতে পারে
  4. অতিরিক্ত নিশ্চিতকরণ প্রয়োজন

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

  1. মেশিন লার্নিং অ্যালগরিদম প্রবর্তন করে এবং গতিশীলভাবে ওজন সমন্বয় করে
  2. অতিরিক্ত পরিস্রাবণ যোগ করুন
  3. অপ্টিমাইজ করা ক্ষতি প্রতিরোধ ব্যবস্থা
  4. বিভিন্ন প্রজাতির মধ্যে অভিযোজনশীলতা গড়ে তোলা

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ is subject to the Mozilla Public License 2.0 (https://mozilla.org/MPL/2.0/)
// © Lausekopf

//@version=5
strategy("Adaptive KDJ (MTF)", overlay=false)

// Dropdown for the swing length calculation method
method = input.int(1, title="Calculation Method", options=[1, 2, 3], tooltip="1: Volatility Based\n2: Inverse Volatility\n3: Fixed Length")

// Fixed length for method 3
fixedLength = input.int(9, title="Fixed KDJ Length", minval=3, maxval=15)

// Timeframes
tf1 = input.timeframe("1", title="Timeframe 1")
tf2 = input.timeframe("5", title="Timeframe 2")
tf3 = input.timeframe("15", title="Timeframe 3")

// Timeframe weighting
weightOption = input.int(1, title="Timeframe Weighting", options=[1, 2, 3, 4, 5])
weightTF1 = weightOption == 1 ? 0.5 : weightOption == 2 ? 0.4 : weightOption == 3 ? 0.33 : weightOption == 4 ? 0.2 : 0.1
weightTF2 = 0.33
weightTF3 = 1.0 - (weightTF1 + weightTF2)

// EMA smoothing length
smoothingLength = input.int(5, title="EMA Smoothing Length", minval=1, maxval=50)

// Trend calculation period
trendLength = input.int(40, title="Trend Calculation Period", minval=5, maxval=50)

// KDJ function
f_kdj(len, srcHigh, srcLow, srcClose) =>
    roundedLen = int(math.round(len))
    high_max = ta.highest(srcHigh, roundedLen)
    low_min = ta.lowest(srcLow, roundedLen)
    rsv = 100 * (srcClose - low_min) / (high_max - low_min)
    k = ta.sma(rsv, 3)
    d = ta.sma(k, 3)
    j = 3 * k - 2 * d
    [k, d, j]

// Swing length function
f_swingLength(tf) =>
    atrLen = 14
    volatility = request.security(syminfo.tickerid, tf, ta.atr(atrLen) / close)
    var float length = na
    if method == 1
        length := volatility > 0.03 ? 3 : volatility > 0.002 ? 14 : 15
    if method == 2
        length := 18
    if method == 3
        length := fixedLength
    length

// Calculate swing lengths for each timeframe
swingLength1 = f_swingLength(tf1)
swingLength2 = f_swingLength(tf2)
swingLength3 = f_swingLength(tf3)

// Calculate KDJ values
[k1, d1, j1] = f_kdj(swingLength1, request.security(syminfo.tickerid, tf1, high), request.security(syminfo.tickerid, tf1, low), request.security(syminfo.tickerid, tf1, close))
[k2, d2, j2] = f_kdj(swingLength2, request.security(syminfo.tickerid, tf2, high), request.security(syminfo.tickerid, tf2, low), request.security(syminfo.tickerid, tf2, close))
[k3, d3, j3] = f_kdj(swingLength3, request.security(syminfo.tickerid, tf3, high), request.security(syminfo.tickerid, tf3, low), request.security(syminfo.tickerid, tf3, close))

// Weighted averages
avgK = (k1 * weightTF1 + k2 * weightTF2 + k3 * weightTF3)
avgD = (d1 * weightTF1 + d2 * weightTF2 + d3 * weightTF3)
avgJ = (j1 * weightTF1 + j2 * weightTF2 + j3 * weightTF3)
smoothAvgK = ta.ema(avgK, smoothingLength)
smoothAvgD = ta.ema(avgD, smoothingLength)
smoothAvgJ = ta.ema(avgJ, smoothingLength)
smoothAvgTotal = ta.ema((avgK + avgD + avgJ) / 3, smoothingLength)

// Trend determination
trendAvg = ta.sma(smoothAvgTotal, trendLength)
isUptrend = trendAvg > 60
isDowntrend = trendAvg < 40

// Dynamic signal thresholds
buyLevel = isUptrend ? 40 : isDowntrend ? 15 : 25
sellLevel = isUptrend ? 85 : isDowntrend ? 60 : 75

// Buy/Sell signals
buySignal = smoothAvgJ < buyLevel and ta.crossover(smoothAvgK, smoothAvgD)
sellSignal = smoothAvgJ > sellLevel and ta.crossunder(smoothAvgK, smoothAvgD)

// Anticipated signals
anticipateBuy = (smoothAvgK - smoothAvgK[1]) > 0 and (smoothAvgD - smoothAvgD[1]) < 0 and math.abs(smoothAvgK - smoothAvgD) < 5
anticipateSell = (smoothAvgK - smoothAvgK[1]) < 0 and (smoothAvgD - smoothAvgD[1]) > 0 and math.abs(smoothAvgK - smoothAvgD) < 5

// Entry conditions
longEntryCondition = (buySignal or anticipateBuy) and smoothAvgTotal < 22
shortEntryCondition = (sellSignal or anticipateSell) and smoothAvgTotal > 78

// Entry orders
strategy.entry("Long", strategy.long, when=longEntryCondition)
strategy.entry("Short", strategy.short, when=shortEntryCondition)

// Trailing Stop-Loss
atrMultiplierTSL = 2.5
atrValueTSL = ta.atr(12) * atrMultiplierTSL
strategy.exit("TSL Long", from_entry="Long", trail_points=atrValueTSL / syminfo.mintick, stop=open * 0.9972)
strategy.exit("TSL Short", from_entry="Short", trail_points=atrValueTSL / syminfo.mintick, stop=open * 1.0028)

// Plot signals
plotshape(series=buySignal, location=location.bottom, style=shape.triangleup, color=color.green, size=size.small)
plotshape(series=sellSignal, location=location.top, style=shape.triangledown, color=color.red, size=size.small)
plotshape(series=anticipateBuy, location=location.bottom, style=shape.triangleup, color=color.blue, size=size.tiny, offset=-1)
plotshape(series=anticipateSell, location=location.top, style=shape.triangledown, color=color.orange, size=size.tiny, offset=-1)

// Plot KDJ lines
plot(smoothAvgK, color=color.blue, linewidth=1)
plot(smoothAvgD, color=color.orange, linewidth=1)
plot(smoothAvgJ, color=color.purple, linewidth=1)
plot(smoothAvgTotal, color=color.white, linewidth=1)

// Alert for impending signals
alertcondition(anticipateBuy or anticipateSell, title='Impending KDJ Crossover', message='Possible KDJ crossover detected!')
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Lausekopf