یہ حکمت عملی وی ڈبلیو اے پی (ولیم ویوٹڈ اوسط قیمت) اور معیاری انحراف چینلز پر مبنی ایک رجحان بریک آؤٹ سسٹم ہے۔ یہ اوپر کی طرف بریک آؤٹ کے مواقع کو حاصل کرنے کے لئے وی ڈبلیو اے پی اور معیاری انحراف بینڈ کا حساب کرکے متحرک قیمت کی حد تشکیل دیتا ہے۔ یہ حکمت عملی بنیادی طور پر تجارت کے لئے معیاری انحراف بینڈ بریک آؤٹ سگنلز پر انحصار کرتی ہے ، جس میں منافع کے اہداف اور خطرے کو کنٹرول کرنے کے لئے آرڈر کے وقفے ہوتے ہیں۔
یہ ایک مقداری تجارتی حکمت عملی ہے جو شماریاتی اصولوں اور تکنیکی تجزیہ کو جوڑتی ہے۔ وی ڈبلیو اے پی اور معیاری انحراف بینڈ کے امتزاج کے ذریعے ، یہ ایک نسبتا reliable قابل اعتماد تجارتی نظام تیار کرتی ہے۔ بنیادی فوائد اس کی سائنسی شماریاتی بنیاد اور جامع رسک کنٹرول میکانزم میں پائے جاتے ہیں ، لیکن عملی ایپلی کیشنز میں پیرامیٹرز اور تجارتی منطق کی مسلسل اصلاح کی ضرورت ہے۔
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("VWAP Stdev Bands Strategy (Long Only)", overlay=true) // Standard Deviation Inputs devUp1 = input.float(1.28, title="Stdev above (1)") devDn1 = input.float(1.28, title="Stdev below (1)") // Show Options showPrevVWAP = input(false, title="Show previous VWAP close?") profitTarget = input.float(2, title="Profit Target ($)", minval=0) // Profit target for closing orders gapMinutes = input.int(15, title="Gap before new order (minutes)", minval=0) // Gap for placing new orders // VWAP Calculation var float vwapsum = na var float volumesum = na var float v2sum = na var float prevwap = na // Track the previous VWAP var float lastEntryPrice = na // Track the last entry price var int lastEntryTime = na // Track the time of the last entry start = request.security(syminfo.tickerid, "D", time) newSession = ta.change(start) vwapsum := newSession ? hl2 * volume : vwapsum[1] + hl2 * volume volumesum := newSession ? volume : volumesum[1] + volume v2sum := newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2 myvwap = vwapsum / volumesum dev = math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0)) // Calculate Upper and Lower Bands lowerBand1 = myvwap - devDn1 * dev upperBand1 = myvwap + devUp1 * dev // Plot VWAP and Bands with specified colors plot(myvwap, style=plot.style_line, title="VWAP", color=color.green, linewidth=1) plot(upperBand1, style=plot.style_line, title="VWAP Upper (1)", color=color.blue, linewidth=1) plot(lowerBand1, style=plot.style_line, title="VWAP Lower (1)", color=color.red, linewidth=1) // Trading Logic (Long Only) longCondition = close < lowerBand1 and close[1] >= lowerBand1 // Price crosses below the lower band // Get the current time in minutes currentTime = timestamp("GMT-0", year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow)) // Check if it's time to place a new order based on gap canPlaceNewOrder = na(lastEntryTime) or (currentTime - lastEntryTime) >= gapMinutes * 60 * 1000 // Close condition based on profit target if (strategy.position_size > 0) if (close - lastEntryPrice >= profitTarget) strategy.close("B") lastEntryTime := na // Reset last entry time after closing // Execute Long Entry if (longCondition and canPlaceNewOrder) strategy.entry("B", strategy.long) lastEntryPrice := close // Store the entry price lastEntryTime := currentTime // Update the last entry time // Add label for the entry label.new(bar_index, close, "B", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small) // Optional: Plot previous VWAP for reference prevwap := newSession ? myvwap[1] : prevwap[1] plot(showPrevVWAP ? prevwap : na, style=plot.style_circles, color=close > prevwap ? color.green : color.red)