यह रणनीति ट्रेडिंग के बाद स्वचालित ट्रेंड को लागू करने के लिए मूविंग एवरेज क्रॉसओवर और एटीआर इंडिकेटर का उपयोग करती है। यह लंबे समय तक जाती है जब तेज ईएमए धीमे ईएमए से ऊपर पार हो जाती है, और कम हो जाती है जब तेज ईएमए धीमे ईएमए से नीचे पार हो जाती है। साथ ही, यह ट्रेंड की दिशा का न्याय करने के लिए एटीआर इंडिकेटर का उपयोग करता है और केवल ट्रेडिंग सिग्नल भेजता है जब एटीआर इंगित करता है कि एक प्रवृत्ति मौजूद है।
यह रणनीति मुख्य रूप से दो तकनीकी संकेतकों पर आधारित हैः
ईएमए लाइनेंः इसमें दो ईएमए लाइनें अलग-अलग मापदंडों के साथ उपयोग की जाती हैं, तेज़ और धीमी। जब तेज़ ईएमए धीमी ईएमए के ऊपर पार करता है, तो इसे एक लंबा संकेत माना जाता है। जब तेज़ ईएमए धीमी ईएमए के नीचे पार करता है, तो इसे एक छोटा संकेत माना जाता है।
एटीआर संकेतक: एटीआर संकेतक वर्तमान चाल की प्रवृत्ति का न्याय करने के लिए मूल्य उतार-चढ़ाव की परिमाण और शक्ति को मापता है। छोटे एटीआर मूल्य समेकन का संकेत देते हैं जबकि बड़े ऊपर की ओर एटीआर मूल्य एक अपट्रेंड का सुझाव देते हैं, और बड़े नीचे की ओर एटीआर मूल्य एक डाउनट्रेंड का सुझाव देते हैं।
व्यापार के अवसरों की पहचान करने के लिए ईएमए क्रॉसओवर और कम ट्रेंडनेस व्यवस्थाओं से बचने के लिए एटीआर फ़िल्टर को जोड़कर, रणनीति का उद्देश्य बाजार की उथल-पुथल के दौरान पिटाई से बचना है।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
केवल तब ही व्यापार करें जब एटीआर एक प्रवृत्ति की पहचान करता है, जो गैर-दिशात्मक व्यवस्थाओं के दौरान पिटाई से बचने में मदद करता है।
व्यापार संकेतों की पहचान करने के लिए सरल तेज बनाम धीमी ईएमए क्रॉसओवर तर्क का उपयोग करना।
पैरामीटर समायोजन के माध्यम से अनुकूलन योग्य ईएमए संवेदनशीलता और चिकनाई।
केवल दो सरल संकेतकों के साथ निर्मित पूर्ण स्वचालित व्यापार प्रणाली, पाइन संपादक में आसानी से लागू की जाती है।
निरंतर पैरामीटर tweaking के लिए न्यूनतम आवश्यकता,
ध्यान देने योग्य कुछ जोखिमों में शामिल हैंः
ईएमए क्रॉसओवर गलत संकेत उत्पन्न कर सकते हैं, जिससे अनावश्यक नुकसान हो सकते हैं। चिकनी ईएमए पैरामीटर मदद कर सकते हैं।
एटीआर ट्रेंड जजमेंट भी गलतियों के लिए प्रवण हो सकता है, ट्रेडिंग के अवसरों को खो सकता है। एटीआर की सीमा मानों को ढीला किया जा सकता है।
उच्च समय-सीमा के मौलिक तत्वों पर विचार नहीं किया जाता है। प्रमुख समाचार घटनाएं ऐसे उलटफेरों को ट्रिगर कर सकती हैं जो तेजी से ईएमए क्रॉसओवर को याद कर सकती हैं, जिसके लिए मैन्युअल हस्तक्षेप की आवश्यकता होती है।
इन जोखिमों को अनुकूलन के माध्यम से कम किया जा सकता है।
मुख्य अनुकूलन दिशाओं में शामिल हैंः
एक संयुक्त प्रणाली बनाने और संकेत की सटीकता में सुधार के लिए अन्य संकेतकों को जोड़ना। उदाहरण - ओवरबॉट/ओवरसोल्ड जोखिमों से बचने के लिए आरएसआई को एकीकृत करना।
ईएमए और एटीआर मापदंडों का चयन करना जो विशेष बाजार के लिए अधिक उपयुक्त हैं।
स्थिर स्थैतिक मूल्यों के बजाय वर्तमान बाजार स्थितियों के आधार पर संकेतकों को समायोजित करने के लिए मशीन लर्निंग के माध्यम से गतिशील पैरामीटर अनुकूलन को लागू करना।
कुल मिलाकर यह एक बहुत ही व्यावहारिक प्रवृत्ति है जो रणनीति का अनुसरण करती है। केवल दो संकेतकों के एक सरल संयोजन के साथ, यह एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली का निर्माण करता है। पैरामीटर समायोजन के माध्यम से इसे विभिन्न वरीयताओं और शैलियों वाले व्यापारियों के लिए अनुकूलित किया जा सकता है। साथ ही, आगे का विस्तार और अनुकूलन रणनीति प्रदर्शन को और भी बेहतर बना सकता है। मजबूत अनुकूलन क्षमता के साथ जोड़ा गया सरल लेकिन प्रभावी ट्रेडिंग तर्क इसे शोध और दीर्घकालिक रूप से लागू करने के लिए एक सार्थक मात्रात्मक रणनीति बनाता है।
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This strategy has been created for GMT trade 4h by Zhukov //@version=5 strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD) // INPUT: // Options to enter fast and slow Exponential Moving Average (EMA) values emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999) emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999) // Option to select trade directions tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both') // Options that configure the backtest date range startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00')) endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59')) // CALCULATIONS: // Use the built-in function to calculate two EMA lines fastEMA = ta.ema(close, emaFast) slowEMA = ta.ema(close, emaSlow) emapos = ta.ema(close,200) // PLOT: // Draw the EMA lines on the chart plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2) plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2) plot(series=emapos, color=color.new(color.red, 0), linewidth=2) // CONDITIONS: // Check if the close time of the current bar falls inside the date range inDateRange = true // Translate input into trading conditions longOK = tradeDirection == 'Long' or tradeDirection == 'Both' shortOK = tradeDirection == 'Short' or tradeDirection == 'Both' // Decide if we should go long or short using the built-in functions longCondition = ta.crossover(fastEMA, slowEMA) shortCondition = ta.crossunder(fastEMA, slowEMA) // ORDERS: // Set take profit and stop loss percentages take_profit_percent = input(0, title="Take Profit Percent") stop_loss_percent = input(0, title="Stop Loss Percent") // Submit entry (or reverse) orders atrPeriod = input(12, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [supertrend, direction] = ta.supertrend(factor, atrPeriod) bodyMiddle = plot((open + close) / 2, display=display.none) upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false) if longCondition and inDateRange if longOK and direction<0 strategy.entry(id='long', direction=strategy.long, alert_message = "LONG") if shortCondition and inDateRange if shortOK and direction>0 strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT") // Submit exit orders in the cases where we trade only long or only short if strategy.position_size > 0 and take_profit_percent strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent) if strategy.position_size > 0 and stop_loss_percent strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent) if strategy.position_size < 0 and stop_loss_percent strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent) if strategy.position_size < 0 and take_profit_percent strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)