ডাবল মুভিং এভারেজ ক্রসওভার স্ট্র্যাটেজির রিভার্সাল


সৃষ্টির তারিখ: 2023-12-28 12:00:27 অবশেষে সংশোধন করুন: 2023-12-28 12:00:27
অনুলিপি: 0 ক্লিকের সংখ্যা: 543
1
ফোকাস
1623
অনুসারী

ডাবল মুভিং এভারেজ ক্রসওভার স্ট্র্যাটেজির রিভার্সাল

সংক্ষিপ্ত বিবরণঃ এই কৌশলটি একটি ক্লাসিক ট্রেডিং কৌশল যা সমান্তরাল ক্রস-লাইনের উপর ভিত্তি করে, সূচকটি দ্বি-সমান্তরাল লাইন ব্যবহার করে, যার মধ্যে রয়েছে সরল চলমান গড় ((এসএমএ), সূচকীয় চলমান গড় ((ইএমএ), লিনিয়ার ওজনের চলমান গড় ((ভিডাব্লুএমএ) এবং কম্পনশীল ওজনের চলমান গড় ((এইচএমএ)) ।

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

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

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

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

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

কৌশল সোর্স কোড
/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(5, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)

//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition) // and time>timestamp(2018,6,1,9,30)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition) // and time>timestamp(2018,6,1,9,30)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
    strategy.close("Long")