وسائل لوڈ ہو رہے ہیں... لوڈنگ...

VAWSI اور متحرک لمبائی کے حساب سے ملٹی اشارے تجزیہ کے نظام کے ساتھ رجحان استحکام الٹ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-06-21 15:36:43
ٹیگز:VAWSIاے ٹی آرآر ایس آئیڈبلیو ایم اےایس ایم اےآر ایم اے

ماخذ - پچھلے ماخذ کے بعد، پھر اس کی تبدیلی کی مطلق قیمت لیتا ہے اور اسے ماخذ کے ساتھ معمول بناتا ہے.

  1. متحرک لمبائی کا حساب کتاب: مارکیٹ کے حالات کی بنیاد پر اشارے کی لمبائی پیرامیٹرز کو ایڈجسٹ کرنے کے لئے بلیک کیٹ 1402 کے متحرک لمبائی کے حساب کتاب کا طریقہ استعمال کرتا ہے۔

  2. جامع تجزیہ: جامع اشارے پیدا کرنے کے لئے VAWSI ، ٹرینڈ پرستی اور ATR سے پڑھنے کو جوڑتا ہے۔ کم حتمی اقدار قریب قریب الٹ جانے کی نشاندہی کرتی ہیں ، جبکہ اعلی اقدار غیر مستحکم یا ہلچل مچانے والی منڈیوں کی نشاندہی کرتی ہیں۔

  3. متحرک سٹاپ نقصان / لے منافع: جامع اشارے اور موجودہ رجحان کی سمت کی بنیاد پر متحرک سٹاپ نقصان اور لے منافع کی سطح کا حساب لگاتا ہے.

  4. تجارتی سگنل: کراس اوور کی تصدیق کرتا ہے اور جب قیمت مکمل طور پر حساب کی حد کی لائن کو عبور کرتی ہے تو تجارتی سگنل تیار کرتا ہے۔

حکمت عملی کے فوائد

  1. کثیر جہتی تجزیہ: متعدد اشارے کو جوڑ کر ، حکمت عملی مارکیٹ کو مختلف زاویوں سے تجزیہ کرسکتی ہے ، جس سے فیصلے کی درستگی میں بہتری آتی ہے۔

  2. موافقت: متحرک لمبائی کا حساب کتاب حکمت عملی کو مختلف مارکیٹ کے حالات کے مطابق کرنے کی اجازت دیتا ہے، اس کی لچک میں اضافہ ہوتا ہے.

  3. خطرے کا انتظام: متحرک سٹاپ نقصان اور منافع لینے کی ترتیبات خطرے کو بہتر طور پر کنٹرول کرنے اور مارکیٹ کی تبدیلیوں کو اپنانے میں مدد کرتی ہیں۔

  4. اصل اشارے: وی اے ڈبلیو ایس آئی اور ٹرینڈ پرستیشن اشارے مارکیٹ کی منفرد بصیرت فراہم کرتے ہیں جو روایتی اشارے کی طرف سے نظر انداز سگنل کو پکڑ سکتے ہیں.

  5. اینٹی ریپینٹنگ: بار اسٹیٹ کا استعمال اس بات کو یقینی بناتا ہے کہ سگنل دوبارہ پینٹ نہ کریں ، بیک ٹسٹنگ کی درستگی کو بہتر بنائیں۔

  6. حسب ضرورت: متعدد سایڈست پیرامیٹرز حکمت عملی کو مختلف تجارتی آلات اور ٹائم فریموں کے مطابق کرنے کی اجازت دیتے ہیں۔

حکمت عملی کے خطرات

  1. زیادہ سے زیادہ اصلاح: پیرامیٹرز کی بڑی تعداد زیادہ سے زیادہ اصلاح کا باعث بن سکتی ہے ، جو براہ راست تجارت میں ممکنہ طور پر خراب کارکردگی کا مظاہرہ کرتی ہے۔

  2. مارکیٹ کو اپنانے کی صلاحیت: اگرچہ کچھ مارکیٹوں میں اچھی کارکردگی کا مظاہرہ کرتا ہے ، لیکن یہ خاص طور پر کم اتار چڑھاؤ والے بازاروں میں ، تمام مارکیٹ کے حالات کے لئے موزوں نہیں ہوسکتا ہے۔

  3. پیچیدگی: حکمت عملی کی پیچیدگی کو سمجھنے اور برقرار رکھنے میں مشکل پیدا ہوسکتی ہے ، جس سے آپریشنل غلطیوں کا خطرہ بڑھ جاتا ہے۔

  4. کمپیوٹنگ انتہائی: متعدد کسٹم اشارے اور متحرک حساب کتاب کے نتیجے میں اعلی کمپیوٹیشنل بوجھ ہوسکتا ہے ، جس سے عملدرآمد کی رفتار متاثر ہوتی ہے۔

  5. تاریخی اعداد و شمار پر انحصار: حکمت عملی حساب کتاب کے لئے تاریخی اعداد و شمار کی ایک بڑی مقدار کا استعمال کرتی ہے ، جس کی وجہ سے کچھ حالات میں تاخیر ہوسکتی ہے۔

اصلاح کی ہدایات

  1. پیرامیٹر کی اصلاح: مختلف مارکیٹ کے حالات میں حکمت عملی کی کارکردگی کو بہتر بنانے کے لئے مختلف وزن اور لمبائی پیرامیٹرز کو بہتر بنانے کے لئے مشین لرننگ الگورتھم کا استعمال کریں۔

  2. مارکیٹ اسٹیٹ ریکگنیشن: مارکیٹ اسٹیٹ ریکگنیشن ماڈیول شامل کریں تاکہ مارکیٹ کے مختلف ماحول میں حکمت عملی کے پیرامیٹرز کو خود بخود ایڈجسٹ کیا جاسکے۔

  3. سگنل فلٹرنگ: غلط سگنل کو کم کرنے کے لئے اضافی فلٹرنگ میکانزم متعارف کروائیں ، جیسے رجحان کی طاقت کی حد۔

  4. حجم تجزیہ: حجم تجزیہ کو گہرا کریں ، ممکنہ طور پر سگنل کی وشوسنییتا کو بڑھانے کے لئے حجم پیٹرن کی شناخت متعارف کروائیں۔

  5. ملٹی ٹائم فریم تجزیہ: تجارتی فیصلوں کی استحکام کو بہتر بنانے کے لئے متعدد ٹائم فریم سے سگنل کو مربوط کریں۔

  6. رسک مینجمنٹ کی اصلاح: زیادہ نفیس رسک مینجمنٹ کی حکمت عملیوں کو نافذ کریں، جیسے متحرک پوزیشن سائزنگ اور کثیر سطح کے اسٹاپ نقصانات۔

  7. کمپیوٹیشنل کارکردگی: حساب کتاب کی کارکردگی کو بہتر بنانے کے لئے کوڈ کو بہتر بنائیں ، خاص طور پر جب بڑی مقدار میں تاریخی اعداد و شمار پر کارروائی کریں۔

نتیجہ

وی اے ڈبلیو ایس آئی اور ٹرینڈ پرستیشن ریورسنگ حکمت عملی ایک پیچیدہ اور جامع تجارتی نظام ہے جو متعدد جدید اشارے اور متحرک پیرامیٹر ایڈجسٹمنٹ کو یکجا کرتا ہے۔ اس کی طاقت کثیر جہتی مارکیٹ تجزیہ اور موافقت میں ہے ، جس سے اسے مختلف مارکیٹ کے حالات میں ممکنہ الٹ جانے کے مواقع تلاش کرنے کی اجازت ملتی ہے۔ تاہم ، حکمت عملی کی پیچیدگی زیادہ سے زیادہ اصلاح اور موافقت کے لحاظ سے بھی چیلنجز لاتی ہے۔

اس حکمت عملی میں زیادہ سے زیادہ اصلاحات ، خاص طور پر پیرامیٹر ایڈجسٹمنٹ ، مارکیٹ کی حالت کی پہچان اور رسک مینجمنٹ کے ذریعے ، ایک طاقتور تجارتی ٹول بننے کی صلاحیت ہے۔ تاہم ، صارفین کو یہ نوٹ کرنا چاہئے کہ کوئی حکمت عملی کامل نہیں ہے ، اور مسلسل نگرانی اور ایڈجسٹمنٹ ضروری ہے۔ عملی درخواست میں ، ڈیمو اکاؤنٹس پر مکمل جانچ کرنا اور اس حکمت عملی کو تجزیاتی ٹولز اور مارکیٹ کے علم کے ساتھ مل کر تجارتی فیصلے کرنے کی سفارش کی جاتی ہے۔


/*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))



متعلقہ

مزید