इस रणनीति का मूल ट्रेंड की दिशा और प्रवेश समय निर्धारित करने के लिए चलती औसत और क्रॉसओवर संकेतों की प्रवृत्ति विशेषताओं का उपयोग करना है। सबसे पहले, मापदंडों के माध्यम से तेजी से चलती औसत (डिफ़ॉल्ट 50) और धीमी गति से चलती औसत (डिफ़ॉल्ट 200) की अवधि निर्धारित करें, और एसएमए या ईएमए का उपयोग करना चुनें। फिर दो चलती औसत की गणना करें और उनके क्रॉसओवर स्थितियों का निर्धारण करेंः
डबल मूविंग एवरेज क्रॉसओवर रणनीति एक सरल और क्लासिक ट्रेंड-फॉलोइंग रणनीति है जो विभिन्न अवधियों के साथ दो मूविंग एवरेज के क्रॉसओवर के आधार पर ट्रेंड की दिशा और एंट्री/एक्जिट टाइमिंग निर्धारित करती है, जो मध्यम से दीर्घकालिक रुझानों को पकड़ने के लिए उपयुक्त है। हालांकि, स्थिर मापदंड बदलते बाजार वातावरण में अस्थिर प्रदर्शन कर सकते हैं और एक अपेक्षाकृत मजबूत ट्रेडिंग रणनीति बनने के लिए मापदंडों का अनुकूलन, स्टॉप-लॉस में सुधार, अन्य संकेतों की शुरूआत आदि जैसे आगे अनुकूलन और सुधार की आवश्यकता होती है। यह रणनीति ट्रेंड रणनीतियों के लिए आधार के रूप में कार्य कर सकती है और लगातार सुधार और विस्तार की जा सकती है।
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //============================================================================== // A baseline strategy with a well known concept, golden cross & death cross. // Support for both Simple & Exponential moving averages. // Support for long & short stop losses as a percentage.:well //============================================================================== strategy("Basic Moving Average Crosses", overlay=true) //------------------------------------------------------------------------------ // configuration //------------------------------------------------------------------------------ maQuickLength = input(50, title="Quick MA Length") maSlowLength = input(200, title="Quick MA Length") useSma = input(true, title="Use SMA? If false, EMA is used.") maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength) maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength) stop_loss_percentage = input(2.0, title="Stop Loss (%)") var float longStopLevel = na var float shortStopLevel = na bool isGoldenCross = ta.crossover(maQuick, maSlow) bool isDeathCross = ta.crossunder(maQuick, maSlow) //------------------------------------------------------------------------------ // position opening logic //------------------------------------------------------------------------------ if(strategy.position_size == 0) // Golden cross, enter a long position if(isGoldenCross) strategy.entry("Buy", strategy.long) longStopLevel := close - close * stop_loss_percentage/100.0 strategy.exit("StopLossLong", "Buy", stop=longStopLevel) // Death cross, enter short position else if(isDeathCross) strategy.entry("Sell", strategy.short) shortStopLevel := close + close * stop_loss_percentage/100.0 strategy.exit("StopLossShort", "Sell", stop=shortStopLevel) //------------------------------------------------------------------------------ // position closing logic //------------------------------------------------------------------------------ else // Close long position on death cross if(strategy.position_size > 0 and isDeathCross) strategy.close("Buy") // Close short position on golden cross else if(strategy.position_size < 0 and isGoldenCross) strategy.close("Sell") //------------------------------------------------------------------------------ // ploting //------------------------------------------------------------------------------ plot(maQuick, color=color.yellow) plot(maSlow, color=color.blue)