एमएसीडी मूविंग एवरेज संयोजन क्रॉस पीरियड डायनेमिक ट्रेंड रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-19 10:48:11
टैगः

img

अवलोकन

यह रणनीति समय अवधि में गतिशील प्रवृत्ति निर्णय को महसूस करने के लिए एमएसीडी संकेतक के चलती औसत के संयोजन पर आधारित है। यह एक अधिक क्लासिक प्रवृत्ति ट्रैकिंग रणनीति से संबंधित है। यह मुख्य रूप से एमएसीडी के तेजी से और धीमी गति से चलती औसत के बीच अंतर और इसके संकेत रेखा के बीच संबंध के माध्यम से वर्तमान प्रवृत्ति दिशा और ताकत का न्याय करता है। साथ ही, सटीकता में सुधार और गतिशील रूप से पदों को समायोजित करने के लिए क्रॉस-पीरियड निर्णय पेश किया जाता है।

रणनीतिक सिद्धांत

  1. एमएसीडी संकेतक के तेज और धीमे चलती औसत और इसके संकेत रेखा संबंध के बीच अंतर के आधार पर वर्तमान प्रवृत्ति दिशा का न्याय करें।
  2. सिग्नल लाइन के ऊपर MACD अंतर पार करना एक लंबा संकेत है, और नीचे पार करना एक छोटा संकेत है।
  3. रणनीति संकेतों को बढ़ाने के लिए एक ही दिशा में एमएसीडी अंतर और एमएसीडी हिस्टोग्राम का परिचय दें।
  4. क्रॉस-साइकिल जजमेंट मॉड्यूल जोड़ें, सिग्नल फिल्टर और स्थिति समायोजन आधार के रूप में उच्च समय सीमा के एमएसीडी संकेतक का उपयोग करें।
  5. गतिशील स्थिति समायोजन, क्रॉस-साइकिल सिग्नल कमजोर होने पर स्थिति का आकार कम करना, और सिग्नल बढ़ाए जाने पर स्थिति बढ़ाना।

लाभ विश्लेषण

  1. प्रवृत्ति की दिशा निर्धारित करने में एमएसीडी की प्रभावशीलता अपेक्षाकृत अधिक है।
  2. एमएसीडी अंतर और हिस्टोग्राम दोहरे सत्यापन का संयोजन संकेत की सटीकता में सुधार कर सकता है।
  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')



अधिक