یہ حکمت عملی متعدد تکنیکی اشارے جیسے آر ایس آئی ، ایم اے سی ڈی ، او بی وی ، سی سی آئی ، سی ایم ایف ، ایم ایف آئی اور وی ڈبلیو ایم اے سی ڈی کو یکجا کرتی ہے تاکہ ممکنہ انٹری کے مواقع کی نشاندہی کرنے کے لئے قیمت اور حجم کے مابین اختلافات کا پتہ لگایا جاسکے۔ اس حکمت عملی میں اعلی اتار چڑھاؤ اور گہرائی یا وی ایف آئی کی شرائط پوری ہونے پر تجارتی سگنل پیدا کرنے کے لئے صارف ڈپ کا پتہ لگانے والے اشارے بھی شامل ہیں۔ یہ حکمت عملی صرف طویل عرصے تک جاتی ہے اور پوزیشنوں کو بتدریج جمع کرنے کے لئے ٹریکنگ اسٹاپ نقصان کا استعمال کرتی ہے۔
RSI ، MACD ، OBV ، CCI ، CMF ، MFI اور VWMACD جیسے اشارے کا حساب لگائیں ، اور انڈیکیٹرز اور تاریخی قیمتوں کے مابین تغیرات کا پتہ لگائیں جو انکولی لکیری رجسٹریشن کے طریقہ کار کا استعمال کرتے ہیں۔ جب اشارے کی قیمت نئی کم ہوجاتی ہے تو خریدنے کے سگنل تیار کریں جبکہ قیمت نہیں ہوتی ہے۔
صارف کے ان پٹ اتار چڑھاؤ کی حد اور گہرائی فیصد کی حد کی بنیاد پر، VFI اشارے فلٹرنگ کے ساتھ مل کر، موم بتیوں پر سگنل تیار کرتے ہیں جو اعلی اتار چڑھاؤ اور گہرائی ٹیسٹ کو پورا کرتے ہیں.
ابتدائی لانگ انٹری کے بعد، اگر قیمت آخری لانگ انٹری قیمت کو ایک ترتیب شدہ فیصد سے توڑتی ہے، تو ایک اور طویل پوزیشن شامل کریں.
ٹریک سٹاپ نقصان کا استعمال کریں جب ترتیب شدہ لے منافع تناسب تک پہنچنے کے لئے پوزیشنوں کو بند کریں.
سگنل کی وشوسنییتا کو بہتر بنانے کے لئے کثیر عوامل کا مجموعہ قیمت اور حجم کے اشارے کا جامع استعمال کرتا ہے۔
انکولی لکیری رجسٹریشن کا طریقہ اختلافات کا پتہ لگاتا ہے اور دستی فیصلے کی ذات پرستی سے بچتا ہے۔
اتار چڑھاؤ، گہرائی/وی ایف آئی اشارے شامل کرنے سے واپسی کے مواقع کا پتہ چلتا ہے۔
کثیر اندراج جمع کرنے سے واپسی کا مکمل استعمال ممکن ہوتا ہے، اور اسٹاپ منافع کو ٹریک کرنے سے منافع میں تالا لگانے میں مدد ملتی ہے۔
پیچیدہ کثیر عوامل کا فیصلہ پیرامیٹر کی اصلاح اور انحراف کے پتہ لگانے کی تاثیر پر منحصر ہے اصل کارکردگی کو متاثر کرسکتا ہے۔
ایک طرفہ ہولڈنگ میں زیادہ خطرہ ہوتا ہے، اگر فیصلہ غلط ہو تو بڑے نقصانات ہو سکتے ہیں۔
نقصان بار بار شامل کرنے کے ماڈل میں بڑھا سکتا ہے، پوزیشن سائز کو احتیاط سے کنٹرول کرنے کی ضرورت ہے.
اصل منافع پر تجارتی فیسوں کے اثرات پر توجہ دیں۔
بہترین ترتیب کو منتخب کرنے کے لئے مختلف پیرامیٹرز اور اشارے کے مجموعے کی جانچ کریں.
تجارت اور زیادہ سے زیادہ نقصانات پر کنٹرول کرنے کے لئے سٹاپ نقصان کی حکمت عملی شامل کریں.
خطرات کو متنوع کرنے کے لئے دونوں سمتوں میں مواقع پر غور کریں.
پیرامیٹرز کو خود بخود بہتر بنانے کے لئے مشین لرننگ کے طریقوں کو شامل کریں.
یہ حکمت عملی تکنیکی اشارے کے امتزاج کے ذریعے انٹری ٹائمنگ کی نشاندہی کرتی ہے ، اور غلط سگنلز کو ختم کرنے کے لئے صارف کے ذریعہ طے شدہ حالات اور وی ایف آئی فلٹرنگ کا استعمال کرتی ہے۔ یہ رجحان کا پیچھا کرنے والی پوزیشنوں کو جمع کرنے کے لئے پل بیک کا فائدہ اٹھاتا ہے ، جو رجحانات میں مواقع حاصل کرنے میں مدد کرتا ہے۔ لیکن اس میں غلط فیصلے اور یکطرفہ ہولڈنگ کے خطرات بھی ہیں۔ خطرات کو کم کرنے اور منافع کی جگہ کو بڑھانے کے لئے اشارے کے پیرامیٹرز ، اسٹاپ نقصان کی حکمت عملی وغیرہ پر مناسب اصلاح کی ضرورت ہے۔
/*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")