یہ حکمت عملی 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 )