गोल्डन क्रॉस मूविंग एवरेज ट्रेडिंग रणनीति एक क्लासिक मात्रात्मक ट्रेडिंग रणनीति है। यह रणनीति लंबी और छोटी स्थिति के लिए बाजार के रुझानों को निर्धारित करने के लिए विभिन्न अवधियों के मूविंग एवरेज का उपयोग करती है। जब अल्पकालिक मूविंग एवरेज लंबी अवधि के मूविंग एवरेज से ऊपर जाता है, तो इसे खरीद संकेत माना जाता है। जब अल्पकालिक मूविंग एवरेज लंबी अवधि के मूविंग एवरेज से नीचे जाता है, तो इसे बिक्री संकेत माना जाता है।
यह रणनीति विभिन्न अवधियों के तीन सरल चलती औसत (एसएमए) पर आधारित हैः 50-दिवसीय, 100-दिवसीय और 200-दिवसीय। विशिष्ट व्यापार तर्क निम्नानुसार हैः
प्रवेश संकेतः जब 50 दिन का चलती औसत 100 दिन के चलती औसत से ऊपर जाता है, तो लंबा हो जाता है।
बाहर निकलने का संकेतः जब 50 दिन का चलती औसत 100 दिन के चलती औसत से नीचे जाता है, तो बंद करें; या जब बंद होने की कीमत 100 दिन के चलती औसत से नीचे होती है, तो बाहर निकलें; या जब 100 दिन का चलती औसत 200 दिन के चलती औसत से नीचे जाता है, तो बाहर निकलें।
लाभ लेने और स्टॉप लॉसः सेट ट्रेलिंग लाभ लेने और फिक्स्ड स्टॉप लॉस।
यह रणनीति बाजार के औसत मूल्य रुझानों को प्रभावी ढंग से निर्धारित करने के लिए चलती औसत की क्षमता का उपयोग करती है। अल्पकालिक और दीर्घकालिक औसत के क्रॉसओवर को बाजार में वृद्धि या गिरावट की प्रवृत्ति में प्रवेश करने के रूप में देखा जाता है, इसलिए लंबे या निकास संकेत। यह रणनीति को प्रभावी ढंग से बाजार के रुझानों को पकड़ने की अनुमति देता है।
लागू करने के लिए सरल. यह केवल विभिन्न अवधि के तीन चलती औसत की आवश्यकता होती है.
अत्यधिक स्थिर. चलती औसत में शोर फ़िल्टर करने की क्षमता होती है जो ट्रेडों पर बाजार की यादृच्छिकता के प्रभाव को कम करती है और संकेतों को अधिक विश्वसनीय बनाती है.
प्रमुख रुझानों को पकड़ना आसान है। मूविंग एवरेज प्रभावी रूप से औसत बाजार मूल्य रुझान में परिवर्तन को दर्शाता है, मुख्य रुझान परिवर्तनों को निर्धारित करने के लिए अल्पकालिक और दीर्घकालिक लाइनों के बीच क्रॉसओवर का उपयोग करता है।
अत्यधिक अनुकूलन योग्य. जोखिम नियंत्रण के विभिन्न स्तरों के लिए चलती औसत अवधि को समायोजित किया जा सकता है।
बहुत सारे झूठे संकेत उत्पन्न कर सकता है। अक्सर क्रॉसओवर हो सकते हैं जब अल्पकालिक और दीर्घकालिक औसत बहुत करीब होते हैं, जिसके परिणामस्वरूप अत्यधिक अमान्य संकेत होते हैं।
अचानक होने वाली घटनाओं पर प्रतिक्रिया करने में धीमी गति। मूविंग एवरेज मूल्य परिवर्तनों पर धीमी गति से प्रतिक्रिया करते हैं और बाजार की खबरों और प्रमुख घटनाओं पर तुरंत प्रतिक्रिया नहीं दे सकते हैं।
छोटे उतार-चढ़ावों से लाभ नहीं कर पाते हैं। शोर फ़िल्टरिंग का मतलब यह भी है कि बाजार के मामूली उतार-चढ़ावों से मुनाफे का नुकसान होता है।
व्यक्तिपरक मापदंड चयन उपयुक्त चलती औसत अवधि काफी हद तक व्यक्तिपरक होती है और विशिष्ट बाजार पर निर्भर करती है।
झूठे संकेतों को कम करने के लिए फ़िल्टर जोड़ें, जैसे कि मूल्य सीमा फ़िल्टर जो संकेतों को एक निश्चित परिमाण से ऊपर के आंदोलनों तक सीमित करते हैं।
संयोजन रणनीतियों के लिए अन्य संकेतक शामिल करें, जो संकेत की सटीकता में सुधार कर सकते हैं, जैसे कि अस्थिरता या मात्रा संकेतक।
मशीन लर्निंग एल्गोरिदम के आधार पर चलती औसत अवधि को गतिशील रूप से अनुकूलित करने के लिए अनुकूलन अनुकूलन मॉड्यूल जोड़ें, जिससे बाजार की बदलती परिस्थितियों के अनुकूलन की अनुमति मिलती है।
उन्नत विशेषता निष्कर्षण और मॉडलिंग क्षमताओं के लिए चलती औसत के बजाय उन्नत गहरी सीखने के मॉडल को शामिल करें।
गोल्डन क्रॉस मूविंग एवरेज ट्रेडिंग रणनीति एक ठेठ प्रवृत्ति के बाद की रणनीति है। यह औसत बाजार मूल्य के रुझानों को सरल और व्यावहारिक रूप से दर्शाता है, शुरुआती लोगों के लिए उपयुक्त है। हालांकि, इसमें कुछ खामियां भी हैं जिन्हें संकेत की गुणवत्ता में सुधार, अन्य तकनीकी संकेतकों के साथ संयोजन, अनुकूलन तंत्र आदि को पेश करके अधिक जटिल बाजारों में अनुकूलित करने के लिए सुधार किया जा सकता है। कुल मिलाकर, यह उच्च संदर्भ और सीखने के मूल्य के साथ एक रणनीति है।
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © CJDeegan //@version=4 strategy(title = "[LIVE] Golden Cross", overlay=true) // ------------Functions------------ //Percent to Decimal Conversion perToDec(a) => a * 0.01 //Price Difference to Tick diffToTick(a,b) => (a - b) / syminfo.mintick // ------------Strategy Inputs------------ takeProfitInput = input(300, "Take Profit Price (% Gain)") stopLossInput = input(25, "Stop Loss (% Loss)") startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2018, minval=1800, maxval=2100) endDate = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31) endMonth = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12) endYear = input(title="End Year", type=input.integer, defval=2031, minval=1800, maxval=2100) inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)) // ------------Populate Indicators------------ //EMA sma50 = sma(close,50) sma100 = sma(close,100) sma200 = sma(close,200) // ------------Entry Logic------------ //Guards entryGuard = true //Triggers entryTrigger = crossover(sma50,sma100) //Conditions entryCondition = entryGuard and entryTrigger //Calculations //Execution if (inDateRange and entryCondition) strategy.entry("Long", strategy.long, when = entryCondition, comment = "Entry") //------------Exit Logic------------ //Guards //Triggers exitTrigger = crossunder(sma50,sma100) or close < sma100 or crossunder(sma100,sma200) //Conditions exitCondition = exitTrigger //Calculations //Take Profit takeProfitPrice = strategy.position_avg_price + (strategy.position_avg_price * perToDec(takeProfitInput)) //Take Profit Ticks takeProfitTicks = diffToTick(takeProfitPrice, strategy.position_avg_price) //StopLoss stopLossPrice = strategy.position_avg_price - (strategy.position_avg_price * perToDec(stopLossInput)) //Execution if (inDateRange) strategy.close("Long", when = exitCondition, comment = "Sell Trigger") strategy.exit("Exit", "Long", comment="Stop", profit=takeProfitTicks, stop=stopLossPrice) //Plots plot(sma50, "SMA 50", color = color.blue) plot(sma100, "SMA 100", color = color.green) plot(sma200, "SMA 200", color = color.yellow) entry = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, "Entry Price", color = color.yellow, style = plot.style_linebr) profit = plot(strategy.position_size <= 0 ? na : takeProfitPrice, "Take Profit (Price)", color = color.green, style = plot.style_linebr) stop = plot(strategy.position_size <= 0 ? na : stopLossPrice, "Stop Loss", color = color.red, style = plot.style_linebr) fill(entry,profit, color=color.green) fill(entry,stop, color=color.red)