मल्टी-टाइमफ़्रेम अनुकूली ट्रेलिंग स्टॉप रणनीति


निर्माण तिथि: 2023-11-21 11:07:44 अंत में संशोधित करें: 2023-11-21 11:07:44
कॉपी: 0 क्लिक्स: 638
1
ध्यान केंद्रित करना
1617
समर्थक

मल्टी-टाइमफ़्रेम अनुकूली ट्रेलिंग स्टॉप रणनीति

अवलोकन

यह रणनीति कई तकनीकी संकेतकों के समग्र संकेतों की गणना करके वर्तमान समय-सीमा के भीतर प्रवृत्ति की दिशा का न्याय करती है। जब यह एक उछाल प्रवृत्ति के रूप में निर्धारित किया जाता है, तो उच्च बिंदु पर एक ट्रैक स्टॉप लाइन सेट करें; जब यह एक गिरावट प्रवृत्ति के रूप में निर्धारित किया जाता है, तो निम्न बिंदु पर एक ट्रैक स्टॉप लाइन सेट करें। रणनीति विभिन्न किस्मों और विभिन्न समय-सीमाओं के लिए अनुकूल हो सकती है, और स्टॉप लाइन को गतिशील रूप से समायोजित करके जोखिम नियंत्रण प्राप्त कर सकती है।

सिद्धांत

इस रणनीति में औसत रेखा, एटीआर, केडी और परिवर्तन दर जैसे कई संकेतकों को शामिल किया गया है ताकि वर्तमान समय-सीमा के तहत समग्र प्रवृत्ति की दिशा का पता लगाया जा सके। विशेष रूप से, यह निम्नलिखित उप-संकेतों के लिए एक समग्र मूल्य की गणना करता हैः

  1. एकसमान दिशा संकेत
  2. KD सूचकांक ओवरबॉट ओवरसोल्ड सिग्नल
  3. मूल्य संकेत से दूर
  4. चैनल तोड़ने का संकेत
  5. बहु-समय फ़्रेम समग्र परीक्षण और त्रुटि संकेत
  6. प्रतिशत आर संकेत
  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")