यह रणनीति वर्तमान समय सीमा में प्रवृत्ति की दिशा निर्धारित करने के लिए कई तकनीकी संकेतकों के व्यापक संकेतों की गणना करती है। जब एक अपट्रेंड के रूप में आंका जाता है, तो एक ट्रैकिंग स्टॉप लॉस लाइन अपेक्षाकृत उच्च बिंदु पर सेट की जाती है; जब एक डाउनट्रेंड के रूप में आंका जाता है, तो एक ट्रैकिंग स्टॉप लॉस लाइन अपेक्षाकृत कम बिंदु पर सेट की जाती है। रणनीति जोखिम नियंत्रण प्राप्त करने के लिए स्टॉप लॉस लाइन को अनुकूलनशील रूप से समायोजित कर सकती है।
रणनीति में चलती औसत, एटीआर, केडी और विचलन दर जैसे कई संकेतकों को मिलाकर वर्तमान समय सीमा में समग्र प्रवृत्ति दिशा निर्धारित की जाती है। विशेष रूप से यह निम्नलिखित उप-संकेतों के समग्र मूल्य की गणना करता हैः
प्रत्येक उप-सिग्नल को समतल किया जाता है और खरीद / बिक्री का न्याय करने के लिए अलग-अलग सीमाएं निर्धारित की जाती हैं। फिर वर्तमान समय सीमा में समग्र संकेत की गणना करने के लिए उप-सिग्नल को भारित किया जाता है। यदि संकेत 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")