यह रणनीति एमएसीडी संकेतक और इसके संकेत रेखा चलती औसत के बीच क्रॉसओवर की गणना करके प्रवृत्ति की दिशा निर्धारित करती है, और प्रवृत्ति को ट्रैक करने के लिए ईएमए संकेतक के साथ वर्तमान प्रवृत्ति की ताकत का न्याय करती है। जब एमएसीडी रेखा संकेत रेखा को ऊपर की ओर तोड़ती है और नीचे की ओर तोड़ती है तो यह लंबी हो जाती है। ईएमए रेखा झूठे ब्रेकआउट को फ़िल्टर करने के लिए प्रवृत्ति की ताकत का भी न्याय कर सकती है।
इस रणनीति का मूल मैकडी संकेतक के आधार पर प्रवृत्ति दिशा और प्रवेश समय निर्धारित करना है। मैकडी लाइन और सिग्नल लाइन के बीच क्रॉसओवर मूल्य प्रवृत्ति में उलटफेर को इंगित करता है। इसलिए, ब्रेकआउट दिशा के अनुसार लंबी और छोटी स्थिति निर्धारित की जाती है। विशेष रूप से, जब समापन मूल्य ईएमए लाइन से ऊपर होता है और मैकडी लाइन नीचे से सिग्नल लाइन के माध्यम से टूट जाती है, तो लंबी; जब समापन मूल्य ईएमए लाइन से नीचे होता है और मैकडी लाइन ऊपर से सिग्नल लाइन के माध्यम से टूटती है, तो छोटी जाती है।
ईएमए रेखा प्रवृत्ति का आकलन करने में सहायता करती है। यदि कीमत ईएमए रेखा से ऊपर है, तो यह एक ऊपर की प्रवृत्ति को इंगित करती है। इस समय, एमएसीडी के नीचे से एक सफलता एक स्वर्ण क्रॉस सिग्नल बनाने की संभावना है। यदि कीमत ईएमए रेखा से नीचे है, तो यह एक नीचे की प्रवृत्ति को इंगित करती है। इस समय, एमएसीडी के ऊपर से एक सफलता एक मृत्यु क्रॉस सिग्नल बनाने की संभावना है। ईएमए लंबाई भी मध्य से दीर्घकालिक प्रवृत्ति निर्णय की डिग्री निर्धारित करती है।
इस प्रकार, हम समय पर बाजार में प्रवेश कर सकते हैं जब कीमत एक नई प्रवृत्ति बनाने के लिए उलटना शुरू करती है, एक प्रवृत्ति ट्रैकिंग प्रभाव प्राप्त करती है।
यह रणनीति दोहरी निर्णय की शर्तों को जोड़ती है, कीमतों की प्रवृत्ति दिशा को ध्यान में रखते हुए और विशिष्ट प्रवेश समय निर्धारित करने के लिए संकेतकों का उपयोग करते हुए, झूठे ब्रेकआउट के जोखिम से बचते हुए, और रणनीति की विश्वसनीयता को बढ़ाती है। अकेले एमएसीडी संकेतक का उपयोग करने की तुलना में, यह रणनीति एक नई प्रवृत्ति की शुरुआत को अधिक सटीक रूप से निर्धारित कर सकती है।
ईएमए रेखा का अनुप्रयोग भी रणनीति को अल्पकालिक उतार-चढ़ाव के प्रभावों को फ़िल्टर करने और मध्यम और दीर्घकालिक रुझानों में कुछ हद तक लॉक करने में सक्षम बनाता है। यह उलटफेर का न्याय करने में एमएसीडी संकेतक की प्रभावशीलता को विकसित करने के लिए बहुत सहायक है।
इसके अतिरिक्त, रणनीति लंबी और छोटी दोनों स्थितियों को निर्धारित करती है, जिन्हें बैल और भालू पतंग बाजारों पर लागू किया जा सकता है, जिससे रणनीति की अनुकूलन क्षमता बढ़ जाती है।
इस रणनीति का मुख्य जोखिम यह है कि एमएसीडी संकेतक में ही फैकआउट संकेतों का गलत आकलन करने की उच्च संभावना है। इस बिंदु पर, ईएमए लाइन के सहायक कार्य की आवश्यकता होती है, लेकिन विशेष बाजार स्थितियों में विफलताएं अभी भी हो सकती हैं।
इसके अतिरिक्त, रणनीति स्टॉप लॉस और लाभ लेने की शर्तों को सेट करने के लिए लाभ कारक को अपनाती है, जिसमें कुछ व्यक्तिपरकता शामिल होती है। अनुचित सेटिंग्स रणनीति के प्रदर्शन को भी प्रभावित कर सकती हैं।
अंत में, रणनीति केवल खाता के स्वामित्व के 100% के लिए स्थिति का आकार निर्धारित करती है, फंड प्रबंधन के मुद्दे पर विचार किए बिना, जो लाइव ट्रेडिंग में भी कुछ जोखिम पैदा करता है।
इस रणनीति के लिए मुख्य अनुकूलन दिशाओं में शामिल हैंः
गलत संकेत उत्पन्न करने की संभावना से बचने के लिए कई संकेतकों के संयोजन बनाने के लिए निर्णय के लिए अन्य संकेतकों को बढ़ाएं। उदाहरण के लिए, केडीजे और बीओएलएल पर विचार किया जा सकता है।
ईएमए लाइन की लंबाई को ट्रेंड दिशा का न्याय करने के लिए इष्टतम मापदंडों को खोजने के लिए बहु-पैरामीटर अनुकूलित किया जा सकता है।
MACD मापदंडों को पलटने के समय को निर्धारित करने के लिए सबसे सटीक मान खोजने के लिए भी और अनुकूलित किया जा सकता है।
एक पूंजी प्रबंधन मॉड्यूल जोड़ें। उदाहरण के लिए, लाभ कारक को एक गतिशील इनपुट के रूप में इस्तेमाल किया जा सकता है, और स्लिप स्टॉप भी सेट किया जा सकता है।
विभिन्न प्रकार के अनुबंधों पर प्रभावों का परीक्षण करें, जैसे क्रिप्टोकरेंसी, सूचकांक वायदा, आदि सबसे उपयुक्त व्यापारिक विविधता खोजने के लिए।
कुल मिलाकर, यह एमएसीडी ईएमए क्रॉसओवर ट्रेंड ट्रैकिंग रणनीति अपेक्षाकृत सरल और व्यावहारिक है। यह दोहरी संकेतक स्थितियों के माध्यम से सिग्नल विश्वसनीयता सुनिश्चित करता है और उचित स्टॉप लॉस और लाभ लेने के तरीकों के माध्यम से मुनाफे में ताले लगाता है। मुख्य अनुकूलन स्थान पैरामीटर चयन, संकेतक संयोजन, पूंजी प्रबंधन आदि में निहित है। आगे अनुकूलन और परीक्षण के साथ, यह माना जाता है कि यह रणनीति सबसे कुशल प्रवृत्ति ट्रैकिंग रणनीतियों में से एक बन सकती है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="MACD EMA Strategy", shorttitle="MACD EMA STRAT", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=5000, currency=currency.USD) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2016) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // STEP 2: // See if this bar's time happened on/after start date afterStartDate = true //EMA emasrc = close res = input(title="EMA Timeframe", type=input.resolution, defval="15") len1 = input(title="EMA Length", type=input.integer, defval=206) col1 = color.yellow // Calculate EMA ema1 = ema(emasrc, len1) emaSmooth = security(syminfo.tickerid, res, ema1, barmerge.gaps_on, barmerge.lookahead_off) // Draw EMA plot(emaSmooth, title="EMA", linewidth=1, color=col1) //MACD fast_length = input(title="Fast Length", type=input.integer, defval=15) slow_length = input(title="Slow Length", type=input.integer, defval=24) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=true) sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true) zeroline = 0 // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) //plot(macd, title="MACD", color=col_macd, transp=0) //plot(signal, title="Signal", color=col_signal, transp=0) //plot(zeroline, title="Zero Line", color=color.black, transp=0) ///////////////////////////LONG//////////////////////////////////////////////////////////////////// enablelong = input(true, title="Enable long?") //Long Signal upcondition = close > emaSmooth and close[1] > emaSmooth[1] macdunderhis = macd < zeroline macdcrossup = crossover(macd, signal) longcondition = upcondition and macdunderhis and macdcrossup //strategy buy long if (longcondition) and (afterStartDate) and strategy.opentrades < 1 and (enablelong == true) strategy.entry("long", strategy.long) //////////////////////////////////////SHORT////////////////////////////////////////////////////////////////////////////////// enableshort = input(true, title="Enable short?") //Short Signal downcondition = close < emaSmooth and close[1] < emaSmooth[1] macdoverhis = macd > zeroline macdcrosunder = crossunder(macd, signal) shortcondition = downcondition and macdoverhis and macdcrosunder //strategy buy short if (shortcondition) and (afterStartDate) and strategy.opentrades < 1 and (enableshort == true) strategy.entry("short", strategy.short) //////////////////////////////////////EXIT CONDITION////////////////////////////////////////////////////////////////////////////////// bought = strategy.position_size[1] < strategy.position_size sold = strategy.position_size[1] > strategy.position_size barsbought = barssince(bought) barssold = barssince(sold) //////LOWEST LOW////// //Lowest Low LONG profitfactorlong = input(title="ProfitfactorLong", type=input.float, step=0.1, defval=1.9) loLen = input(title="Lowest Low Lookback", type=input.integer, defval=46, minval=2) stop_level_long = lowest(low, loLen)[1] if strategy.position_size>0 profit_level_long = strategy.position_avg_price + ((strategy.position_avg_price - stop_level_long[barsbought])*profitfactorlong) strategy.exit(id="TP/ SL", stop=stop_level_long[barsbought], limit=profit_level_long) //Lowest Low SHORT profitfactorshort = input(title="ProfitfactorShort", type=input.float, step=0.1, defval=2.1) highLen = input(title="highest high lookback", type=input.integer, defval=25, minval=2) stop_level_short = highest(high, highLen)[1] if strategy.position_size<0 profit_level_short = strategy.position_avg_price - ((stop_level_short[barssold] - strategy.position_avg_price)*profitfactorshort) strategy.exit(id="TP/ SL", stop=stop_level_short[barssold], limit=profit_level_short) //PLOTT TP SL plot(stop_level_long, title="SL Long", linewidth=1, color=color.red) plot(stop_level_short, title="SL Short", linewidth=1, color=color.red)