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


সৃষ্টির তারিখ: 2023-12-18 12:29:19 অবশেষে সংশোধন করুন: 2023-12-18 12:29:19
অনুলিপি: 1 ক্লিকের সংখ্যা: 437

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

ওভারভিউ

চলমান গড় ব্যান্ড কৌশলটি একাধিক চলমান গড়ের উপর ভিত্তি করে একটি প্রবণতা ট্র্যাকিং কৌশল। এটি একই সাথে দ্রুত চলমান গড় এবং ধীর চলমান গড় পর্যবেক্ষণ করে, যখন দামগুলি চলমান গড় ব্যান্ডটি ভেঙে দেয় তখন একটি লেনদেনের সংকেত দেয়। এই কৌশলটি একই সাথে প্রবণতা বিচার এবং ওভারবাইট ওভারসোলিং সূচককে সংযুক্ত করে, যা মধ্য-দীর্ঘ লাইনের প্রবণতা কার্যকরভাবে ধরা যায়।

কৌশল নীতি

এই কৌশলটি একই সাথে 5 টি দ্রুত চলমান গড় ব্যবহার করে (5, 8, 13, 20, এবং 30) এবং 4 টি ধীর চলমান গড় (4, 70, 105, এবং 150) । দ্রুত লাইনটি অভ্যন্তরীণ চলমান গড় গঠন করে এবং ধীর লাইনটি বাহ্যিক চলমান গড় গঠন করে। দাম যখন অভ্যন্তরীণ গড় অতিক্রম করে তখন একটি কেনার সংকেত উত্পন্ন হয় এবং যখন দাম অভ্যন্তরীণ গড় অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। জাল ব্রেকিংয়ের জন্য, এটির জন্য দামকে ক্রমাগত 3 টি কে লাইন অভ্যন্তরীণ চলমান গড় ব্রেকিংয়ের প্রয়োজন হয় এবং বেশিরভাগ দ্রুত চলমান গড়ও একই সাথে বিরতি দেয় যাতে একটি লেনদেনের সংকেত তৈরি হয়।

উপরন্তু, এই কৌশলটি দীর্ঘমেয়াদী প্রবণতা বিচার করে। কেবলমাত্র যখন দাম 200 দিনের চলমান গড়ের উপরে থাকে তখনই একটি কেনার সংকেত তৈরি করা বিবেচনা করা হয়। বিপরীতে, কেবলমাত্র যখন দাম 200 দিনের চলমান গড়ের নীচে পড়ে তখনই একটি বিক্রয় সংকেত তৈরি করা বিবেচনা করা হয়। দীর্ঘমেয়াদী প্রবণতা বিচার করে, সংস্কারের সময় বন্ধ হওয়া এড়ানো যায়।

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

এই কৌশলটির বেশ কিছু সুবিধা রয়েছেঃ

  1. মাল্টিপল মুভিং এভারেজ ডিজাইন, প্রবণতা দিক সঠিকভাবে বিচার করতে পারে। অভ্যন্তরীণ এবং বহিরাগত মুভিং এভারেজ ব্যান্ডগুলি দ্রুত এবং ধীর গড়ের সাথে মিলিত, মধ্য এবং দীর্ঘ লাইন প্রবণতা সনাক্তকরণের জন্য ভাল।

  2. ক্রমাগত ব্রেকিং প্রক্রিয়াটি কার্যকরভাবে মিথ্যা ব্রেকিং ফিল্টার করতে পারে। একই সাথে বেশিরভাগ দ্রুত গড় ব্রেকিংয়ের প্রয়োজন হয় যাতে ট্রেন্ডের পরিবর্তন নিশ্চিত হয়।

  3. দীর্ঘমেয়াদী প্রবণতা নির্ণয় করুন এবং পুনরুদ্ধারের সময় এটিকে বন্ধ করা এড়িয়ে চলুন। 200 তারিখের লাইনের সাথে সামঞ্জস্য রেখে, প্রবণতা পরিবর্তনের সময় কেবলমাত্র পজিশন স্থাপন করা বিবেচনা করুন।

  4. ট্রেন্ড ট্র্যাকিং এবং ওভারবয় ওভারসোলের সমন্বয়। মোবাইল এভারেজ নিজেই একটি ট্রেন্ড ট্র্যাকিং ফাংশন রয়েছে, এবং ওভারবয় ওভারসোল সূচকগুলির সাথে মিলিত হয়ে স্টপ লস সেট করে, ঝুঁকি নিয়ন্ত্রণ করা হয়।

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

এই কৌশলটি নিম্নলিখিত ঝুঁকির সাথে জড়িতঃ

  1. ব্রেকআউট ব্যর্থতার ঝুঁকি। যখন দামের একটি ভুয়া ব্রেকআউট হয়, তখন এই কৌশলটি ক্ষতির সৃষ্টিকে সম্পূর্ণরূপে এড়াতে পারে না।

  2. ঝড়ের প্রবণতার অধীনে ক্ষতির ঝুঁকি। যখন বাজার দীর্ঘস্থায়ীভাবে অস্থির হয়, তখন স্টপ লস পয়েন্টগুলি প্রায়শই আঘাত করা হতে পারে, যার ফলে ক্ষতির পরিমাণ বাড়তে পারে।

  3. প্যারামিটার অপ্টিমাইজেশনের ঝুঁকি। ভুলভাবে সরে যাওয়া গড়ের প্যারামিটার সেট করা ট্রেডিং সিগন্যালের ত্রুটি সৃষ্টি করতে পারে, যার ফলে ক্ষতি বাড়তে পারে।

সমাধানঃ

  1. যথাযথভাবে স্টপ-অফ পয়েন্টগুলিকে প্রশস্ত করা, যাতে দামগুলি চালানোর জন্য পর্যাপ্ত জায়গা থাকে। অথবা একটি স্টপ-অফ লাইন ব্যবহার করে, যাতে স্টপ-অফ লাইনগুলি দামের সাথে চালিত হয়।

  2. প্রবণতা নির্ণয়কারী সূচকগুলি যুক্ত করুন, ঝড়ের সময় কোনও দিকনির্দেশনা না দিয়ে পজিশন তৈরি করা এড়িয়ে চলুন। উদাহরণস্বরূপ, ডিএমআই, এমএসিডি ইত্যাদির মতো সূচকগুলির সাথে কাজ করে ফিল্টার করুন।

  3. ঐতিহাসিক পুনরুদ্ধার এবং প্যারামিটার অপ্টিমাইজেশান ব্যবহার করে, সর্বোত্তম প্যারামিটার সমন্বয় নির্বাচন করুন। প্যারামিটার প্রভাব ট্র্যাক করতে এবং গতিশীল অপ্টিমাইজেশান চালাতে।

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

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

  1. চলমান গড় প্যারামিটারগুলিকে অনুকূলিত করুন, সর্বোত্তম সময়কাল নির্বাচন করুন। বিভিন্ন সময়কালের চলমান গড়ের পুনরাবৃত্তি করে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পাওয়া যায়।

  2. প্রবণতা নির্ধারণের জন্য সূচকগুলি যুক্ত করুন। যেমন, RSI সূচকটি ওভারবয় ওভারসেলিংয়ের জন্য নির্ধারণ করে, ব্রিনব্যান্ডটি চ্যানেল ব্রেকিংয়ের জন্য নির্ধারণ করে ইত্যাদি। প্রবণতা অস্পষ্ট হলে অন্ধভাবে অবস্থান তৈরি করা এড়িয়ে চলুন।

  3. Adaptive Moving Average ব্যবহার করুন। বাজারের পরিবর্তন এবং অস্থিরতার উপর ভিত্তি করে রিয়েল-টাইমে Moving Average প্যারামিটারগুলিকে অপ্টিমাইজ করুন, যাতে এটি বর্তমান বাজারের অবস্থার সাথে আরও ভালভাবে খাপ খায়।

  4. মেশিন লার্নিং মডেলের সাথে ট্রেন্ডের সম্ভাব্যতা নির্ণয় করা। সম্ভাব্যতা মডেল তৈরি করা যাতে বিপর্যয়ের সম্ভাব্যতা মূল্যায়ন করা যায় এবং সিদ্ধান্ত গ্রহণের সিস্টেমকে প্রবেশের সময় নির্ধারণে সহায়তা করা যায়।

  5. স্টপ লস কৌশলকে অপ্টিমাইজ করুন যাতে স্টপ লস মূল্যকে আরও ভালভাবে ট্র্যাক করতে পারে। স্টপ লস লাইনকে আরও স্মার্ট করার জন্য যেমন ট্রেললিগ স্টপ লস বা স্বয়ংক্রিয় স্কেলিং স্টপ লস।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)



trima(_src, _len) =>
    sma(sma(_src, _len), _len)
hma(_src, _len) =>
    wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
    2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
    3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) + 
       ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
    ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)

ma(_src, _len) =>
    hma__1 = hma(_src, _len)
    ema_1 = ema(_src, _len)
    sma_1 = sma(_src, _len)
    wma_1 = wma(_src, _len)
    trima__1 = trima(_src, _len)
    zlema__1 = zlema(_src, _len)
    dema__1 = dema(_src, _len)
    tema__1 = tema(_src, _len)
    matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 : 
       matype == "wma" ? wma_1 : matype == "trima" ? trima__1 : 
       matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1

ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)




maColor(ma, maRef) =>
    if change(ma) <= 0 and ma05 < maRef
        color.new(color.red, 20)
    else
        if change(ma) >= 0 and ma05 > maRef
            color.new(color.navy, 20)
        else
            if change(ma) < 0 and ma05 > maRef
                color.new(color.red, 20)
            else
                if change(ma) >= 0 and ma05 < maRef
                    color.new(color.navy, 20)
                else
                    color.gray


aboveConfirmed(x,maRef)=>
    above=true
    for i=1 to x
        if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
            above:=false
    above


aboveMost(x,len)=>
    above=0
    boolean=false
    if close[len]>ma05[len]
        above:=above+1
    if close[len]>ma08[len]
        above:=above+1
    if close[len]>ma13[len]
        above:=above+1
    if close[len]>ma20[len]
        above:=above+1
    if close[len]>ma30[len]
        above:=above+1
    if close[len]>ma45[len]
        above:=above+1
    if close[len]>ma70[len]
        above:=above+1
    if close[len]>ma105[len]
        above:=above+1
    if close[len]>ma150[len]
        above:=above+1
    if close[len]>ma200[len]
        above:=above+1
    if(above>=x)
        boolean:=true
    boolean
    
belowMost(x,len)=>
    above=0
    boolean=false
    if close[len]<ma05[len]
        above:=above+1
    if close[len]<ma08[len]
        above:=above+1
    if close[len]<ma13[len]
        above:=above+1
    if close[len]<ma20[len]
        above:=above+1
    if close[len]<ma30[len]
        above:=above+1
    if close[len]<ma45[len]
        above:=above+1
    if close[len]<ma70[len]
        above:=above+1
    if close[len]<ma105[len]
        above:=above+1
    if close[len]<ma150[len]
        above:=above+1
    if close[len]<ma200[len]
        above:=above+1
    if(above>=x)
        boolean:=true
    boolean
        
        
belowConfirmed(x,maRef)=>
    below=true
    for i=1 to x
        if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
            below:=false
    below
            
            
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
            
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)


closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)

isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))




strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)