একাধিক মুভিং এভারেজ বলিঙ্গার ব্যান্ড কৌশল


সৃষ্টির তারিখ: 2024-02-06 15:08:26 অবশেষে সংশোধন করুন: 2024-02-06 15:08:26
অনুলিপি: 4 ক্লিকের সংখ্যা: 632
1
ফোকাস
1617
অনুসারী

একাধিক মুভিং এভারেজ বলিঙ্গার ব্যান্ড কৌশল

ওভারভিউ

এই কৌশলটি বিভিন্ন ধরণের মুভিং এভারেজ ইনপুট করে ব্রিন বন্ড তৈরি করে যাতে আরও বেশি ব্যবসায়ের সুযোগ পাওয়া যায়। এটি 12 টি মুভিং এভারেজ প্রকারের প্রস্তাব দেয় যা সর্বোত্তম প্যারামিটার পাওয়ার জন্য নমনীয়ভাবে একত্রিত হতে পারে।

কৌশল নীতি

এই কৌশলটির মূল অংশটি হল ব্যবহারকারীর ইনপুট করা 12 টিরও বেশি মুভিং এভারেজ প্রকারের ব্যবহার করা, যার মধ্যে রয়েছে এসএমএ, ইএমএ, ডাব্লুএমএ, ডিইএমএ, টিএমএ, ভিএআর, ডাব্লুএমএ, জেলেমা, টিএসএফ, হুল, টিল ইত্যাদি, যা ব্রিনলেডের সূচকগুলির সাথে একত্রিত হয়ে একটি ট্রেডিং সংকেত তৈরি করে। ব্রিনলেডের মধ্যম ট্র্যাকটি একটি পছন্দসই মুভিং এভারেজ ব্যবহার করে, যার মধ্যম ট্র্যাকটি ধনাত্মকভাবে একটি স্ট্যান্ডার্ড ডিফারেনশিয়াল। যখন দামটি উপরের ট্র্যাকটি ভেঙে যায়, তখন এটি ফাঁকা করে; যখন দামটি নীচের ট্র্যাকটি ভেঙে যায়, তখন এটি আরও বেশি করে। বিভিন্ন মুভিং এভারেজ প্রকারের সংমিশ্রণ দ্বারা, প্যারামিটারগুলি আরও স্থিতিশীল এবং সঠিক ট্রেডিং সিগন্যালের জন্য অনুকরণ করা যায়।

কোডটি মূলত নিম্নলিখিত অংশে বিভক্তঃ

  1. SMA, EMA, WMA ইত্যাদি সহ ১২টি প্রকারের চলমান গড়ের জন্য গণনা ফাংশন সংজ্ঞায়িত করুন।
  2. getMA ফাংশন, যা mav ইনপুট প্যারামিটার অনুযায়ী সংশ্লিষ্ট চলমান গড় প্রদান করে।
  3. বুলিন বন্ডের মধ্যম, উপরের এবং নিচের ট্রেল লাইন গণনা করুন। মধ্যম ট্রেলটি getMA ফাংশন ব্যবহার করে প্রাপ্ত চলমান গড়।
  4. ব্রীণবেন্ড আঁকা।
  5. প্রবৃদ্ধি সংকেত এবং খালি সংকেত। দাম উর্ধ্বমুখী হলে শূন্য মাথা, নিম্নমুখী হলে মাল্টি মাথা।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল এটি একাধিক চলমান গড়ের প্রকার সরবরাহ করে। বিভিন্ন বাজারের পরিস্থিতিতে, চলমান গড়গুলি দ্রুত এবং ধীরে ধীরে প্রতিক্রিয়া দেখায়, একাধিক ধরণের চলমান গড় ব্যবহার করে কৌশলটির অভিযোজনকে ব্যাপকভাবে বাড়িয়ে তুলতে পারে। এছাড়াও, কৌশলটি চলমান গড়ের দৈর্ঘ্যের প্যারামিটারগুলিকে অনুকূল করতে পারে, সর্বোত্তম সমন্বয় খুঁজে পেতে এবং আরও সঠিক ব্যবসায়ের জন্য। সংকেত

ঝুঁকি বিশ্লেষণ

এই কৌশলটির প্রধান ঝুঁকি হল যে, মুভিং এভারেজ নিজেই সংকেত বিভ্রান্তি সৃষ্টি করে, যার ফলে একাধিক ভুয়া ব্রেক হতে পারে। উপরন্তু, বুলিন-ব্যান্ডের সূচকগুলিও তীব্র মূল্য পরিবর্তনের জন্য সংবেদনশীল, যার ফলে মধ্যবর্তী লাইনগুলি কার্যকরভাবে মূল্য অনুসরণ করতে পারে না। এর জন্য আরও স্থিতিশীল মুভিং এভারেজ প্রকারের প্রয়োজন এবং প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা প্রয়োজন।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. বিভিন্ন চলমান গড় সমন্বয় পরীক্ষা করে, সর্বোত্তম প্যারামিটার খুঁজতে এবং সংকেত স্থিতিশীলতা উন্নত করতে।
  2. ব্যক্তিগত ত্রুটিপূর্ণ সংকেত থেকে ক্ষতির নিয়ন্ত্রণ নিশ্চিত করার জন্য একটি স্টপ লস কৌশল যুক্ত করা হয়েছে।
  3. MACD, KD ইত্যাদির মতো অন্যান্য সূচকগুলির সাথে মিলিত হয়ে ঘন ঘন লেনদেন এড়াতে সংকেতগুলি ফিল্টার করুন।
  4. তহবিল ব্যবস্থাপনা অপ্টিমাইজ করুন, পজিশন সামঞ্জস্য করুন।

সারসংক্ষেপ

এই কৌশলটি সামগ্রিকভাবে অত্যন্ত উদ্ভাবনী, এটি ব্রিন-ব্যান্ড সূচকটির জন্য আরও সমৃদ্ধ বিভাগীয় অ্যাপ্লিকেশন সরবরাহ করে। পোর্টফোলিও চলমান গড়ের সমন্বয় করে আরও সঠিক এবং স্থিতিশীল সংকেত পাওয়া যায়। এটি ব্রিন-ব্যান্ড কৌশলটির অপ্টিমাইজেশনের জন্য নতুন ধারণাও সরবরাহ করে। প্যারামিটার সমন্বয় এবং অপ্টিমাইজেশনের মাধ্যমে, কৌশলটি একটি খুব কার্যকর ব্যবসায়ের সরঞ্জাম হতে পারে।

কৌশল সোর্স কোড
/*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)