यह रणनीति संभावित प्रवेश अवसरों की पहचान करने के लिए मूल्य और मात्रा के बीच विचलन का पता लगाने के लिए आरएसआई, एमएसीडी, ओबीवी, सीसीआई, सीएमएफ, एमएफआई और वीडब्ल्यूएमएसीडी जैसे कई तकनीकी संकेतकों को जोड़ती है। यह रणनीति उच्च अस्थिरता और गहराई या वीएफआई शर्तों को पूरा करने पर ट्रेडिंग संकेत उत्पन्न करने के लिए उपयोगकर्ता डुबकी का पता लगाने वाले संकेतकों को भी शामिल करती है। यह रणनीति केवल लंबी जाती है और धीरे-धीरे पदों को जमा करने के लिए ट्रैकिंग स्टॉप लॉस का उपयोग करती है।
आरएसआई, एमएसीडी, ओबीवी, सीसीआई, सीएमएफ, एमएफआई और वीडब्ल्यूएमएसीडी जैसे संकेतकों की गणना करें, और अनुकूलन रैखिक प्रतिगमन विधि का उपयोग करके संकेतकों और ऐतिहासिक कीमतों के बीच विचलन का पता लगाएं। जब कोई संकेतक एक नया कम करता है जबकि कीमत नहीं होती है तो खरीद संकेत उत्पन्न करें।
उपयोगकर्ता इनपुट अस्थिरता सीमा और गहराई प्रतिशत सीमा के आधार पर, वीएफआई संकेतक फ़िल्टरिंग के साथ संयुक्त, मोमबत्तियों पर संकेत उत्पन्न करते हैं जो उच्च अस्थिरता और गहराई परीक्षणों को पूरा करते हैं।
प्रारंभिक लॉन्ग एंट्री के बाद, यदि कीमत पिछले लॉन्ग एंट्री प्राइस को एक कॉन्फ़िगर प्रतिशत से तोड़ती है, तो एक और लॉन्ग पोजीशन जोड़ें।
विन्यस्त ले लाभ अनुपात तक पहुँचने पर बंद पदों के लिए ट्रैकिंग स्टॉप हानि का उपयोग करें.
सिग्नल विश्वसनीयता में सुधार के लिए बहु-कारक संयोजन मूल्य और मात्रा संकेतकों का व्यापक उपयोग करता है।
अनुकूली रैखिक प्रतिगमन विधि विचलन का पता लगाती है और मैन्युअल निर्णय की व्यक्तिपरकता से बचती है।
अस्थिरता, गहराई/वीएफआई संकेतकों को शामिल करने से प्रतिवर्तन के अवसरों का पता लगाने में मदद मिलती है।
मल्टी-एंट्री संचय पॉलबैक का पूर्ण उपयोग करने की अनुमति देता है, और स्टॉप प्रॉफिट को ट्रैक करने से मुनाफे को लॉक करने में मदद मिलती है।
जटिल बहु-कारक निर्णय पैरामीटर अनुकूलन और विचलन का पता लगाने की प्रभावशीलता के आधार पर वास्तविक प्रदर्शन को प्रभावित कर सकता है।
एकतरफा होल्डिंग में अधिक जोखिम होता है, यदि निर्णय गलत है तो बड़े नुकसान हो सकते हैं।
बार-बार जोड़ने वाले मॉडल में हानि बढ़ सकती है, स्थिति के आकार को सावधानीपूर्वक नियंत्रित करने की आवश्यकता है।
वास्तविक लाभ पर व्यापार शुल्क के प्रभाव पर ध्यान दें।
इष्टतम विन्यास का चयन करने के लिए विभिन्न मापदंडों और संकेतकों के संयोजनों का परीक्षण करें।
प्रति व्यापार और अधिकतम घाटे पर नियंत्रण करने के लिए स्टॉप लॉस रणनीतियों को जोड़ें।
जोखिमों में विविधता लाने के लिए दोनों दिशाओं में अवसरों पर विचार करें।
स्वचालित रूप से मापदंडों का अनुकूलन करने के लिए मशीन लर्निंग विधियों को शामिल करें।
यह रणनीति तकनीकी संकेतकों के संयोजन के माध्यम से प्रवेश समय की पहचान करती है, और झूठे संकेतों को खत्म करने के लिए उपयोगकर्ता द्वारा परिभाषित शर्तों और वीएफआई फ़िल्टरिंग का उपयोग करती है। यह प्रवृत्ति का पीछा करने वाली पदों को जमा करने के लिए पुलबैक का लाभ उठाती है, जो रुझानों में अवसरों को पकड़ने में मदद करती है। लेकिन यह गलत निर्णय और एकतरफा होल्डिंग के जोखिम का भी सामना करती है। जोखिमों को कम करने और लाभ की जगह का विस्तार करने के लिए संकेतक मापदंडों, स्टॉप लॉस रणनीतियों आदि पर उचित अनुकूलन की आवश्यकता होती है।
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mkose81 //@version=5 strategy("RSI ve MACD Uyumsuzluğu Stratejisi (Sadece Long)", overlay=true, max_bars_back=4000,use_bar_magnifier= true,pyramiding=40) // RSI Hesaplama rsi = ta.rsi(close, 14) float botRSI = na botRSI := ta.pivotlow(5, 5) botcRSI = 0 botcRSI := botRSI ? 5 : nz(botcRSI[1]) + 1 newbotRSI = ta.pivotlow(5, 0) emptylRSI = true if not na(newbotRSI) and newbotRSI < low[botcRSI] diffRSI = (newbotRSI - low[botcRSI]) / botcRSI llineRSI = newbotRSI - diffRSI for x = 1 to botcRSI - 1 by 1 if close[x] < llineRSI emptylRSI := false break llineRSI -= diffRSI emptylRSI // Pozitif Uyumsuzluk Alım Sinyali - RSI alRSI = 0 if emptylRSI and not na(newbotRSI) if rsi[botcRSI] < rsi alRSI := 1 // MACD Hesaplama [macd, signal, _] = ta.macd(close, 21, 55, 8) float botMACD = na botMACD := ta.pivotlow(5, 5) botcMACD = 0 botcMACD := botMACD ? 5 : nz(botcMACD[1]) + 1 newbotMACD = ta.pivotlow(5, 0) emptylMACD = true if not na(newbotMACD) and newbotMACD < low[botcMACD] diffMACD = (newbotMACD - low[botcMACD]) / botcMACD llineMACD = newbotMACD - diffMACD for x = 1 to botcMACD - 1 by 1 if close[x] < llineMACD emptylMACD := false break llineMACD -= diffMACD emptylMACD // Pozitif Uyumsuzluk Alım Sinyali - MACD alMACD = 0 if emptylMACD and not na(newbotMACD) if macd[botcMACD] < macd alMACD := 1 // OBV Hesaplama ve Uyumsuzluk Tespiti obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0) float botOBV = na botOBV := ta.pivotlow(5, 5) botcOBV = 0 botcOBV := botOBV ? 5 : nz(botcOBV[1]) + 1 newbotOBV = ta.pivotlow(5, 0) emptylOBV = true if not na(newbotOBV) and newbotOBV < obv[botcOBV] diffOBV = (newbotOBV - obv[botcOBV]) / botcOBV llineOBV = newbotOBV - diffOBV for x = 1 to botcOBV - 1 by 1 if obv[x] < llineOBV emptylOBV := false break llineOBV -= diffOBV emptylOBV // Pozitif Uyumsuzluk Alım Sinyali - OBV alOBV = 0 if emptylOBV and not na(newbotOBV) if obv[botcOBV] < obv alOBV := 1 // CCI Hesaplama ve Uyumsuzluk Tespiti cci = ta.cci(close, 20) float botCCI = na botCCI := ta.pivotlow(5, 5) botcCCI = 0 botcCCI := botCCI ? 5 : nz(botcCCI[1]) + 1 newbotCCI = ta.pivotlow(5, 0) emptylCCI = true if not na(newbotCCI) and newbotCCI < cci[botcCCI] diffCCI = (newbotCCI - cci[botcCCI]) / botcCCI llineCCI = newbotCCI - diffCCI for x = 1 to botcCCI - 1 by 1 if cci[x] < llineCCI emptylCCI := false break llineCCI -= diffCCI emptylCCI // Pozitif Uyumsuzluk Alım Sinyali - CCI alCCI = 0 if emptylCCI and not na(newbotCCI) if cci[botcCCI] < cci alCCI := 1 // CMF Hesaplama length = 20 mfm = ((close - low) - (high - close)) / (high - low) mfv = mfm * volume cmf = ta.sma(mfv, length) / ta.sma(volume, length) float botCMF = na botCMF := ta.pivotlow(5, 5) botcCMF = 0 botcCMF := botCMF ? 5 : nz(botcCMF[1]) + 1 newbotCMF = ta.pivotlow(5, 0) emptylCMF = true if not na(newbotCMF) and newbotCMF < cmf[botcCMF] diffCMF = (newbotCMF - cmf[botcCMF]) / botcCMF llineCMF = newbotCMF - diffCMF for x = 1 to botcCMF - 1 by 1 if cmf[x] < llineCMF emptylCMF := false break llineCMF -= diffCMF emptylCMF // Pozitif Uyumsuzluk Alım Sinyali - CMF alCMF = 0 if emptylCMF and not na(newbotCMF) if cmf[botcCMF] < cmf alCMF := 1 // MFI Hesaplama lengthMFI = 14 mfi = ta.mfi(close, lengthMFI) float botMFI = na botMFI := ta.pivotlow(mfi, 5, 5) botcMFI = 0 botcMFI := botMFI ? 5 : nz(botcMFI[1]) + 1 newbotMFI = ta.pivotlow(mfi, 5, 0) emptylMFI = true if not na(newbotMFI) and newbotMFI < mfi[botcMFI] diffMFI = (newbotMFI - mfi[botcMFI]) / botcMFI llineMFI = newbotMFI - diffMFI for x = 1 to botcMFI - 1 by 1 if mfi[x] < llineMFI emptylMFI := false break llineMFI -= diffMFI emptylMFI // Pozitif Uyumsuzluk Alım Sinyali - MFI alMFI = 0 if emptylMFI and not na(newbotMFI) if mfi[botcMFI] < mfi alMFI := 1 // VWMACD Hesaplama fastLength = 12 slowLength = 26 signalSmoothing = 9 vwmacd = ta.ema(close, fastLength) - ta.ema(close, slowLength) signalLine = ta.ema(vwmacd, signalSmoothing) histogram = vwmacd - signalLine // VWMACD Uyumsuzluk Tespiti float botVWMACD = na botVWMACD := ta.pivotlow(histogram, 5, 5) botcVWMACD = 0 botcVWMACD := botVWMACD ? 5 : nz(botcVWMACD[1]) + 1 newbotVWMACD = ta.pivotlow(histogram, 5, 0) emptylVWMACD = true if not na(newbotVWMACD) and newbotVWMACD < histogram[botcVWMACD] diffVWMACD = (newbotVWMACD - histogram[botcVWMACD]) / botcVWMACD llineVWMACD = newbotVWMACD - diffVWMACD for x = 1 to botcVWMACD - 1 by 1 if histogram[x] < llineVWMACD emptylVWMACD := false break llineVWMACD -= diffVWMACD emptylVWMACD // Pozitif Uyumsuzluk Alım Sinyali - VWMACD alVWMACD = 0 if emptylVWMACD and not na(newbotVWMACD) if histogram[botcVWMACD] < histogram alVWMACD := 1 //Dipci indikator lengthd= 130 coef = 0.2 vcoef = 2.5 signalLength = 5 smoothVFI = false ma(x, y) => smoothVFI ? ta.sma(x, y) : x typical = hlc3 inter = math.log(typical) - math.log(typical[1]) vinter = ta.stdev(inter, 30) cutoff = coef * vinter * close vave = ta.sma(volume, lengthd)[1] vmax = vave * vcoef vc = volume < vmax ? volume : vmax //min( volume, vmax ) mf = typical - typical[1] iff_4 = mf < -cutoff ? -vc : 0 vcp = mf > cutoff ? vc : iff_4 vfi = ma(math.sum(vcp, lengthd) / vave, 3) vfima = ta.ema(vfi, signalLength) d = vfi - vfima // Kullanıcı girdileri volatilityThreshold = input.float(1.005, title="Volume Percentage Threshold") pinThreshold = input.float(1.005, title="Deep Percentage Threshold") // Hesaplamalar volatilityPercentage = (high - low) / open pinPercentage = close > open ? (high - close) / open : (close - low) / open // Volatilite koşulu ve VFI ile filtreleme voldip = volatilityPercentage >= volatilityThreshold or pinPercentage >= pinThreshold volCondition = voldip and vfi< 0 // VFI değeri 0'dan küçükse volCondition aktif olacak threeCommasEntryComment = input.string(title="3Commas Entry Comment", defval="") threeCommasExitComment = input.string(title="3Commas Exit Comment", defval="") takeProfitPerc = input.float(1, title="Take Profit Percentage (%)") / 100 fallPerc = input.float(5, title="Percentage for Additional Buy (%)") / 100 // Değişkenlerin tanımlanması var float lastBuyPrice = na var float tpPrice = na var int lastTpBar = na // Alım koşulları longCondition = alRSI or alMACD or alOBV or alCCI or alCMF or alMFI or alVWMACD or volCondition // Son alım fiyatını saklamak için değişken // İlk alım stratejisi if (longCondition and strategy.position_size == 0) strategy.entry("Long", strategy.long,comment=threeCommasEntryComment) lastBuyPrice := open // İkinci ve sonraki alım koşulları (son alım fiyatının belirlenen yüzde altında) if (open < lastBuyPrice * (1 - fallPerc) and strategy.position_size > 0) strategy.entry("Long Add", strategy.long,comment=threeCommasEntryComment) lastBuyPrice := open // Kar alma fiyatını hesaplama ve strateji çıkışı tp_price = strategy.position_avg_price * (1 + takeProfitPerc) if strategy.position_size > 0 strategy.exit("Exit Long", "Long", limit=tp_price,comment=threeCommasExitComment) strategy.exit("Exit Long Add", "Long Add", limit=tp_price,comment=threeCommasExitComment) tpPrice := na // Pozisyon kapandığında TP çizgisini sıfırla // Kar alma seviyesi çizgisi çizme plot(strategy.position_size > 0 ? tp_price : na, color=color.green, title="Take Profit Line")