बहु-समय फ्रेम अनुकूलन ट्रैकिंग स्टॉप लॉस रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-21 11:07:44
टैगः

img

अवलोकन

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

सिद्धांत

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

  1. चलती औसत दिशा संकेत
  2. केडी संकेतक ओवरबॉट ओवरसोल्ड संकेत
  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")



अधिक