বিপরীতমুখী দ্বৈত চলমান গড় ক্রসওভার কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-১২-২৮ ১২ঃ০০ঃ২৭
ট্যাগঃ

img

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

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

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

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

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

সংক্ষিপ্তসারঃ এই কৌশলটি চলমান গড়ের সময়কালের সর্বোত্তম সংমিশ্রণটি খুঁজে পেতে দ্বৈত চলমান গড়ের পরীক্ষা করার জন্য traditionalতিহ্যবাহী চলমান গড় ক্রসওভার কৌশলটির কাঠামো গ্রহণ করে। একই সাথে, এটি চলমান গড়ের 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")



আরো