এমএসিডি মুভিং এভারেজ সংমিশ্রণ ক্রস-পিরিয়ড ডায়নামিক ট্রেন্ড কৌশল

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

img

সারসংক্ষেপ

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

কৌশল নীতি

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

সুবিধা বিশ্লেষণ

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

ঝুঁকি বিশ্লেষণ এবং সমাধান

  1. এমএসিডি সিগন্যালগুলির বিলম্ব রয়েছে, যা সামান্য নিম্নতর সিগন্যাল প্রভাবের দিকে পরিচালিত করতে পারে।
  • সমাধানঃ দ্রুত এবং ধীর গতির গড়ের মধ্যে পার্থক্য বাড়ান যাতে আগে থেকে সংকেতগুলি ক্যাপচার করা যায়।
  1. ক্রস-সাইকেল সংকেতগুলি অবশ্যই সঠিক নয় এবং কৌশলগুলিকে বিভ্রান্ত করতে পারে।
  • সমাধানঃ একটি গতিশীল অবস্থান সমন্বয় প্রক্রিয়া প্রবর্তন করুন যাতে প্রধান চক্র কৌশলটি প্রভাবিত হয়।
  1. মাল্টি-ফ্যাক্টর সমন্বিত কৌশলগুলির সামগ্রিক স্থিতিশীলতা অপর্যাপ্ত হতে পারে।
  • সমাধানঃ সামগ্রিক দৃঢ়তা নিশ্চিত করার জন্য প্রতিটি কৌশল পরামিতি ওজন অনুপাত সাবধানে সামঞ্জস্য করুন।

অপ্টিমাইজেশান নির্দেশাবলী

  1. বিভিন্ন চক্র প্যারামিটার সমন্বয়ের প্রভাব পরীক্ষা করুন।
  2. কৌশল কার্যকারিতা উপর বিভিন্ন ক্রস-চক্র সমন্বয় প্রভাব পরীক্ষা।
  3. এমএসিডি সূচক প্যারামিটার যেমন দ্রুত এবং ধীর গতির গড় চক্র, সংকেত লাইন চক্র ইত্যাদি সামঞ্জস্য করুন।
  4. বিভিন্ন অবস্থান সমন্বয় ফ্যাক্টর প্রভাব পরীক্ষা করুন।
  5. অন্যান্য জাতের উপর ব্যাকটেস্টের প্রভাব পরীক্ষা করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@temelbulut
//@version=5
strategy('MACD Strategy %80', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50)

fastLength = input.int(title='MACD Fast Length', defval=12, minval=1)
slowLength = input.int(title='MACD Slow Length', defval=26, minval=1)
signalLength = input.int(title='MACD Signal Length', defval=9, minval=1)
crossscore = input(title='Cross (buy/sell) Score', defval=10.)
indiside = input(title='indicator Direction Score', defval=8)
histside = input(title='Histogram Direction Score', defval=2)
shotsl = input(title='Show Stop Loss Line', defval=false)
Mult = input.float(title='Stop Loss Factor', defval=1.2, minval=0.1, maxval=100)
Period = input.int(title='Stop Loss Period', defval=10, minval=1, maxval=100)
lookaheadi = input(title='Lookahead', defval=true)

HTF = timeframe.period == '1' ? '5' : timeframe.period == '3' ? '15' : timeframe.period == '5' ? '15' : timeframe.period == '15' ? '60' : timeframe.period == '30' ? '60' : timeframe.period == '45' ? '60' : timeframe.period == '60' ? '240' : timeframe.period == '120' ? '240' : timeframe.period == '180' ? '240' : timeframe.period == '240' ? 'D' : timeframe.period == 'D' ? 'W' : 'W'

calc = timeframe.period == '1' ? 5 : timeframe.period == '3' ? 5 : timeframe.period == '5' ? 3 : timeframe.period == '15' ? 4 : timeframe.period == '30' ? 4 : timeframe.period == '45' ? 4 : timeframe.period == '60' ? 4 : timeframe.period == '120' ? 3 : timeframe.period == '180' ? 3 : timeframe.period == '240' ? 6 : timeframe.period == 'D' ? 5 : 1

count() =>
    indi = ta.ema(close, fastLength) - ta.ema(close, slowLength)
    signal = ta.ema(indi, signalLength)
    Anlyse = 0.0
    // direction of indi and histogram
    hist = indi - signal
    Anlyse := indi > indi[1] ? hist > hist[1] ? indiside + histside : hist == hist[1] ? indiside : indiside - histside : 0
    Anlyse += (indi < indi[1] ? hist < hist[1] ? -(indiside + histside) : hist == hist[1] ? -indiside : -(indiside - histside) : 0)
    Anlyse += (indi == indi[1] ? hist > hist[1] ? histside : hist < hist[1] ? -histside : 0 : 0)
    // cross now earlier ?
    countcross = indi >= signal and indi[1] < signal[1] ? crossscore : indi <= signal and indi[1] > signal[1] ? -crossscore : 0.
    countcross += nz(countcross[1]) * 0.6
    Anlyse += countcross
    nz(Anlyse)

Anlys = count()
AnlysHfrm = lookaheadi ? request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_on) : request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_off)
Result = (AnlysHfrm * calc + Anlys) / (calc + 1)

longCondition = ta.change(Result) != 0 and Result > 0
if longCondition
    strategy.entry('MACD Long', strategy.long,alert_message = 'MACD Long')

shortCondition = ta.change(Result) != 0 and Result < 0
if shortCondition
    strategy.entry('MACD Short', strategy.short,alert_message = 'MACD Short')

countstop(pos) =>
    Upt = hl2 - Mult * ta.atr(Period)
    Dnt = hl2 + Mult * ta.atr(Period)
    TUp = 0.
    TDown = 0.
    TUp := close[1] > TUp[1] ? math.max(Upt, TUp[1]) : Upt
    TDown := close[1] < TDown[1] ? math.min(Dnt, TDown[1]) : Dnt
    tslmtf = pos == 1 ? TUp : TDown
    tslmtf

pos = longCondition ? 1 : -1
stline = 0.
countstop__1 = countstop(pos)
security_1 = request.security(syminfo.tickerid, HTF, countstop__1)
stline := ta.change(time(HTF)) != 0 or longCondition or shortCondition ? security_1 : nz(stline[1])
plot(stline, color=shotsl ? color.rgb(148, 169, 18) : na, style=plot.style_line, linewidth=2, title='Stop Loss')



আরো