
এই কৌশলটি বিভিন্ন ধরণের মুভিং এভারেজ ইনপুট করে ব্রিন বন্ড তৈরি করে যাতে আরও বেশি ব্যবসায়ের সুযোগ পাওয়া যায়। এটি 12 টি মুভিং এভারেজ প্রকারের প্রস্তাব দেয় যা সর্বোত্তম প্যারামিটার পাওয়ার জন্য নমনীয়ভাবে একত্রিত হতে পারে।
এই কৌশলটির মূল অংশটি হল ব্যবহারকারীর ইনপুট করা 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)