یہ حکمت عملی بنیادی طور پر چلتی اوسط کراس اوور اصول کا استعمال کرتی ہے ، جو آر ایس آئی اشارے کے الٹ سگنل اور کسٹم ڈبل چلتی اوسط کراس اوور الگورتھم کے ساتھ مل کر ٹرینڈ ٹریڈنگ کو نافذ کرتی ہے۔ یہ حکمت عملی مختلف ادوار کے دو چلتے ہوئے اوسط کو ٹریک کرتی ہے ، جس میں مختصر مدت کے رجحانات کو ٹریک کرنے والا تیز ایم اے اور طویل مدتی رجحانات کو ٹریک کرنے والا سست ایم اے ہوتا ہے۔ جب تیز ایم اے سست ایم اے کو اوپر کی طرف عبور کرتا ہے تو ، اس سے بڑھتا ہوا رجحان اور خریدنے کا موقع ملتا ہے۔ جب تیز ایم اے سست ایم اے سے نیچے عبور کرتا ہے تو ، یہ قلیل مدتی رجحان کے اختتام اور پوزیشنوں کو بند کرنے کا موقع فراہم کرتا ہے۔
مختلف پیرامیٹرز کے ساتھ VWAP چلتی اوسط کے دو گروپوں کا حساب لگائیں ، جو بالترتیب طویل مدتی اور قلیل مدتی رجحانات کی نمائندگی کرتے ہیں۔
Tenkansen اور Kijunsen کے اوسط کو سست اور تیز رفتار اوسط کے طور پر لے لو.
بلنگر بینڈ کا حساب لگانا تاکہ استحکام اور بریکآؤٹس کی نشاندہی کی جاسکے۔
حجم توانائی کا تعین کرنے کے لئے TSV کا حساب لگائیں
زیادہ خریدنے اور زیادہ فروخت کی حالتوں کی نشاندہی کرنے کے لئے RSI کا حساب لگائیں
داخلے کی شرائط:
باہر نکلنے کے حالات:
دوہری حرکت پذیر اوسط نظام طویل اور قلیل مدتی رجحانات دونوں کو پکڑتا ہے
آر ایس آئی زیادہ خریدے گئے زون خریدنے اور زیادہ فروخت والے زون فروخت کرنے سے گریز کرتا ہے
TSV کافی حجم کو یقینی بناتا ہے جو رجحان کی حمایت کرتا ہے
بولنگر بینڈ اہم بریک آؤٹ پوائنٹس کی نشاندہی کرتے ہیں
اشارے کا امتزاج جھوٹے بریک آؤٹس کو فلٹر کرنے میں مدد کرتا ہے
ایم اے سسٹم جھوٹے سگنلز کا شکار ہیں، دوسرے اشارے کے ساتھ فلٹرنگ کی ضرورت ہے
آر ایس آئی پیرامیٹرز کو بہتر بنانے کی ضرورت ہے، دوسری صورت میں خرید / فروخت پوائنٹس کو یاد کر سکتے ہیں
TSV بھی پیرامیٹرز کے لئے بہت حساس ہے، محتاط جانچ کی ضرورت ہے
توڑنے BB اوپری بینڈ جھوٹے توڑنے ہو سکتا ہے، تصدیق کی ضرورت ہے
بہت سے اشارے کو بہتر بنانا مشکل ہے، بہت زیادہ فٹ ہونے کا خطرہ ہے
ٹرین / ٹیسٹ کے ناکافی اعداد و شمار وکر فٹنگ کا سبب بن سکتا ہے
بہترین پیرامیٹر مجموعے تلاش کرنے کے لئے زیادہ ادوار کی جانچ کریں
RSI کے ساتھ تبدیل یا یکجا کرنے کے لئے MACD، KD جیسے دیگر اشارے کی کوشش کریں
پیرامیٹر کی اصلاح کے لئے واک فارورڈ تجزیہ کا استعمال کریں
ایک ہی تجارت کے نقصان کو کنٹرول کرنے کے لئے سٹاپ نقصان شامل کریں
سگنل کی پیشن گوئی میں مدد کے لئے مشین لرننگ ماڈلز پر غور کریں
مختلف مارکیٹوں کے لئے پیرامیٹرز کو ایڈجسٹ کریں، ایک پیرامیٹر سیٹ پر زیادہ فٹ نہیں
یہ حکمت عملی دوہری حرکت پذیر اوسطوں کا استعمال کرتے ہوئے طویل اور قلیل مدتی رجحانات کو پکڑتی ہے ، اور آر ایس آئی ، ٹی ایس وی ، بولنگر بینڈ اور بہت کچھ کے ساتھ سگنلز کو فلٹر کرتی ہے۔ فائدہ یہ ہے کہ طویل مدتی عروج کی رفتار کے مطابق تجارت کی جارہی ہے۔ لیکن اس میں غلط سگنل کے خطرات بھی ہوتے ہیں ، جس سے خطرات کو کم کرنے کے لئے مزید پیرامیٹر ٹیوننگ اور اسٹاپ نقصانات کی ضرورت ہوتی ہے۔ مجموعی طور پر ، رجحان کی پیروی اور اوسط ریورس کا امتزاج طویل مدتی عروج کے رجحانات میں اچھے نتائج پیدا کرتا ہے ، لیکن پیرامیٹرز کو مختلف منڈیوں کے لئے ایڈجسٹ کرنے کی ضرورت ہے۔
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // Credits // "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/ // "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018. // "Vidya" code which used in this strategy was written by "everget" active on https://tr.tradingview.com/u/everget/ strategy("HYE Combo Market [Strategy] (Vwap Mean Reversion + Trend Hunter)", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025) //Strategy inputs source = input(title = "Source", defval = close, group = "Mean Reversion Strategy Inputs") smallcumulativePeriod = input(title = "Small VWAP", defval = 8, group = "Mean Reversion Strategy Inputs") bigcumulativePeriod = input(title = "Big VWAP", defval = 10, group = "Mean Reversion Strategy Inputs") meancumulativePeriod = input(title = "Mean VWAP", defval = 50, group = "Mean Reversion Strategy Inputs") percentBelowToBuy = input(title = "Percent below to buy %", defval = 2, group = "Mean Reversion Strategy Inputs") rsiPeriod = input(title = "Rsi Period", defval = 2, group = "Mean Reversion Strategy Inputs") rsiEmaPeriod = input(title = "Rsi Ema Period", defval = 5, group = "Mean Reversion Strategy Inputs") rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30, group = "Mean Reversion Strategy Inputs") slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs") slowkijunsenPeriod = input(13, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs") fasttenkansenPeriod = input(3, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs") fastkijunsenPeriod = input(7, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs") BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Trend Hunter Strategy Inputs") BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Trend Hunter Strategy Inputs") tsvlength = input(20, minval=1, title="TSV Length", group = "Trend Hunter Strategy Inputs") tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Trend Hunter Strategy Inputs") length = input(title="Vidya Length", type=input.integer, defval=20, group = "Trend Hunter Strategy Inputs") src = input(title="Vidya Source", type=input.source, defval= hl2 , group = "Trend Hunter Strategy Inputs") // Vidya Calculation getCMO(src, length) => mom = change(src) upSum = sum(max(mom, 0), length) downSum = sum(-min(mom, 0), length) out = (upSum - downSum) / (upSum + downSum) out cmo = abs(getCMO(src, length)) alpha = 2 / (length + 1) vidya = 0.0 vidya := src * alpha * cmo + nz(vidya[1]) * (1 - alpha * cmo) // Make input options that configure backtest date range startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group = "Strategy Date Range") startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group = "Strategy Date Range") startYear = input(title="Start Year", type=input.integer, defval=2000, minval=1800, maxval=2100, group = "Strategy Date Range") endDate = input(title="End Date", type=input.integer, defval=31, minval=1, maxval=31, group = "Strategy Date Range") endMonth = input(title="End Month", type=input.integer, defval=12, minval=1, maxval=12, group = "Strategy Date Range") endYear = input(title="End Year", type=input.integer, defval=2021, minval=1800, maxval=2100, group = "Strategy Date Range") inDateRange = true // Mean Reversion Strategy Calculation typicalPriceS = (high + low + close) / 3 typicalPriceVolumeS = typicalPriceS * volume cumulativeTypicalPriceVolumeS = sum(typicalPriceVolumeS, smallcumulativePeriod) cumulativeVolumeS = sum(volume, smallcumulativePeriod) smallvwapValue = cumulativeTypicalPriceVolumeS / cumulativeVolumeS typicalPriceB = (high + low + close) / 3 typicalPriceVolumeB = typicalPriceB * volume cumulativeTypicalPriceVolumeB = sum(typicalPriceVolumeB, bigcumulativePeriod) cumulativeVolumeB = sum(volume, bigcumulativePeriod) bigvwapValue = cumulativeTypicalPriceVolumeB / cumulativeVolumeB typicalPriceM = (high + low + close) / 3 typicalPriceVolumeM = typicalPriceM * volume cumulativeTypicalPriceVolumeM = sum(typicalPriceVolumeM, meancumulativePeriod) cumulativeVolumeM = sum(volume, meancumulativePeriod) meanvwapValue = cumulativeTypicalPriceVolumeM / cumulativeVolumeM rsiValue = rsi(source, rsiPeriod) rsiEMA = ema(rsiValue, rsiEmaPeriod) buyMA = ((100 - percentBelowToBuy) / 100) * bigvwapValue[0] inTrade = strategy.position_size > 0 notInTrade = strategy.position_size <= 0 if(crossunder(smallvwapValue, buyMA) and rsiEMA < rsiLevelforBuy and close < meanvwapValue and inDateRange and notInTrade) strategy.entry("BUY-M", strategy.long) if(close > meanvwapValue or not inDateRange) strategy.close("BUY-M") // Trend Hunter Strategy Calculation // Slow Tenkan Sen Calculation typicalPriceTS = (high + low + close) / 3 typicalPriceVolumeTS = typicalPriceTS * volume cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod) cumulativeVolumeTS = sum(volume, slowtenkansenPeriod) slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS // Slow Kijun Sen Calculation typicalPriceKS = (high + low + close) / 3 typicalPriceVolumeKS = typicalPriceKS * volume cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod) cumulativeVolumeKS = sum(volume, slowkijunsenPeriod) slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS // Fast Tenkan Sen Calculation typicalPriceTF = (high + low + close) / 3 typicalPriceVolumeTF = typicalPriceTF * volume cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod) cumulativeVolumeTF = sum(volume, fasttenkansenPeriod) fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF // Fast Kijun Sen Calculation typicalPriceKF = (high + low + close) / 3 typicalPriceVolumeKF = typicalPriceKS * volume cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod) cumulativeVolumeKF = sum(volume, fastkijunsenPeriod) fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF // Slow LeadLine Calculation lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod) highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod) lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod) highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod) slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s) slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s) slowleadLine = avg(slowtenkansen, slowkijunsen) // Fast LeadLine Calculation lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod) highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod) lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod) highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod) fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f) fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f) fastleadLine = avg(fasttenkansen, fastkijunsen) // BBleadLine Calculation BBleadLine = avg(fastleadLine, slowleadLine) // Bollinger Band Calculation basis = sma(BBleadLine, BBlength) dev = BBmult * stdev(BBleadLine, BBlength) upper = basis + dev lower = basis - dev // TSV Calculation tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength) tsvema = ema(tsv, tsvemaperiod) // Rules for Entry & Exit if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and close > vidya and inDateRange and notInTrade) strategy.entry("BUY-T", strategy.long) if((fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1]) or not inDateRange) strategy.close("BUY-T") // Plots plot(meanvwapValue, title="MEAN VWAP", linewidth=2, color=color.yellow) //plot(vidya, title="VIDYA", linewidth=2, color=color.green) //colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool) //plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3) //colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool) //plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3) //p1 = plot(upper, "Upper BB", color=#2962FF) //p2 = plot(lower, "Lower BB", color=#2962FF) //fill(p1, p2, title = "Background", color=color.blue) //plot(smallvwapValue, color=#13C425, linewidth=2) //plot(bigvwapValue, color=#CA1435, linewidth=2)