घातीय चलती औसत के आधार पर एक गति क्रॉसओवर रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-23 14:18:26
टैगः

img

अवलोकन

यह रणनीति विभिन्न अवधियों के साथ ईएमए लाइनों के क्रॉसओवर के आधार पर प्रवृत्ति दिशा निर्धारित करती है और तदनुसार लंबे और छोटे संकेत उत्पन्न करती है। यह मुख्य रूप से दो चलती औसत - 10-दिवसीय ईएमए और 20-दिवसीय ईएमए का उपयोग करती है। जब 10-दिवसीय ईएमए 20-दिवसीय ईएमए से नीचे पार हो जाता है, तो एक छोटा संकेत ट्रिगर किया जाता है। जब 10-दिवसीय ईएमए 20-दिवसीय ईएमए से ऊपर पार हो जाता है, तो एक लंबा संकेत ट्रिगर किया जाता है। यह रणनीति मध्यम अवधि की ट्रेडिंग रणनीतियों से संबंधित है।

रणनीतिक सिद्धांत

यह रणनीति दो ईएमए लाइनों का उपयोग करती है, जिसमें 10-दिवसीय ईएमए और 20-दिवसीय ईएमए शामिल हैं। ईएमए लाइनें कीमतों के रुझान को प्रभावी ढंग से प्रतिबिंबित कर सकती हैं। जब अल्पकालिक ईएमए लाइन लंबी अवधि की ईएमए लाइन के ऊपर पार करती है, तो यह इंगित करती है कि मूल्य प्रवृत्ति गिरावट से बढ़ रही है, जो एक लंबा संकेत है। जब अल्पकालिक ईएमए लाइन लंबी अवधि की ईएमए लाइन के नीचे पार करती है, तो यह इंगित करती है कि मूल्य प्रवृत्ति वृद्धि से गिरावट में बदल रही है, जो एक छोटा संकेत है।

यह रणनीति कुछ ट्रेडिंग सिग्नल को फ़िल्टर करने के लिए मूल्य उतार-चढ़ाव के अधिकतम और न्यूनतम मूल्यों को भी जोड़ती है। ट्रेडिंग सिग्नल केवल एक निश्चित सीमा तक पहुंचने के बाद ही ट्रिगर किए जाते हैं। यह कुछ झूठे संकेतों को कुछ हद तक फ़िल्टर कर सकता है।

विशेष रूप से, अधिकतम और न्यूनतम मानों तक पहुंचने के समय को ट्रैक करके, रणनीति यह तय करती है कि क्या मूल्य प्रवृत्ति बन गई है। वास्तविक ट्रेडिंग सिग्नल केवल अधिकतम या न्यूनतम मानों के कुछ समय तक चलने के बाद ही ट्रिगर किए जाते हैं।

लाभ विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैंः

  1. प्रवृत्ति की दिशा निर्धारित करने के लिए ईएमए रेखाओं का उपयोग करके बाजार की चाल को प्रभावी ढंग से ट्रैक किया जा सकता है
  2. विभिन्न अवधियों की ईएमए लाइनों का संयोजन मध्यम अवधि में व्यापार के अवसरों को पकड़ सकता है
  3. चरम मूल्यों द्वारा संकेतों को फ़िल्टर करने से कुछ शोर दूर हो सकता है और व्यापार के अवसरों को खोने से बचा जा सकता है
  4. तर्क सरल और स्पष्ट है, समझने और संशोधित करने में आसान है
  5. मापदंडों को विभिन्न उत्पादों और व्यापारिक वरीयताओं के लिए समायोजित किया जा सकता है, जो मजबूत अनुकूलन क्षमता दिखाता है

जोखिम विश्लेषण

इस रणनीति के साथ कुछ जोखिम भी हैंः

  1. ईएमए रेखाओं का स्वयं विलंबित प्रभाव होता है, यह अल्पकालिक रुझान उलटने को याद कर सकती है।
  2. शोर फ़िल्टर अपूर्ण है, कुछ गलत ट्रेड हो सकता है
  3. मापदंडों को विभिन्न बाजार परिवेशों के अनुरूप उचित समायोजन की आवश्यकता है

जोखिमों को निम्न के द्वारा कम किया जा सकता हैः

  1. ईएमए लाइन विलंब के मुद्दों से बचने के लिए संकेत की पुष्टि के लिए अन्य संकेतकों को जोड़ना
  2. सिग्नल विश्वसनीयता में सुधार के लिए चरम मूल्य फ़िल्टरिंग स्थितियों का अनुकूलन
  3. रणनीति को अनुकूलित करने के लिए बैकटेस्ट परिणामों के आधार पर मापदंडों को समायोजित करना

सुधार के लिए निर्देश

इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः

  1. संकेत की सटीकता में सुधार के लिए अन्य तकनीकी संकेतकों जैसे एमएसीडी और केडी को शामिल करें
  2. विशिष्ट उत्पादों के अनुकूल ईएमए लाइन मापदंडों को अनुकूलित करें
  3. मूल्य उतार-चढ़ाव का बेहतर आकलन करने के लिए चरम मूल्य मापदंडों को परिष्कृत करें
  4. प्रति व्यापार अधिकतम हानि को नियंत्रित करने के लिए स्टॉप लॉस तंत्र जोड़ें
  5. अनुकूलन क्षमता का आकलन करने के लिए विभिन्न उत्पादों पर रणनीति का परीक्षण करें

सारांश

संक्षेप में, यह ईएमए क्रॉसओवर रणनीति एक सरल और व्यावहारिक प्रवृत्ति के बाद की रणनीति है। यह मुख्य प्रवृत्ति की दिशा निर्धारित करने के लिए ईएमए लाइनों का उपयोग करता है, जो व्यापार निर्णय लेने के लिए मूल्य उतार-चढ़ाव फ़िल्टरिंग के साथ संयुक्त है। यह मापदंडों को समझना और समायोजित करना आसान है, मध्यम अवधि के व्यापार के लिए अनुकूलन योग्य है। आगे के अनुकूलन के साथ, यह लंबी अवधि के लिए रखने के लिए एक सार्थक मात्रात्मक रणनीति बन सकती है।


/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)



अधिक