VWAP تجارتی حکمت عملی اور حجم کی بے ضابطگی کی نگرانی

VWAP RSI YTD SMA
تخلیق کی تاریخ: 2024-06-07 15:44:04 آخر میں ترمیم کریں: 2024-06-07 15:44:04
کاپی: 0 کلکس کی تعداد: 717
1
پر توجہ دیں
1617
پیروکار

VWAP تجارتی حکمت عملی اور حجم کی بے ضابطگی کی نگرانی

جائزہ

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

حکمت عملی کا اصول

  1. متعدد VWAP سطحوں کا حساب لگائیں ، بشمول اوپن قیمت VWAP ، اعلی قیمت VWAP ، کم قیمت VWAP ، اور غیر معمولی اعلی حجم کے ساتھ VWAP۔
  2. غیر معمولی اعلی ٹرانسپورٹ کے نقشے کا پتہ لگانا اور اس نقشے پر غیر معمولی اعلی ٹرانسپورٹ VWAP کے مجموعی متغیر کو دوبارہ ترتیب دینا۔
  3. ٹریڈنگ سگنل کے لئے ایک محرک کے طور پر VWAP کی سطح سے اوپر اور نیچے کی انحراف کی قیمت مقرر کریں.
  4. VWAP کے دوسری طرف قیمتوں میں اضافہ کی جانچ پڑتال کریں تاکہ غلط سگنل سے بچا جاسکے۔
  5. VWAP کے حوالے سے قیمت کی پوزیشن اور اختتامی قیمت اور افتتاحی قیمت کے تعلقات کے مطابق ، دو قسم کے تجارتی سگنل پیدا ہوتے ہیں ، جن میں وِک (سائے کی لائن) اور کراس اوور (کراس اوور) شامل ہیں۔
  6. آر ایس آئی اشارے کا استعمال کرتے ہوئے متحرک تبدیلیوں کی جانچ پڑتال کریں ، اور جب آر ایس آئی 70 سے زیادہ یا 30 سے کم ہو تو ، اسی طرح کی تجارت کو فلیٹ کریں۔

طاقت کا تجزیہ

  1. اس حکمت عملی میں متعدد وی ڈبلیو اے پی کی سطحوں کا استعمال کیا گیا ہے تاکہ حمایت اور مزاحمت کی معلومات کو زیادہ جامع بنایا جاسکے۔
  2. غیر معمولی طور پر زیادہ ٹریفک کا پتہ لگانے کے ذریعہ ، حکمت عملی مارکیٹ میں اہم تبدیلیوں کو پکڑ سکتی ہے۔
  3. اس کے علاوہ ، آپ کو اپنے ٹریڈنگ سگنل کو بہتر بنانے کے لئے کچھ شور سگنل کو فلٹر کرنے کی اجازت دیتا ہے۔
  4. VWAP کی دوسری طرف قیمتوں میں اضافے کے بارے میں غور کیا گیا ہے تاکہ کچھ غلط سگنلوں سے بچا جاسکے۔
  5. قیمت اور وی ڈبلیو اے پی کے مابین پوزیشن اور اختتامی قیمت اور افتتاحی قیمت کے مابین تعلقات کے مطابق متعدد تجارتی اشارے پیدا کرنے سے حکمت عملی میں لچک پیدا ہوتی ہے۔
  6. آر ایس آئی اشارے کا استعمال کرنے کے لئے پیشن گوئی کی شرط کے طور پر، حکمت عملی کو وقت میں تجارت سے باہر نکلنے میں مدد ملتی ہے جب رفتار میں تبدیلی ہوتی ہے.

خطرے کا تجزیہ

  1. یہ حکمت عملی وی ڈبلیو اے پی کی سطح پر منحصر ہے ، اور اگر مارکیٹ میں کوئی انتہائی رجحان ہوتا ہے تو ، وی ڈبلیو اے پی کا اثر ختم ہوسکتا ہے۔
  2. غیر معمولی اعلی حجم کا فیصلہ ایک مقررہ قیمت پر مبنی ہوتا ہے جو مارکیٹ کے مختلف حالات کے مطابق نہیں ہوسکتا ہے۔
  3. مختلف مارکیٹوں اور ٹرانزیکشن کی اقسام کے مطابق انحراف کی ترتیبات کو ایڈجسٹ کرنے کی ضرورت ہوسکتی ہے۔
  4. اس حکمت عملی کے نتیجے میں ایک سے زیادہ ٹریڈنگ سگنل پیدا ہوتے ہیں، جس کی وجہ سے زیادہ ٹریڈنگ اور اعلی قیمتوں کا سامنا کرنا پڑتا ہے.
  5. RSI اشارے ممکنہ طور پر پیچھے کی پوزیشن کا اشارہ دے سکتے ہیں ، جس سے حکمت عملی کو زیادہ خطرہ لاحق ہوتا ہے۔

اصلاح کی سمت

  1. VWAP کی سطح کے حساب کے طریقوں کو بہتر بنانے کے لئے، جیسے کہ طویل وقت کی مدت پر غور کرنا یا وزن کا طریقہ استعمال کرنا۔
  2. غیر معمولی اعلی ٹرانزیکشن کے معیار کو بہتر بنانا ، جیسے کہ مرضی کے مطابق حد یا ٹرانزیکشن کے دیگر اشارے کے ساتھ مل کر۔
  3. انحراف کی قیمتوں کے لئے پیرامیٹرز کی اصلاح ، بہترین انحراف کی شدت تلاش کریں۔
  4. خطرے کے انتظام کے اقدامات متعارف کروائیں ، جیسے کہ اسٹاپ لاس اور اسٹاپ اسٹاپ ، اور ایک ہی تجارت کے خطرے کی حد کو کنٹرول کریں۔
  5. زیادہ درست بیعانہ سگنل حاصل کرنے کے لئے دیگر حرکیات کے اشارے یا متعدد اشارے کے مجموعے کی کوشش کریں۔
  6. ٹرانزیکشن سگنل کو فلٹر کرنا ، زیادہ تجارت کو کم کرنا اور ٹرانزیکشن کی لاگت کو کم کرنا

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-05-30 00:00:00
end: 2024-06-06 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("5 Anchored VWAP Strategy with Abnormally High Volume Candle", overlay=true)

// Initialize VWAP variables
var float vwap_open = na
var float vwap_high = na
var float vwap_low = na
var float vwap_high_volume = na

var float cum_v_open = 0
var float cum_v_high = 0
var float cum_v_low = 0
var float cum_v_high_volume = 0

var float cum_pv_open = 0
var float cum_pv_high = 0
var float cum_pv_low = 0
var float cum_pv_high_volume = 0

var float highest_volume = 0

// Initialize YTD high and low variables
var float ytd_high = na
var float ytd_low = na

// Parameters for abnormal volume detection
length = 20
volume_threshold = 2.0

// Displacement parameters
displacement_percentage = 0.01 // 1% displacement

// Calculate average volume
avg_volume = ta.sma(volume, length)

// Check if it's the first day of the year
is_first_day_of_year = year(time) != year(time[1])

// Reset YTD high and low on the first day of the year
if is_first_day_of_year
    ytd_high := high
    ytd_low := low

// Update YTD high and low
ytd_high := na(ytd_high) ? high : math.max(ytd_high, high)
ytd_low := na(ytd_low) ? low : math.min(ytd_low, low)

// Update cumulative variables for open VWAP
cum_v_open += volume
cum_pv_open += close * volume
if cum_v_open != 0
    vwap_open := cum_pv_open / cum_v_open

// Update cumulative variables for high VWAP
if high == ytd_high
    cum_v_high := 0
    cum_pv_high := 0

cum_v_high += volume
cum_pv_high += close * volume
if cum_v_high != 0
    vwap_high := cum_pv_high / cum_v_high

// Update cumulative variables for low VWAP
if low == ytd_low
    cum_v_low := 0
    cum_pv_low := 0

cum_v_low += volume
cum_pv_low += close * volume
if cum_v_low != 0
    vwap_low := cum_pv_low / cum_v_low

// Check for new high-volume candle that is also abnormally high and reset cumulative variables for high-volume VWAP
new_high_volume = false
if volume > highest_volume and volume > volume_threshold * avg_volume
    highest_volume := volume
    cum_v_high_volume := 0
    cum_pv_high_volume := 0
    new_high_volume := true

cum_v_high_volume += volume
cum_pv_high_volume += close * volume
if cum_v_high_volume != 0
    vwap_high_volume := cum_pv_high_volume / cum_v_high_volume

// Plot VWAPs
plot(vwap_open, color=color.red, linewidth=2, title="VWAP Open")
plot(vwap_high, color=color.green, linewidth=2, title="VWAP High")
plot(vwap_low, color=color.blue, linewidth=2, title="VWAP Low")
plot(vwap_high_volume, color=color.purple, linewidth=2, title="VWAP High Volume")

// Plot a vertical line on the chart only when a new high-volume VWAP anchor occurs
bgcolor(new_high_volume ? color.new(color.purple, 90) : na, offset=-1)

// Calculate displacement amounts
displacement_amount_open = vwap_open * displacement_percentage
displacement_amount_high = vwap_high * displacement_percentage
displacement_amount_low = vwap_low * displacement_percentage
displacement_amount_high_volume = vwap_high_volume * displacement_percentage

// Check for gaps on the opposite side of a VWAP
gap_up_opposite_open = na(close[1]) ? false : (open > close[1] and open < vwap_open and close[1] > vwap_open)
gap_down_opposite_open = na(close[1]) ? false : (open < close[1] and open > vwap_open and close[1] < vwap_open)

gap_up_opposite_high = na(close[1]) ? false : (open > close[1] and open < vwap_high and close[1] > vwap_high)
gap_down_opposite_high = na(close[1]) ? false : (open < close[1] and open > vwap_high and close[1] < vwap_high)

gap_up_opposite_low = na(close[1]) ? false : (open > close[1] and open < vwap_low and close[1] > vwap_low)
gap_down_opposite_low = na(close[1]) ? false : (open < close[1] and open > vwap_low and close[1] < vwap_low)

gap_up_opposite_high_volume = na(close[1]) ? false : (open > close[1] and open < vwap_high_volume and close[1] > vwap_high_volume)
gap_down_opposite_high_volume = na(close[1]) ? false : (open < close[1] and open > vwap_high_volume and close[1] < vwap_high_volume)

// RSI calculation for momentum change detection
rsi = ta.rsi(close, 14)
long_exit_condition = rsi > 70
short_exit_condition = rsi < 30

// Debugging Plots
plotshape(not gap_up_opposite_open and not gap_down_opposite_open and close > vwap_open and low < vwap_open - displacement_amount_open and close[1] < vwap_open, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Open Long Signal")
plotshape(not gap_up_opposite_open and not gap_down_opposite_open and close < vwap_open and high > vwap_open + displacement_amount_open and close[1] > vwap_open, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Open Short Signal")

plotshape(not gap_up_opposite_high and not gap_down_opposite_high and close > vwap_high and low < vwap_high - displacement_amount_high and close[1] < vwap_high, style=shape.triangledown, location=location.abovebar, color=color.blue, size=size.small, title="High Long Signal")
plotshape(not gap_up_opposite_high and not gap_down_opposite_high and close < vwap_high and high > vwap_high + displacement_amount_high and close[1] > vwap_high, style=shape.triangleup, location=location.belowbar, color=color.orange, size=size.small, title="High Short Signal")

plotshape(not gap_up_opposite_low and not gap_down_opposite_low and close > vwap_low and low < vwap_low - displacement_amount_low and close[1] < vwap_low, style=shape.triangledown, location=location.abovebar, color=color.purple, size=size.small, title="Low Long Signal")
plotshape(not gap_up_opposite_low and not gap_down_opposite_low and close < vwap_low and high > vwap_low + displacement_amount_low and close[1] > vwap_low, style=shape.triangleup, location=location.belowbar, color=color.yellow, size=size.small, title="Low Short Signal")

plotshape(not gap_up_opposite_high_volume and not gap_down_opposite_high_volume and close > vwap_high_volume and low < vwap_high_volume - displacement_amount_high_volume and close[1] < vwap_high_volume, style=shape.triangledown, location=location.abovebar, color=color.teal, size=size.small, title="High Volume Long Signal")
plotshape(not gap_up_opposite_high_volume and not gap_down_opposite_high_volume and close < vwap_high_volume and high > vwap_high_volume + displacement_amount_high_volume and close[1] > vwap_high_volume, style=shape.triangleup, location=location.belowbar, color=color.fuchsia, size=size.small, title="High Volume Short Signal")

// Trading signals based on VWAP support/resistance with displacement, no gaps on the opposite side, and bounce conditions
if not gap_up_opposite_open and not gap_down_opposite_open
    if (close > vwap_open and low < vwap_open)
        if close > open
            strategy.entry("Long_Open_Wick", strategy.long, comment="Wick")
        else
            strategy.entry("Long_Open_Crossover", strategy.long, comment="Crossover")
    
    if (close < vwap_open and high > vwap_open)
        if close < open
            strategy.entry("Short_Open_Wick", strategy.short, comment="Wick")
        else
            strategy.entry("Short_Open_Crossover", strategy.short, comment="Crossover")

if not gap_up_opposite_high and not gap_down_opposite_high
    if (close > vwap_high and low < vwap_high)
        if close > open
            strategy.entry("Long_High_Wick", strategy.long, comment="Wick")
        else
            strategy.entry("Long_High_Crossover", strategy.long, comment="Crossover")
    
    if (close < vwap_high and high > vwap_high)
        if close < open
            strategy.entry("Short_High_Wick", strategy.short, comment="Wick")
        else
            strategy.entry("Short_High_Crossover", strategy.short, comment="Crossover")

if not gap_up_opposite_low and not gap_down_opposite_low
    if (close > vwap_low and low < vwap_low)
        if close > open
            strategy.entry("Long_Low_Wick", strategy.long, comment="Wick")
        else
            strategy.entry("Long_Low_Crossover", strategy.long, comment="Crossover")
    
    if (close < vwap_low and high > vwap_low)
        if close < open
            strategy.entry("Short_Low_Wick", strategy.short, comment="Wick")
        else
            strategy.entry("Short_Low_Crossover", strategy.short, comment="Crossover")

if not gap_up_opposite_high_volume and not gap_down_opposite_high_volume
    if (close > vwap_high_volume and low < vwap_high_volume)
        if close > open
            strategy.entry("Long_High_Volume_Wick", strategy.long, comment="Wick")
        else
            strategy.entry("Long_High_Volume_Crossover", strategy.long, comment="Crossover")
    
    if (close < vwap_high_volume and high > vwap_high_volume)
        if close < open
            strategy.entry("Short_High_Volume_Wick", strategy.short, comment="Wick")
        else
            strategy.entry("Short_High_Volume_Crossover", strategy.short, comment="Crossover")

// Exit trades based on RSI momentum change
if strategy.position_size > 0 and long_exit_condition
    strategy.close("Long_Open_Wick")
    strategy.close("Long_Open_Crossover")
    strategy.close("Long_High_Wick")
    strategy.close("Long_High_Crossover")
    strategy.close("Long_Low_Wick")
    strategy.close("Long_Low_Crossover")
    strategy.close("Long_High_Volume_Wick")
    strategy.close("Long_High_Volume_Crossover")

if strategy.position_size < 0 and short_exit_condition
    strategy.close("Short_Open_Wick")
    strategy.close("Short_Open_Crossover")
    strategy.close("Short_High_Wick")
    strategy.close("Short_High_Crossover")
    strategy.close("Short_Low_Wick")
    strategy.close("Short_Low_Crossover")
    strategy.close("Short_High_Volume_Wick")
    strategy.close("Short_High_Volume_Crossover")