اس حکمت عملی میں برن بینڈ اشارے کا استعمال کرتے ہوئے VWAP کو ٹریک کیا گیا ہے۔ جب VWAP اوپر کی طرف سے برن بینڈ کے وسط میں ٹریک ٹوٹ جاتا ہے تو اسے ایک سے زیادہ ٹوٹنے کا فیصلہ کیا جاتا ہے ، اور ایک سے زیادہ حکمت عملی پر عمل کیا جاتا ہے۔ جب VWAP نیچے کی طرف سے برن بینڈ کے نیچے ٹریک ٹوٹ جاتا ہے تو اسے خالی سر کی تصدیق ، فلیٹ پوزیشن سے باہر نکل جاتا ہے۔ اس کے ساتھ ہی ، حکمت عملی میں اہم سپورٹ پوائنٹ کو بھی متعارف کرایا گیا ہے جو داخل ہونے والے سگنل کے معاون فیصلے کی حیثیت سے ہے ، تاکہ کچھ جھوٹے ٹوٹنے کو فلٹر کیا جاسکے۔
یہ حکمت عملی مجموعی طور پر ایک مستحکم توڑنے والا نظام ہے۔ اس کے معیاری آپریشن کا طریقہ ، پیرامیٹرز کو بہتر بنانے کے لئے کافی جگہ ، جو مقدار میں تجارت کے لئے موزوں ہے۔ اس کے ساتھ ہی ، خطرے پر قابو پانے اور غیر معمولی حالات سے ہونے والے نقصانات سے بچنے پر بھی توجہ دینے کی ضرورت ہے۔ مجموعی طور پر ، یہ ایک ایسی توڑنے والی حکمت عملی ہے جس کی گہری تحقیق اور مستقل اصلاح کے قابل ہے۔
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ediks123
//@version=4
strategy("BBofVWAP with entry at Pivot Point", overlay=false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed,
// Function outputs 1 when it's the first bar of the D/W/M/Y
is_newbar(res) =>
ch = 0
if(res == 'Y')
t = year(time('D'))
ch := change(t) != 0 ? 1 : 0
else
t = time(res)
ch := change(t) != 0 ? 1 : 0
ch
//variables BEGIN
//smaLength=input(200,title="Slow MA Length")
bbLength=input(50,title="BB Length")
//bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
pp_period = input(title = "Pivot Period", type=input.string, defval="Week", options = ['Day', 'Week'])
pp_res = pp_period == 'Day' ? 'D' : pp_period == 'Week' ? 'W' : pp_period == 'Month' ? 'M' : 'Y'
riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)
//sma200=sma(close,smaLength)
//plot(sma200, title="SMA 200", color=color.orange)
myVwap=vwap(hlc3)
//bollinger calculation
basis = sma(myVwap, bbLength)
dev = mult * stdev(myVwap, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)
plot(myVwap, title="VWAP", color=color.purple)
//pivot points
// Calc High
high_cur = 0.0
high_cur := is_newbar(pp_res) ? high : max(high_cur[1], high)
phigh = 0.0
phigh := is_newbar(pp_res) ? high_cur[1] : phigh[1]
// Calc Low
low_cur = 0.0
low_cur := is_newbar(pp_res) ? low : min(low_cur[1], low)
plow = 0.0
plow := is_newbar(pp_res) ? low_cur[1] : plow[1]
// Calc Close
pclose = 0.0
pclose := is_newbar(pp_res) ? close[1] : pclose[1]
vPP = (phigh + plow + pclose) / 3
//pivot points
//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100)
//check if cash is sufficient to buy qty1 , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1
strategy.entry(id="BB_VWAP_PP",long=true, qty=qty1, when= crossover(myVwap,basis) and close>=vPP )
bgcolor(strategy.position_size>=1?color.blue:na, transp=75)
barcolor(strategy.position_size>=1?color.green:na)
stopLossVal= strategy.position_size>=1 ? close * (1 - (stopLoss*0.01) ) : 0.00
//partial exit
//strategy.close(id="BBofVwap", qty=strategy.position_size/3, when=crossunder(myVwap,upperBand) and strategy.position_size>=1 ) //and close>strategy.position_avg_price)
//exit on lowerband or stoploss
strategy.close(id="BB_VWAP_PP", comment="P" , qty=strategy.position_size/3, when= crossunder(myVwap,upperBand) and strategy.position_size>=1 and close>strategy.position_avg_price) //
strategy.close(id="BB_VWAP_PP", comment="Exit All", when=crossunder(myVwap,lowerBand) and strategy.position_size>=1 )
//strategy.close(id="BBofVwapWithFibPivot", comment="Exit All", when=crossunder(close,vPP) and strategy.position_size>=1 )
strategy.close(id="BB_VWAP_PP", comment="Stop Loss Exit", when=crossunder(close,stopLossVal) and strategy.position_size>=1 )