डबल मूविंग एवरेज क्रॉसओवर ट्रेंड रणनीति मूविंग एवरेज पर आधारित एक ट्रेडिंग रणनीति है। यह तेजी से ईएमए और धीमी एसएमए लाइनों के क्रॉसओवर का उपयोग खरीद और बिक्री संकेतों के रूप में करती है, और फिल्टर संकेतों के लिए एमएसीडी संकेतक विचलन को जोड़ती है। रणनीति में कीमत, प्रवृत्ति और गति जैसे कई कारकों पर विचार किया जाता है, जिससे एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली बनती है।
यह रणनीति दो चलती औसत, 200 दिनों की लंबाई के साथ ईएमए और 100 दिनों की लंबाई के साथ एसएमए का उपयोग करती है। जब कीमत दोनों लाइनों को ऊपर की ओर तोड़ती है, तो एक खरीद संकेत उत्पन्न होता है। जब कीमत दोनों लाइनों को नीचे की ओर तोड़ती है, तो एक बिक्री संकेत उत्पन्न होता है। यह प्रभावी रूप से दोहरी रुझानों और अल्पकालिक पुलबैक को फ़िल्टर कर सकता है।
संकेतों की विश्वसनीयता में और सुधार करने के लिए, एमएसीडी संकेतक भी पेश किया गया है। जब कीमत ईएमए और एसएमए के माध्यम से एक संकेत बनाने के लिए तोड़ती है, तो एमएसीडी की तेजी से रेखा को नीचे से धीमी रेखा को तोड़ने की आवश्यकता होती है, और एमएसीडी हिस्टोग्राम को 0 अक्ष के ऊपर होने की आवश्यकता होती है, ताकि एक वास्तविक खरीद संकेत ट्रिगर हो सके। इसके विपरीत, जब एमएसीडी की तेजी से रेखा ऊपर से धीमी रेखा को तोड़ती है, और एमएसीडी हिस्टोग्राम 0 अक्ष के नीचे होता है, तो यह एक वास्तविक बिक्री संकेत को ट्रिगर करेगा।
इसके अतिरिक्त, स्टॉप लॉस और टेक प्रॉफिट को रणनीति में सेट किया जाता है। रणनीति एक स्थिति खोलने के बाद, स्टॉप लॉस पॉइंट और टेक प्रॉफिट पॉइंट की गणना और उपयोगकर्ता द्वारा निर्धारित प्रतिशत के अनुसार सेट किया जाएगा। यह प्रभावी रूप से एक ही व्यापार के जोखिम को नियंत्रित कर सकता है।
संक्षेप में, यह रणनीति कई संकेतकों पर व्यापक रूप से विचार करती है, खरीद और बिक्री संकेतों के लिए सख्त फ़िल्टरिंग शर्तें निर्धारित करती है, और जोखिमों को प्रबंधित करने के लिए स्टॉप लॉस और लाभ लेने को अपनाती है, जिससे एक अपेक्षाकृत कठोर और पूर्ण ट्रेडिंग प्रणाली बनती है।
दोहरी चलती औसत क्रॉसओवर ट्रेंड रणनीति के निम्नलिखित फायदे हैंः
कई संकेतकों का संयोजन, मूल्य, प्रवृत्ति और गति को व्यापक रूप से ध्यान में रखते हुए और संकेतों के लिए सख्त फ़िल्टरिंग शर्तें निर्धारित करने से झूठे संकेतों से प्रभावी ढंग से बचा जा सकता है और संकेत की विश्वसनीयता में सुधार हो सकता है।
विभिन्न मापदंडों के साथ दो चलती औसत का उपयोग बाजार के रुझानों की बेहतर पहचान कर सकता है और अस्थिर बाजारों को फ़िल्टर कर सकता है। तेजी से ईएमए लाइन का उपयोग समय पर मूल्य परिवर्तनों को ट्रैक करने के लिए किया जाता है; धीमी एसएमए लाइन का उपयोग दीर्घकालिक रुझानों को निर्धारित करने के लिए किया जाता है। दोनों लाइनों का संयोजन बेहतर काम करता है।
एमएसीडी संकेतक अनुकूलन योग्य मापदंडों को पेश करता है जिन्हें विभिन्न बाजारों की विशेषताओं के अनुसार समायोजित किया जा सकता है और इसमें उच्च लचीलापन है। एमएसीडी की सेटिंग्स यह सुनिश्चित करती हैं कि ट्रेडिंग सिग्नल को एक ही समय में मूल्य, प्रवृत्ति और गति द्वारा समर्थित किया जाता है, इस प्रकार बहुत मजबूत अनुप्रयोग मूल्य है।
स्टॉप लॉस और टेक प्रॉफिट पॉइंट सेट करने से एकल ट्रेड नुकसान पर अधिकतम नियंत्रण हो सकता है और अत्यधिक नुकसान से बचा जा सकता है। लाभ लेने के लिए उचित प्रतिशत सेटिंग्स आंशिक लाभ में लॉक कर सकती हैं और लाभ बनाने के बाद बाजार जोखिम जोखिम को कम कर सकती हैं।
इस रणनीति के मापदंडों को लचीले ढंग से निर्धारित किया जा सकता है और अनुकूलन परिणामों के आधार पर रणनीति को समायोजित किया जा सकता है, जो बहुत व्यावहारिक है। विभिन्न बाजारों और मापदंडों के परीक्षण और अनुकूलन के लिए पर्याप्त स्थान है।
दोहरी चलती औसत क्रॉसओवर ट्रेंड रणनीति में भी कुछ जोखिम हैं, मुख्य रूप से निम्नलिखित क्षेत्रों मेंः
जब शेयर की कीमत में भारी उतार-चढ़ाव होता है, तो ईएमए और एसएमए कई बार गलत तरीके से पार हो सकते हैं, जिसके परिणामस्वरूप अक्सर ट्रेडिंग सिग्नल खुलते और बंद हो जाते हैं। इससे ट्रेडिंग की आवृत्ति और कमीशन का खर्च बढ़ जाएगा।
एमएसीडी संकेतकों में झूठे ब्रेकआउट हो सकते हैं, खासकर उस प्रक्रिया में जब गति अभी भी अस्पष्ट है। इस मामले में, संकेत भी अविश्वसनीय है, जिससे अनावश्यक नुकसान हो सकता है।
स्टॉप लॉस सेटिंग्स की स्थिति और अनुपात लाभ और हानि परिणामों पर बहुत प्रभाव डालते हैं। यदि स्टॉप लॉस बहुत छोटा सेट किया गया है, तो पकड़े जाने का खतरा है; यदि स्टॉप लॉस बहुत बड़ा सेट किया गया है, तो एकल हानि बहुत भारी हो सकती है। इसके लिए इष्टतम मापदंडों को खोजने के लिए पर्याप्त परीक्षण की आवश्यकता होती है।
एक प्रवृत्ति ट्रैकिंग संकेतक के रूप में, चलती औसत की प्रभावशीलता तब छूट दी जाएगी जब कीमतें तेजी से उलट जाती हैं। रणनीति में मूल्य उलटने से पहले नुकसान को रोकने का समय नहीं हो सकता है, जिससे अधिक नुकसान होता है।
संबंधित समाधान निम्नलिखित हैं:
अस्थिर बाजारों के लिए, क्रॉसओवर आवृत्ति को कम करने के लिए कम पैरामीटर ईएमए और एसएमए का उपयोग करके चलती औसत के मापदंडों को उचित रूप से समायोजित करें।
फ़िल्टरिंग स्थितियों को बढ़ाएं जैसे कि एमएसीडी शून्य रेखा से ऊपर और नीचे टूटना, जो कुछ हद तक झूठे ब्रेकआउट को कम कर सकता है। अन्य संकेतकों जैसे कि केडीजे और बीओएलएल को जोड़ने पर भी विचार किया जा सकता है।
स्टॉप लॉस की स्थिति और अनुपात की स्थापना में इष्टतम मापदंडों को खोजने के लिए पर्याप्त बैकटेस्टिंग और अनुकूलन की आवश्यकता होती है। इस आधार पर, निरंतर निगरानी और गतिशील समायोजन पर भी विचार किया जाना चाहिए।
तेजी से मूल्य उलट-पुलट की पहचान करने के लिए तंत्र स्थापित किए जा सकते हैं। जब असामान्य उलट-पुलट की पहचान की जाती है, तो जोखिम जोखिम को नियंत्रित करने के लिए स्थिति को कम करने या ट्रेडिंग रणनीतियों को निलंबित करने जैसे आपातकालीन उपाय किए जा सकते हैं।
दोहरी चलती औसत क्रॉसओवर ट्रेंड की रणनीति में मुख्य रूप से निम्नलिखित पहलुओं में और अधिक अनुकूलन की गुंजाइश है:
बेहतर मापदंडों को खोजने के लिए संयोजन के लिए अधिक संकेतकों का परीक्षण करें, जैसे कि बीओएलएल चैनल को शामिल करना और अस्थिरता के प्रभाव को ध्यान में रखना।
विभिन्न बाजार स्थितियों में सर्वोत्तम पैरामीटर संयोजन खोजने के लिए चलती औसत लंबाई के मापदंडों का अनुकूलन करें। रोलिंग पैरामीटर अनुकूलन भी एक विकल्प है।
अधिक वैज्ञानिक और उचित स्टॉप लॉस और लाभ रणनीतियों को स्थापित करें, जैसे कि ट्रेलिंग स्टॉप लॉस की शुरुआत करना या ऐतिहासिक सांख्यिकीय परिणामों के आधार पर गतिशील जोखिम-लाभ अनुपात निर्धारित करना। इससे रणनीति की स्थिरता में और सुधार हो सकता है।
असामान्य मूल्य परिवर्तनों की स्वचालित पहचान और आपातकालीन प्रतिक्रिया के लिए तंत्र स्थापित करें। चरम बाजार स्थितियों में, विशाल नुकसान से बचने के लिए सक्रिय रूप से पदों को कम करें या रणनीतियों को निलंबित करें।
विदेशी मुद्रा, क्रिप्टोकरेंसी और अन्य किस्मों जैसे व्यापारिक किस्मों का विस्तार करें। रणनीति की प्रयोज्यता का विस्तार करने के लिए विभिन्न किस्मों में मापदंडों की मजबूती का परीक्षण करें।
रणनीति की पूंजी प्रबंधन रणनीतियों को अनुकूलित करना, जैसे कि निश्चित राशि का व्यापार, निश्चित स्थिति अनुपात आदि। एकल व्यापार हानि के जोखिम को नियंत्रित करना, समग्र पूंजी वक्र को अधिक स्थिर बनाना।
डबल मूविंग एवरेज क्रॉसओवर ट्रेंड रणनीति में कई कारकों पर व्यापक रूप से विचार किया जाता है। ट्रेडिंग सिग्नल उत्पन्न करते समय, सिग्नल विश्वसनीयता सुनिश्चित करने के लिए मूल्य, प्रवृत्ति और गति जैसे कई संकेतकों से समर्थन की आवश्यकता होती है। रणनीति व्यक्तिगत ट्रेडों के जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस और लाभ लेने को भी अपनाती है। रणनीति की लचीली पैरामीटर सेटिंग्स इसे स्वचालित ट्रेडिंग के लिए अत्यधिक व्यावहारिक बनाती है।
हालाँकि, कोई भी रणनीति सही नहीं हो सकती। इस रणनीति को लागू करने में कुछ कठिनाइयों का भी सामना करना पड़ेगा, जैसे कि लगातार व्यापार, झूठे ब्रेकआउट, स्टॉप लॉस पोजिशनिंग, आदि। रणनीति की मजबूती और लाभप्रदता को और बढ़ाने के लिए, पैरामीटर पोर्टफोलियो को अनुकूलित करने, नए तकनीकी संकेतकों की शुरुआत, स्टॉप लॉस तंत्र में सुधार, आदि सहित कई पहलुओं में प्रयास करने की आवश्यकता है।
संक्षेप में, डबल मूविंग एवरेज क्रॉसओवर ट्रेंड रणनीति एक अपेक्षाकृत पूर्ण और कठोर ट्रेडिंग प्रणाली है। भविष्य के अनुसंधान और अनुप्रयोग में निरंतर अनुकूलन और सुधार के माध्यम से, रणनीति में अधिक व्यावहारिक मूल्य प्राप्त करने की क्षमता है।
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hi, // This is my first strategy made by myself(except for the MACD indicator). I'm publishing this to get myself out there and for some newer people to see how a basic strategy works. All credits go to Zen&TheArtofTrading, for teaching me almost everything I know about Pinescript // The strategy is basically an MACD crossover trend strategy. If the MACD line crosses the signal line upward, above the zero point of the histogram, while the price is above 200 EMA and 100 SMA it's a buy signal // If the MACD line crosses the signal line downward, while below zero point of the histogram, as well as the price being below 200 EMA and 100 SMA it's a sell signal // I used the 200 EMA and 100 SMA because I wanted to filter weak signals as much as possible when the market is ranging, if you have any suggestions to go around this better, please let me know, still learning everyday // If you have any suggestions, tips or tricks please let me know. I'm still new to Pinescript, but having a lot of fun trying stuff out. If you see something in my code that you don't understand, feel free to ask, I'll try to answer as best as I can // I opened the strategy with predetermined backtesting pyramiding, currency etc. This made the progress of backtesting multiple TP and SL easier. Also the commission value is from Binance Futures, I just left it in there for anyone who wants to just copy this strategy strategy("MACD Crossover Trend Strategy Template", overlay = true ) // Determining inputs and values, I just copied the built-in MACD strategy and removed everything I didn't need, just needed the barebone indicator and added EMA + SMA inputs fast_length = input(title = "Fast Length", type = input.integer, defval = 12, group = "MACD Values") slow_length = input(title = "Slow Length", type = input.integer, defval = 26, group = "MACD Values") src = input(title = "Source", type = input.source, defval = close, group = "MACD Values") signal_length = input(title = "Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group = "MACD Values") sma_source = input(title = "Simple MA (Oscillator)", type = input.bool, defval = false, group = "MACD Values") sma_signal = input(title = "Simple MA (Signal Line)", type = input.bool, defval = false, group = "MACD Values") 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 emaLength = input(title = "EMA", type = input.integer, defval = 200, step = 10, group = "Moving Averages") smaLength = input(title = "SMA", type = input.integer, defval = 100, step = 10, group = "Moving Averages") // Input backtest range, you can adjust this here or in the input options fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12, group = "Backtest Date Range") fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31, group = "Backtest Date Range") fromYear = input(defval = 2000, title = "From Year", type = input.integer, minval = 1970, group = "Backtest Date Range") thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12, group = "Backtest Date Range") thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31, group = "Backtest Date Range") thruYear = input(defval = 2099, title = "Thru Year", type = input.integer, minval = 1970, group = "Backtest Date Range") // Inputs for EMA, SMA and to adjust your take profit and stop losses in the input options while backtesting, it's result of your input is calculated back to percentages ema = ema(close, emaLength) sma = sma(close, smaLength) profitlong = input(title = "Profit Long %", type = input.float, defval = 2, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01 losslong = input(title = "Loss Long %", type = input.float, defval = 1, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01 profitshort = input(title = "Profit Short %", type = input.float, defval = 2, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01 lossshort = input(title = "Loss Short %", type = input.float, defval = 1, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01 // Check EMA and SMA also check the backtest range. inDataRange is a true or false statement, true if the date right now is between the parameters that's filled at the corresponding inputs // (for example 1-1-2020 till 12-12-2020, if that specific bar is between these dates, statement is true and trade will be executed) // If the date is not in between the given parameters, statement turns to false and it won't allow new trades and closes all current trades as seen with the strategy.close_all function inDataRange = (time >= timestamp(syminfo.timezone, fromYear, fromMonth, fromDay, 0, 0)) and (time < timestamp(syminfo.timezone, thruYear, thruMonth, thruDay, 0, 0)) long = close > ema and close > sma and inDataRange short = close < ema and close < sma and inDataRange // Entry and exit signals + checking backtest date range, what the signals are supposed to do is noted at the beginning of the code // I want a way to filter out weak signals that are ranging around the zero point of the histogram. // So far couldn't think of a decent way to do this over multiple symbols since the range of the histogram changes with every symbol, sometimes ranging between 0 and 1 or sometimes ranging between 0 and 1000 // I could probably use a cofficiency or something, but that's beyond my grasp at the moment // Also I wanted a way to let my strategy determine a stop loss based on the pullback and having a 1.5 risk/reward TP on top of that. Couldn't really figure out a way to determine the pullback if (crossover(macd, signal) and macd > 0) strategy.entry("Long", long = strategy.long, comment = "Long Buy", when = long) strategy.exit("Exit Long", "Long", profit = close * profitlong / syminfo.mintick, loss = close * losslong / syminfo.mintick) if (crossunder(macd, signal) and macd < 0) strategy.entry("Short", long = strategy.short, comment = "Short Buy", when = short) strategy.exit("Exit Short", "Short", profit = close * profitshort / syminfo.mintick, loss = close * lossshort / syminfo.mintick) // To make sure the backtesting doesn't leave a position open beyond, or before, our applied dates if (not inDataRange) strategy.close_all() // plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)