ईएमए स्लोप क्रॉस ट्रेंड फॉलोिंग स्ट्रेटेजी

लेखक:चाओझांग, दिनांक: 2023-10-17 17:02:30
टैगः

img

अवलोकन

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

बाजार में रणनीति के प्रवेश के लिए निम्नलिखित शर्तें हैं:

  • तेजी से ढलान > धीमी ढलान और कीमत > ईएमए 200: लंबी हो
  • तेजी से ढलान < धीमी ढलान और कीमत < ईएमए 200: शॉर्ट करें

जब सरल ढलानें विपरीत दिशा में पार होती हैं, तो यह स्थिति को बंद कर देता है।

यह रणनीति बिटकॉइन और सबसे अधिक तरल और पूंजीकृत अल्टकोइन पर सबसे अच्छा प्रदर्शन करती है, लेकिन अस्थिर परिसंपत्तियों पर भी बहुत अच्छी तरह से काम करती है, खासकर यदि वे अक्सर प्रवृत्ति में जाते हैं। 4 घंटे की समय सीमा पर सबसे अच्छा काम करता है.

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

इसका आनंद लें!

रणनीति तर्क

इस रणनीति का मूल उद्देश्य दो अलग-अलग लंबाई के ईएमए की ढलानों की तुलना करना है।

सबसे पहले 130 और 400 की लंबाई वाले ईएमए की गणना की जाती है, फिर प्रत्येक की ढलान की गणना की जाती है, फिर प्रत्येक ढलान पर 3 की लंबाई के ईएमए की गणना की जाती है ताकि ढलान वक्र को चिकना किया जा सके।

जब तेज ईएमए ढीली ईएमए ढिलाई के ऊपर पार करता है, तो एक खरीद संकेत उत्पन्न होता है। जब तेज ईएमए ढिलाई के नीचे पार करता है, तो एक बिक्री संकेत उत्पन्न होता है।

शोर को फ़िल्टर करने के लिए, 200 अवधि के ईएमए का उपयोग ट्रेंड फ़िल्टर के रूप में किया जा सकता है, केवल जब कीमत ईएमए से ऊपर होती है, और केवल कम संकेतों पर विचार करते हुए लंबे संकेत।

इसके अतिरिक्त, एक अस्थिरता फ़िल्टर का उपयोग किया जा सकता है, जो केवल तभी संकेत उत्पन्न करता है जब दो ढलानों के बीच का अंतर एक सीमा से अधिक होता है, ऐसे मामलों से बचने के लिए जहां ढलान पार होते हैं लेकिन अस्थिरता अपर्याप्त होती है।

जब तेज और धीमी ढलानें विपरीत रूप से पार होती हैं, तो लाभ/हानि को रोकने के लिए पद बंद कर दिए जाते हैं।

लाभ विश्लेषण

  1. संकेत उत्पन्न करने के लिए ढलान क्रॉस का उपयोग करके प्रभावी रूप से रुझानों को ट्रैक किया जा सकता है

  2. ईएमए अवधि के संयोजनों को समायोजित करना विभिन्न बाजार स्थितियों के अनुकूल हो सकता है

  3. प्रवृत्ति फ़िल्टर अस्थिर मूल्य कार्रवाई से भटकने से बचता है

  4. अस्थिरता फ़िल्टर झूठे संकेतों को फ़िल्टर करता है

  5. सरल और स्पष्ट तर्क, समझने और लागू करने में आसान

  6. कई समय सीमाओं पर इस्तेमाल किया जा सकता है

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

  1. बड़े बाजारों में अक्सर खुले और बंद हो सकते हैं।

  2. अनुचित ईएमए अवधि रुझान मोड़ बिंदुओं को याद कर सकती है

  3. बाजार की बदलती परिस्थितियों के अनुकूल मापदंडों को समायोजित किया जाना चाहिए

  4. एमए प्रणालियों की तरह, चरम पर बड़े रुझान उलट सकते हैं

अनुकूलन दिशाएँ

  1. इष्टतम मापदंडों को खोजने के लिए विभिन्न ईएमए अवधि संयोजनों का प्रयास करें

  2. परिसंपत्तियों की विशेषताओं और बाजार स्थितियों के अनुसार मापदंडों का चयन करें

  3. जोखिम नियंत्रण के लिए स्टॉप लॉस रणनीतियों को जोड़ने पर विचार करें

  4. ईएमए अवधि के गतिशील समायोजन पर विचार करें

  5. विभिन्न अस्थिरता सीमा मानों का परीक्षण करें

  6. समय-सीमाओं में परीक्षण प्रभावशीलता

सारांश

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


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="Slopes",initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.06, slippage = 2, default_qty_value=30, overlay=false)

//definizione input

start = timestamp(input(2018, "start year"), input(1, "start month"), input(1, "start day"), 00, 00)
end = timestamp(input(2020, "end year"), input(1, "end month"), input(1, "end day"), 00, 00)

average = input (title="Source MA Type", type=input.string, defval="EMA",options=["EMA","SMA"])

len1=input(130,title="Fast MA Length")
len2=input(400,title="Slow MA Length")

smoothingavg = input (title="Smoothing MAs Type", type=input.string, defval="EMA",options=["EMA","SMA"])
smoothingavglen = input (3,title="Smoothing MAs Length")

trendfilter=input(true,title="Trend Filter")
trendfilterperiod=input(200,title="Trend Filter MA Period")
trendfiltertype=input (title="Trend Filter MA Type", type=input.string, defval="EMA",options=["EMA","SMA"])

volatilityfilter=input(false,title="Volatility Filter")
volatilitydelta=input(0.0003,step=0.0001,title="Delta Slopes EMA")

//variabili

m1 = if average == "EMA" 
    ema(close,len1)
else
    sma(close,len1)

m2=if average == "EMA" 
    ema(close,len2)
else
    sma(close,len2)

slp1=(m1-m1[1])/m1
slp2=(m2-m2[1])/m2

e1=if smoothingavg == "EMA" 
    ema(slp1,smoothingavglen)
else
    sma(slp1,smoothingavglen)

e2=if smoothingavg == "EMA" 
    ema(slp2,smoothingavglen)
else
    sma(slp2,smoothingavglen)

plot(e1,color=color.yellow)
plot(e2,color=color.red)
//plot (abs(e1-e2),color=color.white)
//plot (ema(e1-e2,9),color=color.yellow)

//variabili accessorie e condizioni

TrendConditionL=if trendfiltertype =="EMA"
    close>ema(close,trendfilterperiod)
else
    close>sma(close,trendfilterperiod)
    
TrendConditionS=if trendfiltertype =="EMA"
    close<ema(close,trendfilterperiod)
else
    close<sma(close,trendfilterperiod)
    
VolatilityCondition = abs(e1-e2) > volatilitydelta

ConditionEntryL= if trendfilter == true
    if volatilityfilter == true
        e1>e2 and TrendConditionL and VolatilityCondition
    else
        e1>e2 and TrendConditionL
else
    if volatilityfilter == true
        e1>e2 and VolatilityCondition
    else 
        e1>e2

ConditionEntryS= if trendfilter == true
    if volatilityfilter == true
        e1<e2 and TrendConditionS and VolatilityCondition
    else 
        e1<e2 and TrendConditionS
else
    if volatilityfilter == true
        e1<e2 and VolatilityCondition
    else
        e1<e2

ConditionExitL=crossunder(e1,e2)
ConditionExitS=crossover(e1,e2)

if true
    if ConditionExitS
        if strategy.position_size < 0
            strategy.close("SLPShort")

if true
    if ConditionExitL
        if strategy.position_size > 0
            strategy.close("SLPLong")

if true
    if ConditionEntryL
        strategy.entry ("SLPLong",long=true)
        
if true
    if ConditionEntryS 
        strategy.entry("SLPShort",long=false)

अधिक