दोहरी चलती औसत ट्रेडिंग रणनीति तेजी से और धीमी गति से चलती औसत की गणना करके और क्रॉसिंग के लिए देखते हुए ट्रेडिंग सिग्नल उत्पन्न करती है। जब तेजी से चलती औसत धीमी गति से चलती औसत से ऊपर जाती है, तो एक लंबी स्थिति ली जाती है। जब तेजी से चलती औसत धीमी गति से चलती औसत से नीचे जाती है, तो एक छोटी स्थिति ली जाती है। रणनीति का उपयोग ट्रेंड ट्रेडिंग और काउंटरट्रेंड ट्रेडिंग दोनों के लिए किया जा सकता है।
रणनीति पहले तेजी से चलती औसत maFastLength और धीमी गति से चलती औसत maSlowLength की लंबाई निर्धारित करती है। फिर यह तेजी से चलती औसत fastMA और धीमी गति से चलती औसत slowMA की गणना करती है। तेजी से चलती औसत मूल्य परिवर्तनों पर अधिक तेजी से प्रतिक्रिया करती है और वर्तमान प्रवृत्ति का न्याय करने के लिए उपयोग की जाती है, जबकि धीमी गति से चलती औसत अधिक धीरे प्रतिक्रिया करती है और प्रवृत्ति की दिशा निर्धारित करने के लिए उपयोग की जाती है।
जब तेजी से चलती औसत धीमी गति से चलती औसत से ऊपर जाती है, तो एक लंबा प्रवेश संकेत goLong() उत्पन्न होता है। जब तेजी से चलती औसत धीमी गति से चलती औसत से नीचे जाती है, तो मौजूदा लंबी स्थिति को killLong() संकेत के साथ बंद कर दिया जाता है।
रणनीति को केवल लंबी, केवल छोटी या लंबी और छोटी दोनों ट्रेडों की अनुमति देने के लिए सेट किया जा सकता है।
केवल लंबी मोड में, goLong() सिग्नल पर लंबी स्थिति दर्ज की जाती है और killLong() सिग्नल पर बाहर निकलती है।
केवल शॉर्ट मोड में, शॉर्ट पोजीशन killLong() सिग्नल पर दर्ज की जाती हैं और goLong() सिग्नल पर बाहर निकलती हैं।
स्वैपिंग मोड में, goLong पर लंबी पोजीशन दर्ज की जाती है, बंद की जाती है और killLong पर शॉर्ट में रिवर्स की जाती है।
इस रणनीति में स्टॉप लॉस, ट्रेलिंग स्टॉप, मैसेजिंग और अन्य वैकल्पिक सुविधाएं भी शामिल हैं।
सरल और लागू करने में आसान।
लंबी, छोटी या दोनों के लिए लचीलापन।
वैकल्पिक स्टॉप लॉस और ट्रेलिंग स्टॉप सुविधाएं।
ट्रेडों को सचेत करने के लिए अनुकूलन योग्य संदेश।
बाजार के रुझानों में बदलाव के प्रति संवेदनशील।
समायोज्य मापदंड विभिन्न बाजारों के अनुकूल होते हैं।
अस्थिर या अस्थिर बाजारों में अत्यधिक व्यापार उत्पन्न कर सकता है।
अचानक होने वाली खबरों पर प्रतिक्रिया करने में धीमा।
पैरामीटर चयन रणनीति के प्रदर्शन को प्रभावित करता है।
संकेतों का पालन सख्ती से करना चाहिए, विवेकाधीन व्यापार से बचना चाहिए।
यदि लेनदेन की लागतों पर विचार नहीं किया जाता है तो वे लाभ को कम कर सकते हैं।
झूठे संकेतों से बचने के लिए आरएसआई जैसे फ़िल्टर जोड़ें।
सर्वोत्तम सेटिंग्स खोजने के लिए पैरामीटर अनुकूलन लागू करें.
लाभ को लॉक करने और समायोजित करने के लिए गतिशील स्टॉप का उपयोग करें।
रुझान की भविष्यवाणी में सहायता के लिए मशीन लर्निंग को शामिल करें।
व्यक्तिगत व्यापारिक आदतों के लिए संदेशों को अनुकूलित करें।
दोहरी चलती औसत रणनीति अपेक्षाकृत सरल और मजबूत रुझानों को पकड़ने के लिए उपयोगी है। हालांकि, कम रुझान वातावरण में व्हिपसा से बचने के लिए सावधानी बरतनी चाहिए। ठीक समायोजन मापदंडों और सहायक संकेतकों या सुधारों को जोड़ने से मजबूती और अनुकूलन क्षमता में और सुधार हो सकता है।
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // === Inputs === // short ma maFastSource = input(defval=close, title="Fast MA Source") maFastLength = input(defval=3, title="Fast MA Period", minval=1) // long ma maSlowSource = input(defval=close, title="Slow MA Source") maSlowLength = input(defval=9, title="Slow MA Period", minval=1) // Trade direction shorting = input(defval=false, title="Short only?") longonly = input(defval=true, title="Long only?") swapping = input(defval=false, title="Swap orders?") // risk management useStop = input(defval=false, title="Use Initial Stop Loss?") slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1) useTS = input(defval=false, title="Use Trailing Stop?") tslPoints = input(defval=120, title="Trail Points", minval=1) useTSO = input(defval=false, title="Use Offset For Trailing Stop?") tslOffset = input(defval=20, title="Trail Offset Points", minval=1) // Messages for buy and sell message_long_entry = input("Long entry message", title="Long entry message") message_long_exit = input("Long exit message", title="Long exit message") message_short_entry = input("Short entry message", title="Short entry message") message_short_exit = input("Short exit message", title="Short exit message") // Calculate start/end date and time condition startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time) finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time) time_cond = true // === Vars and Series === fastMA = sma(maFastSource, maFastLength) slowMA = sma(maSlowSource, maSlowLength) plot(fastMA, color=color.blue) plot(slowMA, color=color.purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) // Long only if longonly strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry) strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit) // Short only if shorting strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry) strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit) // Order Swapping if swapping strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry) strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry) if useStop strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit) strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)