ईएमए क्रॉसओवर पर आधारित ट्रेंड ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2023-10-31 14:37:38
टैगः

img

अवलोकन

इस रणनीति का मूल विचार ईएमए सूचक के स्वर्ण क्रॉस और मृत क्रॉस संकेतों का उपयोग खरीद और बिक्री निर्णय लेने के लिए करना है। यह तेज और धीमे ईएमए के कई सेटों को प्लॉट करता है और उनके क्रॉसओवर के आधार पर ट्रेडिंग सिग्नल उत्पन्न करता है।

रणनीति तर्क

रणनीति पहले कई ईएमए लाइनों को परिभाषित करती है, जिनमें तेज़ ईएमए ईएमए1 से ईएमए6 और धीमी ईएमए ईएमए7 से ईएमए12 शामिल हैं। यह फिर खरीद संकेत buy_signal और बेच संकेत sell_signal को परिभाषित करता हैः

  • खरीद संकेत buy_signal तब उत्पन्न होता है जब ema1 ema3 के ऊपर से गुजरता है.

  • बेचने का संकेत sell_signal तब उत्पन्न होता है जब ema1 ema3 से नीचे जाता है.

इसलिए जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से ऊपर जाता है, तो यह बाजार में एक ऊपर की प्रवृत्ति को इंगित करता है और एक खरीद संकेत ट्रिगर किया जाता है। जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से नीचे जाता है, तो यह एक नीचे की प्रवृत्ति को इंगित करता है और एक बिक्री संकेत ट्रिगर किया जाता है।

यह रणनीति प्रवृत्ति की दिशा निर्धारित करने और तदनुसार खरीद/बिक्री निर्णय लेने के लिए ईएमए लाइनों के क्रॉसओवर की निगरानी करती है।

लाभ विश्लेषण

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

  1. प्रवृत्ति निर्धारित करने के लिए ईएमए रेखाओं का उपयोग करने से अल्पकालिक बाजार शोर को फ़िल्टर किया जा सकता है और ट्रेडिंग संकेतों को अधिक विश्वसनीय बनाया जा सकता है।

  2. एकाधिक ईएमए को प्लॉट करने से प्रवृत्ति परिवर्तनों को अधिक सटीक रूप से पहचाना जा सकता है। तेज और धीमे ईएमए के बीच क्रॉसओवर महत्वपूर्ण प्रवृत्ति मोड़ बिंदुओं को पकड़ने में मदद करते हैं।

  3. रणनीति सरल और स्पष्ट है. ईएमए क्रॉस द्वारा ट्रेडिंग सिग्नल उत्पन्न होते हैं, जिससे क्वांट ट्रेडिंग के लिए इसे समझना और लागू करना आसान हो जाता है.

  4. ईएमए अवधि के मापदंडों को विभिन्न उत्पादों और बाजारों के अनुकूल करने के लिए अनुकूलित किया जा सकता है।

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

इस रणनीति के जोखिमों में निम्नलिखित शामिल हैंः

  1. ईएमए रेखाओं में विलंब प्रभाव होता है जिससे व्यापार संकेतों में विलंब हो सकता है।

  2. ईएमए मापदंडों का अनुचित चयन गलत संकेत उत्पन्न कर सकता है।

  3. ईएमए क्रॉसिंग विभिन्न बाजारों में गलत संकेतों को प्रभावी ढंग से फ़िल्टर करने में विफल रहती है।

  4. ईएमए मापदंडों के लिए सीमित अनुकूलन योग्य स्थान के कारण ओवरफिटिंग जोखिम मौजूद हैं।

समाधान:

  1. विभिन्न बाजारों में गलत संकेतों से बचने के लिए अन्य संकेतकों के साथ फ़िल्टर जोड़ें।

  2. ओवरफिटिंग को रोकने के लिए विभिन्न अवधि मापदंडों की परीक्षण स्थिरता।

  3. जोखिमों को नियंत्रित करने के लिए मापदंडों को समायोजित करें या निकास तंत्र जोड़ें।

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

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

  1. स्टॉप लॉस को बाहर निकलने की स्थिति में जोड़ें जब घाटे एक सीमा तक पहुँचते हैं।

  2. अतिरिक्त खरीद/बिक्री संकेतों के साथ पुनः प्रवेश तर्क लागू करें।

  3. सर्वोत्तम परिणामों के लिए ईएमए क्रॉसओवर अवधि मापदंडों का अनुकूलन करें।

  4. सिग्नल की गुणवत्ता में सुधार के लिए बहु कारक सत्यापन के लिए अन्य संकेतक शामिल करें।

  5. इष्टतम प्रयोज्यता खोजने के लिए विभिन्न उत्पादों पर परीक्षण पैरामीटर ट्यूनिंग।

  6. लाइव ट्रेडिंग में फिसलने पर विचार करें और बैकटेस्टिंग के माध्यम से अनुकूलित करें।

सारांश

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


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

//@version=3
//Companion Strategy script to my Cloud Study. Enjoy! -MP
// study("MP's Cloud Study", overlay=true)
strategy(title="MP's Cloud Strat'", shorttitle="MP's Cloud Strat", overlay=true, precision=6, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity,calc_on_order_fills= false, calc_on_every_tick=false, default_qty_value=100.0, commission_type=strategy.commission.percent, commission_value=0.05)

//bgcolor ( color=black, transp=20, title='Blackground', editable=true)

src = close, len1 = input(2, minval=1, title="Short EMA")
src2 = close, len3 = input(7, minval=1, title="Long EMA")
emaShort = ema(src, len1)
emaLong = ema(src2, len3)


StartYear = input(2018, "Start Year")
StartMonth = input(01, "Start Month")
StartDay = input(18, "Start Day")

 
StopYear = input(2018, "Stop Year")
StopMonth = input(12, "Stop Month")
StopDay = input(26, "Stop Day")
tradeStop = timestamp(StopYear,StopMonth,StopDay,0,0)

//src = close, 
//len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(3, minval=1, title="Fast EMA 2")
//len3 = input(8, minval=1, title="Fast EMA 3")
len4 = input(5, minval=1, title="Fast EMA 4")
len5 = input(8, minval=1, title="Fast EMA 5")
len6 = input(10, minval=1, title="Fast EMA 6")
//Slow EMA
len7 = input(30, minval=1, title="Slow EMA 7")
len8 = input(35, minval=1, title="Slow EMA 8")
len9 = input(40, minval=1, title="Slow EMA 9")
len10 = input(45, minval=1, title="Slow EMA 10")
len11 = input(50, minval=1, title="Slow EMA 11")
len12 = input(60, minval=1, title="Slow EMA 12")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
//Slow EMA
ema7 = ema(src, len7)
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)

//Fast EMA Color Rules
//colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6)
//Slow EMA Color Rules
//colslowL = ema7 > ema8 and ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 
//colslowS = ema7 < ema8 and ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 
//Fast EMA Final Color Rules
//colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
//colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=silver)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=silver)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=silver)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=silver)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=silver)
p2=plot(ema6, title="Fast EMA 6", style=line, linewidth=2, color=silver)
fill(p1,p2,color=silver, transp=60)
//Slow EMA Plots
//p3=plot(ema7, title="Slow EMA 7", style=line, linewidth=4, color=colFinal2)
//plot(ema8, title="Slow EMA 8", style=line, linewidth=3, color=colFinal2)
//plot(ema9, title="Slow EMA 9", style=line, linewidth=3, color=colFinal2)
//plot(ema10, title="Slow EMA 10", style=line, linewidth=3, color=colFinal2)
//plot(ema11, title="Slow EMA 11", style=line, linewidth=3, color=colFinal2)
//p4=plot(ema12, title="Slow EMA 12", style=line, linewidth=4, color=colFinal2)
//fill(p3,p4, color=silver, transp=60)



//Plot the Ribbon
ma1=plot( emaShort,color=rising(emaShort,2)?green:red,linewidth=1,join=true,transp=20,title="Short")
ma2=plot( emaLong,color=rising(emaLong,2)?green:red,linewidth=1,join=true,transp=20,title="Long")
fcolor = emaShort>emaLong?green:red
fill(ma1,ma2,color=fcolor,transp=80,title="Ribbon Fill")


//fast = 4, slow = 16
//fastMA = ema(close, fast)
//slowMA = ema(close, slow)
//plot(fastMA, color=green, title = "buy/sell")
//plot(slowMA, color=red, title = "base")


//Conditions
buy_signal = crossover(ema1,ema3)
sell_signal = crossunder(ema1,ema3)

plotshape(sell_signal, style=shape.triangleup, color = red, text="Start Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Start Long")

alertcondition(sell_signal, title = 'Sell/Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Buy/Long', message =  'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')

//alertcondition(sell_signal, title = 'Sell/Short', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy/Long', message =  'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')


testStartYear = input(2018, "From Year") 
testStartMonth = input(1, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

if testPeriod()
    if buy_signal
        strategy.entry("Long", true)
    

    if sell_signal
        strategy.close("Long")

अधिक