ماخذ - پچھلے ماخذ کے بعد، پھر اس کی تبدیلی کی مطلق قیمت لیتا ہے اور اسے ماخذ کے ساتھ معمول بناتا ہے.
متحرک لمبائی کا حساب کتاب: مارکیٹ کے حالات کی بنیاد پر اشارے کی لمبائی پیرامیٹرز کو ایڈجسٹ کرنے کے لئے بلیک کیٹ 1402
جامع تجزیہ: جامع اشارے پیدا کرنے کے لئے VAWSI ، ٹرینڈ پرستی اور ATR سے پڑھنے کو جوڑتا ہے۔ کم حتمی اقدار قریب قریب الٹ جانے کی نشاندہی کرتی ہیں ، جبکہ اعلی اقدار غیر مستحکم یا ہلچل مچانے والی منڈیوں کی نشاندہی کرتی ہیں۔
متحرک سٹاپ نقصان / لے منافع: جامع اشارے اور موجودہ رجحان کی سمت کی بنیاد پر متحرک سٹاپ نقصان اور لے منافع کی سطح کا حساب لگاتا ہے.
تجارتی سگنل: کراس اوور کی تصدیق کرتا ہے اور جب قیمت مکمل طور پر حساب کی حد کی لائن کو عبور کرتی ہے تو تجارتی سگنل تیار کرتا ہے۔
کثیر جہتی تجزیہ: متعدد اشارے کو جوڑ کر ، حکمت عملی مارکیٹ کو مختلف زاویوں سے تجزیہ کرسکتی ہے ، جس سے فیصلے کی درستگی میں بہتری آتی ہے۔
موافقت: متحرک لمبائی کا حساب کتاب حکمت عملی کو مختلف مارکیٹ کے حالات کے مطابق کرنے کی اجازت دیتا ہے، اس کی لچک میں اضافہ ہوتا ہے.
خطرے کا انتظام: متحرک سٹاپ نقصان اور منافع لینے کی ترتیبات خطرے کو بہتر طور پر کنٹرول کرنے اور مارکیٹ کی تبدیلیوں کو اپنانے میں مدد کرتی ہیں۔
اصل اشارے: وی اے ڈبلیو ایس آئی اور ٹرینڈ پرستیشن اشارے مارکیٹ کی منفرد بصیرت فراہم کرتے ہیں جو روایتی اشارے کی طرف سے نظر انداز سگنل کو پکڑ سکتے ہیں.
اینٹی ریپینٹنگ: بار اسٹیٹ کا استعمال اس بات کو یقینی بناتا ہے کہ سگنل دوبارہ پینٹ نہ کریں ، بیک ٹسٹنگ کی درستگی کو بہتر بنائیں۔
حسب ضرورت: متعدد سایڈست پیرامیٹرز حکمت عملی کو مختلف تجارتی آلات اور ٹائم فریموں کے مطابق کرنے کی اجازت دیتے ہیں۔
زیادہ سے زیادہ اصلاح: پیرامیٹرز کی بڑی تعداد زیادہ سے زیادہ اصلاح کا باعث بن سکتی ہے ، جو براہ راست تجارت میں ممکنہ طور پر خراب کارکردگی کا مظاہرہ کرتی ہے۔
مارکیٹ کو اپنانے کی صلاحیت: اگرچہ کچھ مارکیٹوں میں اچھی کارکردگی کا مظاہرہ کرتا ہے ، لیکن یہ خاص طور پر کم اتار چڑھاؤ والے بازاروں میں ، تمام مارکیٹ کے حالات کے لئے موزوں نہیں ہوسکتا ہے۔
پیچیدگی: حکمت عملی کی پیچیدگی کو سمجھنے اور برقرار رکھنے میں مشکل پیدا ہوسکتی ہے ، جس سے آپریشنل غلطیوں کا خطرہ بڑھ جاتا ہے۔
کمپیوٹنگ انتہائی: متعدد کسٹم اشارے اور متحرک حساب کتاب کے نتیجے میں اعلی کمپیوٹیشنل بوجھ ہوسکتا ہے ، جس سے عملدرآمد کی رفتار متاثر ہوتی ہے۔
تاریخی اعداد و شمار پر انحصار: حکمت عملی حساب کتاب کے لئے تاریخی اعداد و شمار کی ایک بڑی مقدار کا استعمال کرتی ہے ، جس کی وجہ سے کچھ حالات میں تاخیر ہوسکتی ہے۔
پیرامیٹر کی اصلاح: مختلف مارکیٹ کے حالات میں حکمت عملی کی کارکردگی کو بہتر بنانے کے لئے مختلف وزن اور لمبائی پیرامیٹرز کو بہتر بنانے کے لئے مشین لرننگ الگورتھم کا استعمال کریں۔
مارکیٹ اسٹیٹ ریکگنیشن: مارکیٹ اسٹیٹ ریکگنیشن ماڈیول شامل کریں تاکہ مارکیٹ کے مختلف ماحول میں حکمت عملی کے پیرامیٹرز کو خود بخود ایڈجسٹ کیا جاسکے۔
سگنل فلٹرنگ: غلط سگنل کو کم کرنے کے لئے اضافی فلٹرنگ میکانزم متعارف کروائیں ، جیسے رجحان کی طاقت کی حد۔
حجم تجزیہ: حجم تجزیہ کو گہرا کریں ، ممکنہ طور پر سگنل کی وشوسنییتا کو بڑھانے کے لئے حجم پیٹرن کی شناخت متعارف کروائیں۔
ملٹی ٹائم فریم تجزیہ: تجارتی فیصلوں کی استحکام کو بہتر بنانے کے لئے متعدد ٹائم فریم سے سگنل کو مربوط کریں۔
رسک مینجمنٹ کی اصلاح: زیادہ نفیس رسک مینجمنٹ کی حکمت عملیوں کو نافذ کریں، جیسے متحرک پوزیشن سائزنگ اور کثیر سطح کے اسٹاپ نقصانات۔
کمپیوٹیشنل کارکردگی: حساب کتاب کی کارکردگی کو بہتر بنانے کے لئے کوڈ کو بہتر بنائیں ، خاص طور پر جب بڑی مقدار میں تاریخی اعداد و شمار پر کارروائی کریں۔
وی اے ڈبلیو ایس آئی اور ٹرینڈ پرستیشن ریورسنگ حکمت عملی ایک پیچیدہ اور جامع تجارتی نظام ہے جو متعدد جدید اشارے اور متحرک پیرامیٹر ایڈجسٹمنٹ کو یکجا کرتا ہے۔ اس کی طاقت کثیر جہتی مارکیٹ تجزیہ اور موافقت میں ہے ، جس سے اسے مختلف مارکیٹ کے حالات میں ممکنہ الٹ جانے کے مواقع تلاش کرنے کی اجازت ملتی ہے۔ تاہم ، حکمت عملی کی پیچیدگی زیادہ سے زیادہ اصلاح اور موافقت کے لحاظ سے بھی چیلنجز لاتی ہے۔
اس حکمت عملی میں زیادہ سے زیادہ اصلاحات ، خاص طور پر پیرامیٹر ایڈجسٹمنٹ ، مارکیٹ کی حالت کی پہچان اور رسک مینجمنٹ کے ذریعے ، ایک طاقتور تجارتی ٹول بننے کی صلاحیت ہے۔ تاہم ، صارفین کو یہ نوٹ کرنا چاہئے کہ کوئی حکمت عملی کامل نہیں ہے ، اور مسلسل نگرانی اور ایڈجسٹمنٹ ضروری ہے۔ عملی درخواست میں ، ڈیمو اکاؤنٹس پر مکمل جانچ کرنا اور اس حکمت عملی کو تجزیاتی ٹولز اور مارکیٹ کے علم کے ساتھ مل کر تجارتی فیصلے کرنے کی سفارش کی جاتی ہے۔
/*backtest start: 2024-05-21 00:00:00 end: 2024-06-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("VAWSI and Trend Persistance Reversal", overlay=true, max_bars_back = 4999, process_orders_on_close = true) //INPUTS sltp = input.float(title = "Minimum SL/TP", defval = 5.0) rsi_weight = input.float(title = "Wawsi weight", defval = 100.0) half_weight= input.float(title = "Trend Persistence Weight", defval = 79.0) atr_weight = input.float(title = "ATR Weight", defval = 20.0) com_mult = input.float(title = "Combination Mult", defval = 1, step = .001) smoothing = input.int(title = "Trend Persistence smooth length", defval = 3) CycPart = input.float(1.1, step = .001, title = "Length Cycle Decimal") src = close hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src) //BlackCat1402's Dynamic Length Calculation EhlersHoDyDC(Price, CycPart) => // Vars: Smooth = 0.00 Detrender = 0.00 I1 = 0.00 Q1 = 0.00 jI = 0.00 jQ = 0.00 I2 = 0.00 Q2 = 0.00 Re = 0.00 Im = 0.00 Period = 0.00 SmoothPeriod = 0.00 pi = 2 * math.asin(1) DomCycle = 0.0 //Hilbert Transform Smooth := bar_index > 5 ? (4 * Price + 3 * nz(Price[1]) + 2 * nz(Price[2]) + nz(Price[3])) / 10 : Smooth Detrender := bar_index > 5 ? (.0962 * Smooth + .5769 * nz(Smooth[2]) - .5769 * nz(Smooth[4]) - .0962 * nz(Smooth[6])) * (.075 * nz(Period[1]) + .54) : Detrender //Compute InPhase and Quadrature components Q1 := bar_index > 5 ? (.0962 * Detrender + .5769 * nz(Detrender[2]) - .5769 * nz(Detrender[4]) - .0962 * nz(Detrender[6])) * (.075 * nz(Period[1]) + .54) : Q1 I1 := bar_index > 5 ? nz(Detrender[3]) : I1 //Advance the phase of I1 and Q1 by 90 degrees jI := (.0962 * I1 + .5769 * nz(I1[2]) - .5769 * nz(I1[4]) - .0962 * nz(I1[6])) * (.075 * nz(Period[1]) + .54) jQ := (.0962 * Q1 + .5769 * nz(Q1[2]) - .5769 * nz(Q1[4]) - .0962 * nz(Q1[6])) * (.075 * nz(Period[1]) + .54) //Phasor addition for 3 bar averaging I2 := I1 - jQ Q2 := Q1 + jI //Smooth the I and Q components before applying the discriminator I2 := .2 * I2 + .8 * nz(I2[1]) Q2 := .2 * Q2 + .8 * nz(Q2[1]) //Homodyne Discriminator Re := I2 * nz(I2[1]) + Q2 * nz(Q2[1]) Im := I2 * nz(Q2[1]) - Q2 * nz(I2[1]) Re := .2 * Re + .8 * nz(Re[1]) Im := .2 * Im + .8 * nz(Im[1]) Period := Im != 0 and Re != 0 ? 2 * pi / math.atan(Im / Re) : Period Period := Period > 1.5 * nz(Period[1]) ? 1.5 * nz(Period[1]) : Period Period := Period < .67 * nz(Period[1]) ? .67 * nz(Period[1]) : Period //Limit Period to be within the bounds of 6 bar and 50 bar cycles Period := Period < 6 ? 6 : Period Period := Period > 50 ? 50 : Period Period := .2 * Period + .8 * nz(Period[1]) SmoothPeriod := .33 * Period + .67 * nz(SmoothPeriod[1]) //it can add filter to Period here DomCycle := math.ceil(CycPart * SmoothPeriod) > 34 ? 34 : math.ceil(CycPart * SmoothPeriod) < 1 ? 1 : math.ceil(CycPart * SmoothPeriod) DomCycle wma(src, length) => wma = 0.0 sum = 0.0 norm = length * (length + 1) / 2 for i = 0 to length - 1 sum := sum + src[i] * (length - i) wma := sum / norm length = math.round(math.ceil(EhlersHoDyDC(hclose,CycPart))) // Traditional Function initialization highest_custom(src, length) => x = src for i = 0 to math.min(length, 4999) if src[i] > x x := src[i] x lowest_custom(src, length) => x = src for i = 0 to math.min(length, 4999) if src[i] < x x := src[i] x rma(src, len) => sum = 0.0 for i = 0 to len - 1 math.min(1, len) sum += src[i] rma = sum / len rma := nz(rma[1]) * (len - 1) / len + src / len sma(src, length) => math.sum(src, length) / length hln(src, length) => TR = math.max(math.abs(src - src[1]), high - low) TR := src / math.abs(ta.change(rma(TR, length))) TR := (1 / TR) * 100 vawma(src, length) => atr = ta.atr(1) aavg = sma(atr, length) vavg = sma(volume, length) weighted_sum = 0.0 sum_weights = 0.0 weighted = 0.0 for i = 0 to length weight = ((volume[i] / vavg + (atr[i]) / aavg) / 2) weighted_sum += src[i] * weight sum_weights += weight a = (weighted_sum / sum_weights) vawsi(src, len) => rmaUp = vawma(math.max(ta.change(src), 0), len) rmaDown = vawma(-math.min(ta.change(src), 0), len) rsi = 100 - (100 / (1 + rmaUp / rmaDown)) trendPersistence(src, length, smoothing) => trendu = math.abs(src - highest_custom(src, length)) trendd = math.abs(src - lowest_custom(src, length)) trendu := wma(trendu, smoothing) trendd := wma(trendd, smoothing) trendu := ta.change(ta.cum(trendu)) trendd := ta.change(ta.cum(trendd)) trend = wma(math.max(trendu, trendd), smoothing) rmaUp = rma(math.max(ta.change(trend), 0), length) rmaDown = rma(-math.min(ta.change(trend), 0), length) rsi = 100 - (100 / (1 + rmaUp / rmaDown)) //Strategy Calculations sl = ((100 - sltp) / 100) * close tp = ((100 + sltp) / 100) * close var bool crossup = na var bool crossdown = na var float dir = na var float BearGuy = 0 BullGuy = ta.barssince(crossup or crossdown) if na(BullGuy) BearGuy += 1 else BearGuy := math.min(BullGuy, 4999) rsiw = rsi_weight / 100 cew = half_weight / 100 atrw = atr_weight / 100 atr = hln(hclose, length) * atrw ce = 1 / trendPersistence(hclose, length, smoothing) com = 1 / math.max(math.abs(vawsi(hclose, length) - 50) * 2, 20) comfin = (((com * rsiw) + (ce * cew) - atr)) * com_mult lower = highest_custom(math.min((math.max(highest_custom(src, BearGuy) * (1 - comfin), sl)), src[1]), BearGuy) upper = lowest_custom(math.max((math.min(lowest_custom(src, BearGuy) * (1 + comfin), tp)), src[1]), BearGuy) var float thresh = na if na(thresh) thresh := lower if na(dir) dir := 1 if crossdown dir := -1 if crossup dir := 1 if dir == 1 thresh := lower if dir == -1 thresh := upper crossup := ta.crossover(hclose, thresh) and barstate.isconfirmed crossdown := ta.crossunder(hclose, thresh) and barstate.isconfirmed //STRATEGY if crossup strategy.entry("long", strategy.long) if crossdown strategy.entry("Short", strategy.short) //PLOTTING col = hclose > thresh ? color.lime : color.red plot(thresh, linewidth = 2, color = color.new(col[1], 0))