মুভিং এভারেজের উপর ভিত্তি করে MACD গতিশীল ট্রেন্ড বিচার কৌশল


সৃষ্টির তারিখ: 2024-02-19 10:48:11 অবশেষে সংশোধন করুন: 2024-02-19 10:48:11
অনুলিপি: 0 ক্লিকের সংখ্যা: 598
1
ফোকাস
1617
অনুসারী

মুভিং এভারেজের উপর ভিত্তি করে MACD গতিশীল ট্রেন্ড বিচার কৌশল

ওভারভিউ

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

কৌশল নীতি

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

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

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

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

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

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

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

সারসংক্ষেপ

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

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