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

مصنف:چاؤ ژانگ، تاریخ: 2023-12-29 14:56:03
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

فوائد

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

خطرے کا تجزیہ

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

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

  1. حرکت پذیر اوسط وغیرہ کے ساتھ لنگر بار انتخاب منطق کو ایڈجسٹ کریں
  2. لفافے بینڈ کے لئے مختلف معیاری انحراف کے کئی گنا کی کوشش کریں
  3. اتار چڑھاؤ کی خصوصیات کے مطابق ROC پیرامیٹرز کو بہتر بنائیں
  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)

مزید