মাল্টি-টাইমফ্রেম অ্যাডাপ্টিভ ট্র্যাকিং স্টপ লস স্ট্র্যাটেজি

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

img

সারসংক্ষেপ

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

নীতি

কৌশলটি চলমান গড়, এটিআর, কেডি এবং বৈচিত্র্যের হার হিসাবে একাধিক সূচককে একত্রিত করে বর্তমান সময়সীমার সামগ্রিক প্রবণতার দিক নির্ধারণ করে। বিশেষত এটি নিম্নলিখিত উপ-সাইনালগুলির যৌগিক মান গণনা করেঃ

  1. গড় গতির দিক নির্দেশক সংকেত
  2. KD সূচক overboughtoversold সংকেত
  3. মূল্য-ভলিউম বৈষম্য সংকেত
  4. চ্যানেলের মাধ্যমে সিগন্যাল
  5. মাল্টি-টাইমফ্রেম সমন্বিত ট্রায়াল-এন্ড-এয়ারর সিগন্যাল
  6. % R সংকেত
  7. চলমান গড় রিগ্রেশন সংকেত
  8. এটিআর চ্যানেলের সূচক সংকেত

প্রতিটি উপ-সিগন্যাল মসৃণ করা হয় এবং ক্রয় / বিক্রয় বিচার করার জন্য বিভিন্ন থ্রেশহোল্ড সেট করা হয়। তারপরে বর্তমান সময়সীমার সামগ্রিক সংকেত গণনা করতে উপ-সিগন্যালগুলি ওজন করুন। যদি সংকেতটি 0 এর চেয়ে বড় হয় তবে এটি একটি আপট্রেন্ড হিসাবে বিচার করা হয়। যদি সংকেতটি 0 এর চেয়ে কম হয় তবে এটি একটি ডাউনট্রেন্ড হিসাবে বিচার করা হয়।

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

সুবিধা

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

সর্বাধিক গুরুত্বপূর্ণ, কৌশলটি সিস্টেমিক ঝুঁকিগুলিকে হেজ করার জন্য ডায়নামিকভাবে স্টপ লস লাইন সামঞ্জস্য করতে পারে এবং প্রকৃত প্রবণতা অনুযায়ী ঝুঁকি নিয়ন্ত্রণের স্তর সামঞ্জস্য করতে পারে। এটি তার সবচেয়ে বড় সুবিধা।

ঝুঁকি

প্রবণতা সংকেত বিচার মান সরাসরি স্টপ লস লাইন সেটিং প্রভাবিত করে। যদি বিচার ভুল হয়, এটি স্টপ লস স্তর খুব আলগা বা খুব কঠোর সেট করতে পারে। উপরন্তু, স্টপ লস লাইন সম্পূর্ণরূপে বাজার পরিবর্তন ঝুঁকি এড়াতে পারবেন না।

কৌশলটি লাভের স্তর এবং স্টপ লস দূরত্বের ভারসাম্য বজায় রাখতে হবে। যদি স্টপ লস দূরত্ব খুব কাছাকাছি হয় তবে এটি স্টপ লসের অত্যধিক ঘন ঘন ঘটতে পারে; যদি স্টপ লস দূরত্ব খুব দূরে থাকে তবে এটি কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে পারে না। এর জন্য বিভিন্ন জাত এবং চক্রের জন্য পরামিতি অপ্টিমাইজেশান প্রয়োজন।

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

ঐতিহাসিক তথ্য ব্যবহার করে ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য মডেলকে প্রশিক্ষণের জন্য মেশিন লার্নিং অ্যালগরিদম প্রবর্তনের বিষয়টি বিবেচনা করুন।

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

ভলিউম এনার্জি ইন্ডিকেটরগুলিকে সত্যিকারের প্রবণতা নির্ধারণ করতে এবং মূল্য-ভলিউম বিচ্যুতির কারণে সিগন্যাল ত্রুটিগুলি রোধ করতেও একত্রিত করা যেতে পারে।

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

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


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jigneshjc

//@version=5
strategy("Jigga - Survival Level", shorttitle='Jigga - Survival Level', overlay=true)

doBackTesting = input(true, 'Run Back Testing')

entryCondition = false
exitCondition = false


ab21 =  14,  gh41 = ab21
gh42 = ab21, ju51 = 14
ki61 = ju51
lkolkp = true ,ab22 = 58
cd31 = 5 , ab23 = 42
aa12 = 29, cd32 = 26
op71 = 5,  aa11 = 12
aa13 = 9, op72 = 2.0
movnwx = false


kahachale(byju, h, l) =>
    mika = ta.change(h)
    awer = -ta.change(l)
    uikmhDM = na(mika) ? na : mika > awer and mika > 0 ? mika : 0
    wrtdfcDM = na(awer) ? na : awer > mika and awer > 0 ? awer : 0
    bbct = ta.rma(ta.tr, byju)
    uikmh = fixnan(100 * ta.rma(uikmhDM, byju) / bbct)
    wrtdfc = fixnan(100 * ta.rma(wrtdfcDM, byju) / bbct)
    [uikmh, wrtdfc]

trial(gh42, gh41, h, l) =>
    [uikmh, wrtdfc] = kahachale(gh42, h, l)
    uuolop = uikmh + wrtdfc
    trial = 100 * ta.rma(math.abs(uikmh - wrtdfc) / (uuolop == 0 ? 1 : uuolop), gh41)
    trial

_pr(src, byjugth) =>
    max = ta.highest(byjugth)
    min = ta.lowest(byjugth)
    100 * (src - max) / (max - min)


kyukarna(khulmkhula, mikaarwala, nichewala, bandhwala, partiwala) =>

    sig = trial(gh42, gh41, mikaarwala, nichewala)
    trialIncreasing = sig > ta.ema(sig, 5) ? lkolkp : movnwx

    rolkmn = ta.ema(bandhwala, aa11)
    psolkmn = ta.ema(bandhwala, aa12)
    ujghd = rolkmn - psolkmn
    wrtycv = ta.ema(ujghd, aa13)
    kimnjg = ujghd - wrtycv


    mikalilo = ta.rma(math.max(ta.change(bandhwala), 0), ab21)
    awerlilo = ta.rma(-math.min(ta.change(bandhwala), 0), ab21)
    lilo = awerlilo == 0 ? 100 : mikalilo == 0 ? 0 : 100 - 100 / (1 + mikalilo / awerlilo)
    juylknlilo = ta.ema(lilo, 3)


    rjuylkn = ta.ema(bandhwala, cd31)
    psjuylkn = ta.ema(bandhwala, cd32)

    percentR = _pr(bandhwala, ju51)
    juylknpercentR = ta.ema(percentR, 3)


    ad = bandhwala == mikaarwala and bandhwala == nichewala or mikaarwala == nichewala ? 0 : (2 * bandhwala - nichewala - mikaarwala) / (mikaarwala - nichewala) * partiwala
    kiloValue = math.sum(ad, ki61) / math.sum(partiwala, ki61)



    liiopn = ta.atr(op71)
    mikaliiopn = (mikaarwala + nichewala) / 2 - op72 * liiopn
    mika1liiopn = nz(mikaliiopn[1], mikaliiopn)
    mikaliiopn := bandhwala[1] > mika1liiopn ? math.max(mikaliiopn, mika1liiopn) : mikaliiopn
    dnliiopn = (mikaarwala + nichewala) / 2 + op72 * liiopn
    dn1liiopn = nz(dnliiopn[1], dnliiopn)
    dnliiopn := bandhwala[1] < dn1liiopn ? math.min(dnliiopn, dn1liiopn) : dnliiopn
    omnerliiopn = 1
    omnerliiopn := nz(omnerliiopn[1], omnerliiopn)
    omnerliiopn := omnerliiopn == -1 and bandhwala > dn1liiopn ? 1 : omnerliiopn == 1 and bandhwala < mika1liiopn ? -1 : omnerliiopn

    fitur = ujghd > 0 ? ujghd > wrtycv ? 1 : 0 : ujghd > wrtycv ? 0 : -1
    mitur = kimnjg >= 0 ? kimnjg > kimnjg[1] ? 1 : 0 : kimnjg > kimnjg[1] ? 0 : -1
    ritur = juylknlilo > ab22 ? 1 : juylknlilo < ab23 ? -1 : 0
    circuits = rjuylkn > psjuylkn ? 1 : -1
    trialPoints = trialIncreasing ? close > ta.ema(close, 3) ? 1 : -1 : 0
    virar = juylknpercentR > -ab23 ? 1 : juylknpercentR < -ab22 ? -1 : 0
    chikar = kiloValue > 0.1 ? 1 : kiloValue < -0.1 ? -1 : 0
    sitar = omnerliiopn


    p = fitur + mitur + ritur + circuits + trialPoints + virar + chikar + sitar

    p

currentP = kyukarna(open, high, low, close, volume)
currentPNew = currentP >= 0 and currentP[1] <= 0 ? 0 : currentP <= 0 and currentP[1] >= 0 ? 0 : currentP
colorPNew = currentPNew == 0 ? color.black : currentPNew >= 0 ? color.green : color.red
//plot(currentPNew, color=colorPNew, title='CurrentTimeFrame')

LTN = 0.0
LTN := nz(LTN) ? 0.0 : (currentPNew[1] < 0 and currentPNew >= 0) ? high * 1.005 : (currentPNew[1] > 0 and currentPNew <= 0) ? low * 0.995 : LTN[1]

LClr = color.green
LClr :=  (currentPNew[1] < 0 and currentPNew >= 0) ? color.green : (currentPNew[1] > 0 and currentPNew <= 0) ? color.red : LClr[1]

plot(LTN,color=LClr,title="Level", style=plot.style_circles)


entryCondition:= high > LTN and LClr == color.green ? lkolkp : movnwx
exitCondition:= low < LTN and LClr == color.red ? lkolkp : movnwx

tradeRunning = movnwx
tradeRunning := nz(tradeRunning) ? movnwx :  (not tradeRunning[1]) and entryCondition ? lkolkp : tradeRunning[1] and exitCondition ? movnwx : tradeRunning[1]


plotshape(tradeRunning and (not tradeRunning[1]) and (not doBackTesting), style=shape.labelup, location=location.belowbar, color=color.new(#00FF00, 50), size=size.tiny, title='Buy wrtycv', text='➹', textcolor=color.new(color.black,0))
plotshape((not tradeRunning) and tradeRunning[1] and (not doBackTesting), style=shape.labeldown, location=location.abovebar, color=color.new(#FF0000, 50), size=size.tiny, title='Sell wrtycv', text='➷', textcolor=color.new(color.white, 0))


if  entryCondition  and doBackTesting
    strategy.entry(id="Buy",direction=strategy.long)

if exitCondition and doBackTesting
    strategy.close(id="Buy")



আরো