এই কৌশলটি আরও বেশি ট্রেডিং সুযোগ আবিষ্কারের জন্য ইনপুট হিসাবে বিভিন্ন ধরণের চলমান গড়ের সাথে বোলিংজার ব্যান্ডগুলি তৈরি করে। এটি সর্বোত্তম পরামিতিগুলির জন্য নমনীয় সংমিশ্রণের অনুমতি দেয়।
এই কৌশলটির মূলটি হল ব্যবহারকারীর ইনপুট দ্বারা নির্বাচিত চলমান গড়ের ধরণগুলি ব্যবহার করা, যার মধ্যে এসএমএ, ইএমএ, ডাব্লুএমএ, ডিএমএ, টিএমএ, ভিএআর, ডাব্লুডাব্লুএমএ, জেএলইএমএ, টিএসএফ, হুল, টিল ইত্যাদি, মোট ১২ টি, বোলিংজার ব্যান্ডের সাথে একত্রিত হয়ে ট্রেডিং সিগন্যাল তৈরি করা। বোলিংজার ব্যান্ডের মাঝারি ব্যান্ডটি নির্বাচিত চলমান গড় গ্রহণ করে, যখন উপরের এবং নীচের ব্যান্ডগুলি মাঝারি ব্যান্ড থেকে এক ধনাত্মক / নেতিবাচক স্ট্যান্ডার্ড বিচ্যুতি। যখন দাম উপরের ব্যান্ডটি ভেঙে যায় তখন স্বল্প, যখন দাম নিম্ন ব্যান্ডটি ভেঙে যায়। বিভিন্ন ধরণের চলমান গড়ের সংমিশ্রণের মাধ্যমে, প্যারামিটারগুলি আরও স্থিতিশীল এবং নির্ভুল ট্রেডিং সংকেতের জন্য অনুকূলিত করা যেতে পারে।
কোডের প্রধান উপাদানগুলি হলঃ
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল একাধিক ধরণের চলমান গড় সরবরাহ করা। বিভিন্ন বাজারের পরিবেশগুলি প্রতিক্রিয়া সংবেদনশীলতার দিক থেকে বিভিন্ন চলমান গড়ের সাথে খাপ খায়। একাধিক চলমান গড়ের প্রকারগুলি গ্রহণ করা কৌশলটির অভিযোজনযোগ্যতাকে ব্যাপকভাবে উন্নত করে। এছাড়াও, এই কৌশলটি সর্বোত্তম সমন্বয় খুঁজে পেতে এবং তাই আরও নির্ভুল ট্রেডিং সংকেত পেতে চলমান গড়ের দৈর্ঘ্যের জন্য পরামিতি অপ্টিমাইজেশনের অনুমতি দেয়।
এই কৌশলটির প্রধান ঝুঁকি হ'ল মুভিং গড়ের থেকে নিজেই বিশৃঙ্খল সংকেত, একাধিক মিথ্যা ব্রেকআউটের সম্ভাবনা সহ। এছাড়াও, বোলিংজার ব্যান্ড সূচকটি দামের বন্য ওঠানামা সম্পর্কে বেশ সংবেদনশীল, যা মধ্যবিত্ত ব্যান্ডের জন্য কার্যকরভাবে মূল্য ট্র্যাক করা কঠিন করে তোলে। এটি সঠিক পরামিতি টিউনিং সহ আরও স্থিতিশীল ধরণের মুভিং গড় ব্যবহারের প্রয়োজন।
কৌশলটি নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ
কৌশলটি সামগ্রিকভাবে বেশ উদ্ভাবনী, আরও পরিশীলিত অ্যাপ্লিকেশনগুলির সাথে বোলিংজার ব্যান্ড সূচককে সমৃদ্ধ করে। সমন্বিত চলমান গড়গুলি সামঞ্জস্য করে, আরও নির্ভুল এবং স্থিতিশীল সংকেত পাওয়া যায়। এটি বোলিংজার ব্যান্ড কৌশলগুলি অনুকূলিতকরণের জন্য নতুন ধারণাও উন্মুক্ত করে। পরামিতি টিউনিং এবং অপ্টিমাইজেশানগুলির সাথে, এই কৌশলটি একটি খুব ব্যবহারিক ট্রেডিং সরঞ্জাম হয়ে উঠতে পারে।
/*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)