یہ حکمت عملی زیادہ سے زیادہ تجارتی مواقع دریافت کرنے کے لئے مختلف قسم کے چلتے ہوئے اوسط کے ساتھ بولنگر بینڈ کی تعمیر کرتی ہے۔ یہ انتخاب کرنے کے لئے 12 قسم کے چلتے ہوئے اوسط فراہم کرتا ہے ، جس سے زیادہ سے زیادہ پیرامیٹرز کے ل flexible لچکدار امتزاج کی اجازت ملتی ہے۔
اس حکمت عملی کا مرکز صارف کے ان پٹ کے ذریعہ منتخب کردہ حرکت پذیر اوسط کی اقسام کا استعمال کرنا ہے ، بشمول ایس ایم اے ، ای ایم اے ، ڈبلیو ایم اے ، ڈی ای ایم اے ، ٹی ایم اے ، وی اے آر ، ڈبلیو ایم اے ، زیلما ، ٹی ایس ایف ، ہول ، ٹیل وغیرہ ، مجموعی طور پر 12 ، بولنگر بینڈ کے ساتھ مل کر تجارتی سگنل بنانے کے لئے۔ بولنگر بینڈ کی درمیانی بینڈ منتخب شدہ حرکت پذیر اوسط کو اپناتا ہے ، جبکہ اوپری اور نچلی بینڈ درمیانی بینڈ سے ایک مثبت / منفی معیاری انحراف ہیں۔ جب قیمت اوپری بینڈ کو توڑتی ہے تو مختصر ، جب قیمت نچلی بینڈ کو توڑتی ہے۔ مختلف قسم کے حرکت پذیر اوسط کو جوڑ کر ، پیرامیٹرز کو زیادہ مستحکم اور درست تجارتی سگنل کے لئے بہتر بنایا جاسکتا ہے۔
کوڈ کے اہم اجزاء یہ ہیں:
اس حکمت عملی کا سب سے بڑا فائدہ متعدد قسم کے چلتے ہوئے اوسط فراہم کرنا ہے۔ مختلف مارکیٹ کے ماحول رد عمل کی حساسیت کے لحاظ سے مختلف چلتے ہوئے اوسط کے مطابق ہیں۔ متعدد چلتے ہوئے اوسط اقسام کو اپنانے سے حکمت عملی کی موافقت میں بہت اضافہ ہوتا ہے۔ اس کے علاوہ ، یہ حکمت عملی بہترین مجموعے تلاش کرنے اور اس طرح زیادہ درست تجارتی سگنل حاصل کرنے کے لئے ، چلتے ہوئے اوسط کی لمبائی کے لئے پیرامیٹر کی اصلاح کی اجازت دیتی ہے۔
اس حکمت عملی کا بنیادی خطرہ خود حرکت پذیر اوسط سے آنے والے افراتفری سگنلز میں ہے ، جس میں متعدد جھوٹے بریک آؤٹ کے امکانات ہیں۔ نیز ، بولنگر بینڈ اشارے قیمتوں میں جنگلی اتار چڑھاؤ کے لئے کافی حساس ہیں ، جس سے درمیانی بینڈ کو قیمت کو مؤثر طریقے سے ٹریک کرنا مشکل ہوجاتا ہے۔ اس سے پیرامیٹر کی مناسب ترتیب کے ساتھ مل کر زیادہ مستحکم قسم کے حرکت پذیر اوسط استعمال کرنے کی ضرورت ہوتی ہے۔
حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
یہ حکمت عملی مجموعی طور پر کافی جدید ہے ، جو بولنگر بینڈ اشارے کو زیادہ نفیس ایپلی کیشنز کے ساتھ افزودہ کرتی ہے۔ مشترکہ حرکت پذیر اوسط کو ایڈجسٹ کرکے ، زیادہ درست اور مستحکم سگنل حاصل کیے جاسکتے ہیں۔ یہ بولنگر بینڈ کی حکمت عملیوں کو بہتر بنانے کے لئے نئے خیالات بھی کھولتا ہے۔ پیرامیٹر ٹیوننگ اور اصلاحات کے ساتھ ، یہ حکمت عملی ایک بہت ہی عملی تجارتی آلہ بن سکتی ہے۔
/*backtest start: 2023-01-30 00:00:00 end: 2023-10-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Bollinger Bands Strategy (MA type)", overlay=true) src = input(close, title="Source") length = input(20,step=10, minval=1) mult = input(1,type=input.float, minval=0.001, maxval=50, title="StdDev") length1=input(26, "Long Moving Average Length", minval=1) length2=input(9, "Trigger Length", minval=1) T3a1 = input(0.7, "TILLSON T3 Volume Factor", step=0.1) //////////// mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "DEMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "HULL", "TILL"]) Var_Func(src,length)=> valpha=2/(length+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=sum(vud1,9) vDD=sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) VAR=0.0 VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1]) VAR=Var_Func(src,length) DEMA = ( 2 * ema(src,length)) - (ema(ema(src,length),length) ) Wwma_Func(src,length)=> wwalpha = 1/ length WWMA = 0.0 WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1]) WWMA=Wwma_Func(src,length) Zlema_Func(src,length)=> zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2 zxEMAData = (src + (src - src[zxLag])) ZLEMA = ema(zxEMAData, length) ZLEMA=Zlema_Func(src,length) Tsf_Func(src,length)=> lrc = linreg(src, length, 0) lrc1 = linreg(src,length,1) lrs = (lrc-lrc1) TSF = linreg(src, length, 0)+lrs TSF=Tsf_Func(src,length) HMA = wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length))) T3e1=ema(src, length) T3e2=ema(T3e1,length) T3e3=ema(T3e2,length) T3e4=ema(T3e3,length) T3e5=ema(T3e4,length) T3e6=ema(T3e5,length) T3c1=-T3a1*T3a1*T3a1 T3c2=3*T3a1*T3a1+3*T3a1*T3a1*T3a1 T3c3=-6*T3a1*T3a1-3*T3a1-3*T3a1*T3a1*T3a1 T3c4=1+3*T3a1+T3a1*T3a1*T3a1+3*T3a1*T3a1 T3=T3c1*T3e6+T3c2*T3e5+T3c3*T3e4+T3c4*T3e3 getMA(src, length) => ma = 0.0 if mav == "SMA" ma := sma(src, length) ma if mav == "EMA" ma := ema(src, length) ma if mav == "WMA" ma := wma(src, length) ma if mav == "DEMA" ma := DEMA ma if mav == "TMA" ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) ma if mav == "VAR" ma := VAR ma if mav == "WWMA" ma := WWMA ma if mav == "ZLEMA" ma := ZLEMA ma if mav == "TSF" ma := TSF ma if mav == "HULL" ma := HMA ma if mav == "TILL" ma := T3 ma ma ////////// basis = getMA(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev offset = input(0, "Offset",minval = -500, maxval = 500) plot(basis, "Basis",color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) ///////// buyEntry = crossover(src, lower) sellEntry = crossunder(src, upper) if (crossover(src, lower)) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(src, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)