यह रणनीति एक विशिष्ट चलती औसत क्रॉसओवर रणनीति है जो चलती औसत के दो सेटों का उपयोग करती है, एक तेज और एक धीमी। जब तेज चलती औसत धीमी चलती औसत से पार हो जाती है, तो एक खरीद संकेत उत्पन्न होता है। जब तेज धीमी गति से नीचे पार हो जाता है, तो एक बिक्री संकेत उत्पन्न होता है। रणनीति चलती औसत के लिए ईएमए और एसएमए दोनों का उपयोग करती है, जिसमें ईएमए तेजी से लाइनों के रूप में और एसएमए धीमी लाइनों के रूप में। कई चलती औसत का उपयोग करने से झूठे संकेतों को फ़िल्टर करने और विश्वसनीयता में सुधार करने में मदद मिल सकती है।
मूल तर्क प्रवेश और निकास निर्धारित करने के लिए तेज और धीमी गति से चलती औसत रेखाओं के बीच क्रॉसओवर पर निर्भर करता है।
विशेष रूप से, तेज और धीमी गति से चलने वाले औसत के दो सेटों की गणना की जाती हैः
इसके बाद तेज ईएमए और धीमी एसएमए के बीच क्रॉसओवर की जाँच की जाती हैः
झूठे संकेतों को फ़िल्टर करने के लिए, पुष्टि के लिए दूसरी ईएमए/एसएमए क्रॉसओवर की आवश्यकता होती हैः
दो तेज/धीमी एमए क्रॉसओवर की आवश्यकता से कई झूठे संकेतों को फ़िल्टर किया जा सकता है और विश्वसनीयता में सुधार किया जा सकता है।
जब सिग्नल ट्रिगर खरीदें, तो लंबे समय तक जाएं। जब सिग्नल ट्रिगर बेचें, तो शॉर्ट जाएं।
यह रणनीति एक बार स्थिति में प्रवेश मूल्य से इनपुट प्रतिशत के आधार पर लाभ लेने और स्टॉप लॉस को भी निर्धारित करती है।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
रणनीति के जोखिमः
जोखिमों को नियंत्रित करने के लिए:
इस रणनीति को निम्नलिखित तरीकों से और अधिक अनुकूलित किया जा सकता हैः
संक्षेप में, दोहरी एमए क्रॉसओवर रणनीति तेजी से / धीमी एमए क्रॉस के साथ संकेत उत्पन्न करती है, जोखिमों को नियंत्रित करने के लिए लाभ और स्टॉप लॉस लेती है, और सरल, सहज और लागू करने में आसान है। बेहतर प्रदर्शन के लिए मापदंडों को ट्यून और अन्य संकेतकों के साथ जोड़ा जा सकता है। इसकी मात्रात्मक व्यापार में बहुत उपयोगिता है।
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h 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/ // © JMLSlop //@version=4 src = close strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false) // first fast EMA len = input(8, "Length", type=input.integer, minval=1) doma1 = input(true, title="EMA") out1 = ema(src, len) //Second fast EMA len2 = input(21, minval=1, title="Length") doma2 = input(true, title="EMA") out2 = ema(src, len2) //First slow MA len3 = input(50, minval=1, title="Length") doma3 = input(true, title="SMA") out3 = sma(src, len3) //Second slow MA len4 = input(200, minval=1, title="Length") doma4 = input(true, title="SMA") out4 = sma(src, len4) // Profit profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01 plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA") plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA") plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA") plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA") // Orders config takeProfitPrice = (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na longStopPrice = strategy.position_avg_price * (1 - profit) shortStopPrice = strategy.position_avg_price * (1 + profit) longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3])))) if (longCondition2) strategy.entry("Enter L", strategy.long) shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3]))) if (shortCondition2) strategy.entry("Enter S", strategy.short) if (strategy.position_size > 0) strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice) if (strategy.position_size < 0) strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)