10EMA डबल क्रॉस ट्रेंड ट्रैकिंग रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-29 16:03:55
टैगः

img

अवलोकन

यह रणनीति 10EMA और 50EMA के डबल क्रॉस पर आधारित एक ट्रेंड ट्रैकिंग रणनीति है। यह गतिशील रूप से वैकल्पिक बैल और भालू बाजार में ट्रेंड दिशा खोजने और स्वचालित ट्रैकिंग स्टॉप लॉस प्राप्त करने के लिए एक सहायक निर्णय के रूप में घंटे के चार्ट पर 10EMA को शामिल करती है।

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

रणनीति का मूल तर्क 10EMA और 50EMA के स्वर्ण क्रॉस और मृत्यु क्रॉस पर आधारित है। विशेष रूप से, जब 10EMA स्वर्ण क्रॉस बनाने के लिए 50EMA के ऊपर पार करता है, तो यह माना जाता है कि बाजार एक अपट्रेंड में प्रवेश कर गया है; जब 10EMA 50EMA के नीचे पार करता है, तो यह माना जाता है कि बाजार एक डाउनट्रेंड में प्रवेश कर गया है।

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

ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्टॉप लॉस ट्रेडिंग स्ट

लाभ विश्लेषण

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

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

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

इस रणनीति का मुख्य जोखिम अंतराल वाले व्हिपसा और ट्रेंड रिवर्स हैं। जब लगातार झूठे क्रॉसिंग सिग्नल होते हैं, तो रणनीति को स्क्रैप किया जा सकता है। इसके अलावा, पदों को खोलने के बाद मूल्य रिवर्स भी नुकसान का कारण बन सकता है।

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

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

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

सारांश

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


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("10ema Strat 9", overlay=true, format=format.price)
//#region // inputs for candles
//time
t1 = time(timeframe.period,"0930-1500") //last hour of market is not ideal for trading
// candle status
bullish = close > open and barstate.isconfirmed
bearish = open > close and barstate.isconfirmed
bullcandle = ta.valuewhen(bullish, close, 0)
bearcandle = ta.valuewhen(bearish, close, 0)
ema1 = input.int(10, minval=1, title="short ema")
ema2 = input.int(50, minval=1, title="long ema")
ema3 = input.int(200, minval=1, title="hourly 10 ema")
//@variable Input for source
src = input(close, title="Source")
offsetema = input.int(title="Offset", defval=0, minval=-500, maxval=500)
sema = ta.ema(src, ema1)//@variable Input for smaller ema1
lema = ta.ema(src, ema2)//@variable Input for longer ema2
hema = ta.ema(src, ema3)// @variable Input for hourly ema3
bullcrosscount = ta.barssince(ta.crossover(sema,lema)) //@variable Input 10/50 cross higher
bearcrosscount = ta.barssince(ta.crossunder(sema,lema)) //@variable Input 10/50 cross lower
ideallong = bullcrosscount <= 5 //number of candles after the cross
idealshort = bearcrosscount <= 5 //number of candles after the cross

emabull = (sema > lema) and bearish and close > sema and close > hema and ideallong and t1 and barstate.isconfirmed
xemabull = ta.barssince(emabull)
dbullema = emabull and emabull[1] and xemabull <=1
bullentry = if dbullema
    ta.valuewhen(emabull[1], high + 0.05, 0)
else 
    ta.valuewhen(emabull, high + 0.05, 0)
bullentryh = dbullema ? bullentry[1] : bullentry
bullentrylow = ta.valuewhen(emabull, low - 0.05, 0)
bullstop = (bullentryh - bullentrylow) <= 1.00 ? bullentryh - 1.00 : (bullentryh - bullentrylow) <= 10.40 ? bullentrylow : na
bulltarget = (bullentryh - bullstop) * 1.62 + bullentryh

// bear setup
emabear = (sema < lema) and bullish and close < sema and close < hema and idealshort and t1 and barstate.isconfirmed
xemabear = ta.barssince(emabear)
dbearema = emabear and emabear [1] and xemabear <=1
bearentry = if dbearema
    ta.valuewhen(emabear[1], low - 0.05, 0)
else
    ta.valuewhen(emabear, low - 0.05, 0)
bearentryh = dbearema ? bearentry[1] : bearentry
bearentryhigh = ta.valuewhen(emabear, high + 0.05, 0)
bearstop = (bearentryhigh - bearentryh) <= 1.00 ? bearentryh + 1.00 : (bearentryh - bearentryhigh) <= 10.40 ? bearentryhigh : na
beartarget = bearentryh - (bearstop-bearentryh) * 1.62

bullclose = (xemabull <=7) and bullish and bullcrosscount >=1 and barstate.isconfirmed //number of candles for a close above
bearclose = (xemabear <=7) and bearish and bearcrosscount >=1 and barstate.isconfirmed //number of candles for a close below
buyzone = ta.barssince(bullclose)
shortzone =  ta.barssince(bearclose)
idealbuy = close >= bullentryh and bullclose and (buyzone<=7)
idealsell = close <= bearentryh and bearclose and (shortzone<=7)

// // bull setup on chart
// if sema > lema and xemabull < 50
//     var line line_bullentry = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(0, 200, 0), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bullentry, x=bar_index, y=bullentryh)
//         line.set_xy2(line_bullentry, x=bar_index, y=bullentryh)
//         alert("EMA-bullish", alert.freq_once_per_bar_close)
//     line.set_x2(line_bullentry, x=bar_index)
//     var line line_bullstop = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(250, 0, 0), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bullstop, x=bar_index, y=bullstop)
//         line.set_xy2(line_bullstop, x=bar_index, y=bullstop)
//     line.set_x2(line_bullstop, x=bar_index)    
//     var line line_bulltarget = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(200, 100, 200), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bulltarget, x=bar_index, y=bulltarget)
//         line.set_xy2(line_bulltarget, x=bar_index, y=bulltarget)
//     line.set_x2(line_bulltarget, x=bar_index)

// //bear setup on chart
// if sema < lema and xemabear < 50
//     var line line_bearentry = line.new(bar_index, na, bar_index, na, color=color.rgb(0, 200, 0), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_bearentry, x=bar_index, y=bearentryh)
//         line.set_xy2(line_bearentry, x=bar_index, y=bearentryh)
//         alert("EMA-bearish", alert.freq_once_per_bar_close)
//     line.set_x2(line_bearentry, x=bar_index)
//     var line line_bearstop = line.new(bar_index, na, bar_index, na, color=color.rgb(250, 0, 0), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_bearstop, x=bar_index, y=bearstop)
//         line.set_xy2(line_bearstop, x=bar_index, y=bearstop)
//     line.set_x2(line_bearstop, x=bar_index)
//     var line line_beartarget = line.new(bar_index, na, bar_index, na, color=color.rgb(200, 100, 200), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_beartarget, x=bar_index, y=beartarget)
//         line.set_xy2(line_beartarget, x=bar_index, y=beartarget)
//     line.set_x2(line_beartarget, x=bar_index)

//#endregion
//execution 
if idealbuy
    strategy.close("sell", comment=na)	
    strategy.entry("buy", strategy.long, limit=bullentryh, stop=bullstop, comment="buy")
strategy.exit("exit","buy", trail_points = low, trail_offset = 5, qty_percent=100, limit=bulltarget, stop=bullstop)

if idealsell
	strategy.close("buy",comment=na)
    strategy.entry("sell", strategy.short, limit=bearentryh, stop=bearstop, comment="sell")
strategy.exit("exit","sell", trail_points = low, trail_offset = 5, qty_percent=100, limit=beartarget, stop=bearstop)
// strategy.close_all(time == close_day) 
//#region // graphical analysis
//Plots
plotshape(emabull, location=location.belowbar, title='emabull')
plotshape(idealbuy, style=shape.circle, color=color.green, title="bull close")
plotshape(emabear, title='emabear')
plotshape(idealsell, location=location.belowbar, style=shape.circle, color=color.red, title="bear close")

// //Dashboard
// var label id = na
// label.delete(id)   // Delete last label
// i_offsetLabel = input(15, "Data Dashboard Offset") 
// offset = i_offsetLabel * (time - time[1])
// dynamicText = "= Bull Setup ="
// id := label.new(x=time + offset, y=open, xloc=xloc.bar_time, text=dynamicText, color=color.rgb(255, 255, 255), size=size.normal)
// label.set_textcolor(id, color.rgb(0, 0, 0))
// label.set_text(id=id, text=dynamicText)
// label.set_textalign(id, text.align_left)
// label.set_text(id=id, text=dynamicText)
// f_round( _val, _decimals) => 
//     _p = math.pow(10, _decimals)
//     math.round(math.abs(_val) * _p) / _p * math.sign(_val)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bulltarget,2)) + "  :Target"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bullentryh,2)) + "  :Entry"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bullstop,2)) + "  :Stop"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + "= Bear Setup ="
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bearstop,2)) + "  :Stop"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bearentryh,2)) + "  :Entry"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(beartarget,2)) + "  :Target"
// label.set_text(id=id, text=dynamicText)
// //#endregion

अधिक