اینکرڈ رولنگ CVDVWAP پر مبنی سگنل کی حکمت عملی


تخلیق کی تاریخ: 2023-12-29 14:56:03 آخر میں ترمیم کریں: 2023-12-29 14:56:03
کاپی: 1 کلکس کی تعداد: 826
1
پر توجہ دیں
1621
پیروکار

اینکرڈ رولنگ CVDVWAP پر مبنی سگنل کی حکمت عملی

جائزہ

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

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

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

اسٹریٹجک فوائد

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

خطرے کا تجزیہ

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-12-28 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Anchored Rolling CVDVWAP Signal Strategy', overlay=true)

// User-defined settings
vwapAnchorPeriod = input.int(20, title="Rolling VWAP Anchor Period", group="Settings")
stdDevMult = input.float(2.0, title="Standard Deviation Multiplier for Envelope", group="Settings")
analysis_period = input.int(7, minval=1, maxval=100, title="Analysis Period", group="Settings")
useVwapFilter = input.bool(true, title="Use Anchored VWAP Filter", group="Filters")
useCvdFilter = input.bool(true, title="Use CVD Filter", group="Filters")
cvdLength = input.int(20, title="CVD Length", group="Filters")
tpPercent = input.float(200.0, title="Take Profit % of SL Distance", group="Trade Settings")
slPeriods = input.int(200, title="Stop Loss Lookback Period", group="Trade Settings")
toggleSignals = input.bool(false, title="Toggle Signals", group="Settings")

// Finding the anchor bar
highestVol = ta.highest(volume, vwapAnchorPeriod)
var int anchorBar = na
if volume == highestVol
    anchorBar := bar_index

// Initializing variables for anchored VWAP and envelope calculation
var float avwapNumerator = na
var float avwapDenominator = na
var float anchoredVwap = na
var float sum = 0.0
var int count = 0
var float sumDev = 0.0

// Calculating Anchored VWAP and envelope
if not na(anchorBar)
    if bar_index == anchorBar
        avwapNumerator := high * volume + low * volume + close * volume
        avwapDenominator := volume * 3
        sum := 0.0
        count := 0
        sumDev := 0.0
    else if bar_index > anchorBar
        avwapNumerator := avwapNumerator[1] + high * volume + low * volume + close * volume
        avwapDenominator := avwapDenominator[1] + volume * 3
        sum := sum[1] + close
        count := count[1] + 1
        sumDev := sumDev[1] + math.pow(close - (sum / count), 2)
    anchoredVwap := avwapNumerator / avwapDenominator

// Standard deviation envelope calculation
float mean = sum / math.max(count, 1)
float stDev = math.sqrt(sumDev / math.max(count, 1))
float upperBand = anchoredVwap + stdDevMult * stDev
float lowerBand = anchoredVwap - stdDevMult * stDev

// CVD calculation and filter application
cvd = ta.cum(volume - ta.sma(volume, cvdLength))
bool cvdCondition = useCvdFilter ? (cvd[1] < cvd and cvd > cvd[1]) : true

// Dip and Rip pattern detection
roc = ta.roc(close, analysis_period)
dip_move_value = input.float(-8, title="Down (%)", step=0.50, minval=-100, maxval=-0.01, group="Settings")
rip_move_value = input.float(8, title="Up (%)", step=0.50, minval=0.01, maxval=100.00, group="Settings")
dip = roc <= dip_move_value and cvdCondition and (not useVwapFilter or close < anchoredVwap)
rip = roc >= rip_move_value and cvdCondition and (not useVwapFilter or close > anchoredVwap)

// State variables for signals and TP/SL execution
var bool inTrade = false // If we are currently in a trade
var bool takeLong = false // If the last signal was a buy
var bool takeShort = false // If the last signal was a sell
var float tradeEntryPrice = na // The trade entry price
var float tradeSL = na // The current trade's Stop Loss level
var float tradeTP = na // The current trade's Take Profit level

// Setting SL and TP levels for the trade
tradeSL := dip ? ta.highest(high, slPeriods) : (rip ? ta.lowest(low, slPeriods) : tradeSL)
tradeTP := dip ? tradeEntryPrice - (tradeSL - tradeEntryPrice) * tpPercent / 100 : (rip ? tradeEntryPrice + (tradeEntryPrice - tradeSL) * tpPercent / 100 : tradeTP)

// Trade entry logic
if (dip or rip) and not inTrade
    tradeEntryPrice := close
    inTrade := true
    takeLong := rip
    takeShort := dip

// Trade exit logic at TP or SL
if inTrade and ((takeLong and (low < tradeSL or high > tradeTP)) or (takeShort and (high > tradeSL or low < tradeTP)))
    inTrade := false // Exit the trade

// Display logic for signals based on the toggle
bool showLongSignal = rip and (not toggleSignals or not takeLong)
bool showShortSignal = dip and (not toggleSignals or not takeShort)

// Reset signals if toggle is active and trade is exited
if toggleSignals and not inTrade
    takeLong := true
    takeShort := true

// Strategy entry and exit logic
if showLongSignal
    strategy.entry("Long", strategy.long)

if showShortSignal
    strategy.close("Long")

if showShortSignal
    strategy.entry("Short", strategy.short)

if showLongSignal
    strategy.close("Short")

// Plotting of entry signals, anchored VWAP, and envelope
plot(upperBand, title="Upper Envelope", color=color.green)
plot(lowerBand, title="Lower Envelope", color=color.red)
plot(anchoredVwap, title="Anchored VWAP", color=color.blue)

// Coloring and shapes for Dip and Rip
barcolor(dip ? color.rgb(255, 0, 0) : na, title="Down Bar Color")
bgcolor(dip ? color.rgb(255, 0, 0, 80) : na, title="Down Background Color")
plotshape(dip, title="Dip - Down", location=location.top, color=color.rgb(255, 82, 82, 45), style=shape.square, size=size.tiny)
barcolor(rip ? color.rgb(0, 255, 0) : na, title="Up Bar Color")
bgcolor(rip ? color.rgb(0, 255, 0, 80) : na, title="Up Background Color")
plotshape(rip, title="Rip - Up", location=location.top, color=color.rgb(76, 175, 79, 55), style=shape.square, size=size.tiny)

// Strategy exit conditions for TP and SL
strategy.exit("Take Profit Long", from_entry = "Long", limit = tradeTP)
strategy.exit("Stop Loss Long", from_entry = "Long", stop = tradeSL)
strategy.exit("Take Profit Short", from_entry = "Short", limit = tradeTP)
strategy.exit("Stop Loss Short", from_entry = "Short", stop = tradeSL)