यह रणनीति स्टोकैस्टिक संकेतक के साथ संयुक्त दोहरी चलती औसत संकेतक और ट्रिपल घातीय चलती औसत संकेतक का उपयोग करती है, ताकि एक अपेक्षाकृत स्थिर और विश्वसनीय प्रवृत्ति ट्रैकिंग ट्रेडिंग रणनीति बनाई जा सके। इसका मुख्य विचार तब ट्रेडिंग सिग्नल जारी करना है जब चलती औसत संकेतक सुनहरे क्रॉस या मौत के क्रॉस का पता लगाता है; जबकि स्टोकैस्टिक संकेतक का उपयोग भारी बाजार उतार-चढ़ाव के दौरान गलत संकेत उत्पन्न करने से बचने के लिए ओवरबॉट और ओवरसोल्ड स्थितियों का न्याय करने में मदद करने के लिए किया जाता है।
इस रणनीति में मुख्य रूप से चार भाग शामिल हैंः
डबल मूविंग एवरेज इंडिकेटर: क्रमशः 50-पीरियड और 100-पीरियड एक्सपोनेंशियल मूविंग एवरेज (ईएमए) की गणना करता है। यह एक खरीद संकेत उत्पन्न करता है जब अल्पकालिक ईएमए दीर्घकालिक ईएमए के ऊपर पार करता है, और एक बेच संकेत जब नीचे पार करता है।
ट्रिपल एक्सपोनेंशियल इंडिकेटरः बाजार की प्रवृत्ति की दिशा निर्धारित करने के लिए 50-पीरियड, 100-पीरियड और 200-पीरियड एक्सपोनेंशियल मूविंग एवरेज की गणना करता है। जब 50EMA> 100EMA> 200EMA होता है, तो यह एक तेजी वाला बाजार होता है। जब 50EMA<100EMA<200EMA होता है, तो यह एक मंदी वाला बाजार होता है।
स्टोकैस्टिक सूचक: ओवरबॉट और ओवरसोल्ड स्थितियों को निर्धारित करने के लिए आरएसआई के 6 दिन के के और डी मूल्यों की गणना करता है। जब के मूल्य डी मूल्य से ऊपर पार करता है, तो यह ओवरसोल्ड होता है। जब नीचे पार करता है, तो यह ओवरबोल्ड होता है।
ट्रेडिंग सिग्नलः केवल जब दोहरी चलती औसत सूचक एक ही समय में एक संकेत उत्पन्न करता है जब बाजार ट्रिपल घातीय चलती औसत की तेजी या मंदी की स्थिति के अनुरूप होता है, और स्टोकैस्टिक सूचक ओवरबॉट या ओवरसोल्ड नहीं दिखाता है, तो वास्तविक ट्रेडिंग ऑर्डर जारी किए जाएंगे।
यह रणनीति मूविंग एवरेज इंडिकेटर और स्टोकास्टिक इंडिकेटर के फायदे को जोड़ती है। यह ट्रेडिंग सिग्नल जारी करते समय ट्रेंड की दिशा और बाजार की ओवरबॉट / ओवरसोल्ड स्थिति दोनों को ध्यान में रखती है, जिससे स्पष्ट रुझानों को ट्रैक करने के लिए शोर को अधिक प्रभावी ढंग से फ़िल्टर किया जाता है। इसके अलावा, यह समग्र प्रवृत्ति को निर्धारित करने के लिए ट्रिपल घातीय मूविंग एवरेज का उपयोग करता है, जिससे सिग्नल अधिक विश्वसनीय हो जाते हैं। यह रणनीति सरल, लागू करने में आसान और अनुकूलित करने में आसान है।
इस रणनीति का सबसे बड़ा जोखिम यह है कि यह संकेतक निर्णयों पर निर्भर करता है। जब संकेतक गलत संकेत देता है, तो यह आसानी से असफल ट्रेडों का कारण बन सकता है। इसके अलावा, समग्र प्रवृत्ति को निर्धारित करने के लिए लंबे चक्र चलती औसत का उपयोग करते समय, कुछ अल्पकालिक अवसरों को भी याद किया जा सकता है। मुख्य जोखिम प्रति उपाय निम्नलिखित हैंः
संकेतकों के मापदंडों को अनुकूलित करना और दोहरी चलती औसत और ट्रिपल घातीय चलती औसत के चक्र संयोजनों को समायोजित करना ताकि उन्हें बाजार की विशेषताओं के अनुरूप बनाया जा सके।
बाजार में भारी उतार-चढ़ाव होने पर चालू ट्रेडों को समाप्त करने वाले CANCEL ऑपरेशन के लिए अधिक संकेतक शामिल करें।
दीर्घकालिक तेजी वाले बाजारों में अल्पकालिक अवसरों का लाभ उठाने के लिए सहायक अल्पकालिक तेजी वाली रणनीतियों का उपयोग करें।
इस रणनीति को अधिकतम करने के मुख्य पहलुओं में निम्नलिखित शामिल हैंः
बाजार की विशेषताओं के अनुरूप सूचकांक
वॉल्यूम, एमएसीडी और अन्य निर्णयों को बढ़ाएं ताकि गलत संकेतों का कारण बनने वाले असामान्य मूल्य आंदोलनों से बचा जा सके।
कम समय के पिलबैक के बाद गलत संकेतों से बचने के लिए कैंडलस्टिक पैटर्न का उपयोग करके रुझानों की पुष्टि करना बेहतर है।
इसे स्टॉक, फॉरेक्स जैसी अधिक किस्मों में विस्तारित करें और रणनीति की अनुकूलन क्षमता का परीक्षण करें।
कुल बाजार अस्थिरता और नियंत्रण स्थिति आकार निर्धारित करने के लिए VIX संकेतकों को शामिल करें।
यह रणनीति ट्रेडिंग सिग्नल जारी करने के लिए दोहरी चलती औसत संकेतकों का उपयोग करती है, जिसमें ट्रिपल घातीय चलती औसत और स्टोकैस्टिक संकेतकों के साथ पूरक होते हैं, जिससे अपेक्षाकृत स्थिर प्रवृत्ति ट्रैकिंग रणनीति का निर्माण होता है। यह सरल, लागू करने में आसान, बाजार की विशेषताओं के साथ अत्यधिक मेल खाता है, स्थिर रिटर्न प्रदान करता है। यह अनुशंसा करने के लिए एक सार्थक मात्रात्मक रणनीति है। लक्षित अनुकूलन के माध्यम से, इसमें और भी बेहतर परिणाम प्राप्त करने की क्षमता है।
/*backtest start: 2023-12-07 00:00:00 end: 2023-12-12 08:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='5212 EMA Strategy', shorttitle='5212 EMA', overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false) //**Backtest Date sof useStartPeriodTime = input.bool(true , 'Start Date & Time' , group='Date Range' , inline='Start Period') startPeriodTime = input(timestamp('16 Apr 2021') , '' , group='Date Range' , inline='Start Period') useEndPeriodTime = input.bool(false , 'End Date & Time' , group='Date Range' , inline='End Period') endPeriodTime = input(timestamp('31 Dec 2222') , '' , group='Date Range' , inline='End Period') enableHighlight = input.bool(false , 'Highlight' , group='Date Range' , inline='Highlight') highlightType = input.string('Anchors' , '' , group='Date Range' , inline='Highlight' , options=['Anchors', 'Background']) highlightColor = input.color(color.white , '' , group='Date Range' , inline='Highlight') start = useStartPeriodTime ? startPeriodTime >= time : false end = useEndPeriodTime ? endPeriodTime <= time : false calcPeriod = true // var line startAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2) // var line endAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2) // useBgcolor = false // if enableHighlight // if highlightType == 'Anchors' // if useStartPeriodTime // line.set_xy1(startAnchor, startPeriodTime, low) // line.set_xy2(startAnchor, startPeriodTime, high) // if useEndPeriodTime // line.set_xy1(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), low) // line.set_xy2(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), high) // if highlightType == 'Background' // useBgcolor := true // useBgcolor // bgcolor(useBgcolor and calcPeriod ? color.new(highlightColor,90) : na, editable=false) //**Backtest Date eof src =input(close , 'Source' , group='Support') showEMA = input(true , 'Show EMA' , group='Support') //**Stochastic RSI sof smoothK = input.int(6 , "K" , group='Stochastic RSI' , minval=1) smoothD = input.int(6 , "D" , group='Stochastic RSI' , minval=1) lengthRSI = input.int(28 , "RSI Length" , group='Stochastic RSI' , minval=1) lengthStoch = input.int(28 , "Stoch Length" , group='Stochastic RSI' , minval=1) rsi1 = ta.rsi(src, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = ta.sma(k, smoothD) //**STochastic RSI eof //** EMA sof emain01 = input.int(50 , "EMAma Girang" , group='Moving Average Exponential' , minval=1) emain02 = input.int(100 , "EMAma Muda" , group='Moving Average Exponential' , minval=1) emain03 = input.int(200 , "EMAma Tua" , group='Moving Average Exponential' , minval=1) ema01 = ta.ema(src, emain01) ema02 = ta.ema(src, emain02) ema03 = ta.ema(src, emain03) plot(showEMA ? ema01 : na, 'EMAma Girang' , color = color.new(color.orange, 0)) plot(showEMA ? ema02 : na, 'EMAma Muda' , color = color.new(color.blue, 0)) plot(showEMA ? ema03 : na, 'EMAma Tua' , color = color.new(color.red, 0)) //** EMA eof //**Condition sof emaLong = ema01 > ema02 and ema02 > ema03 and low > ema03 emaShort = ema01 < ema02 and ema02 < ema03 and high < ema03 longCond = ta.crossover(k,d) and k <= 23 and emaLong shortCond = ta.crossunder(k,d) and k >= 77 and emaShort longClose = ta.crossunder(k,d) and k <= 77 shortClose = ta.crossover(k,d) and k >= 23 longCross = ta.crossover(ema01, ema02) shortCross = ta.crossunder(ema01, ema02) //**Condition eof //**Strategy sof if calcPeriod and longCond strategy.entry('long', strategy.long, when=longCond, comment='EN Long') strategy.close('long', when=shortClose, comment='EX Long') strategy.close('long', when=shortCross, comment='MD Short') if calcPeriod and shortCond strategy.entry('short', strategy.short, when=shortCond, comment='EN Short') strategy.close('short', when=longClose, comment='EX Short') strategy.close('short', when=longCross, comment='MD Long') if calcPeriod == false and ta.crossover(ema01, ema02) or ta.crossunder(ema01, ema02) strategy.cancel('long') strategy.cancel('short') //**Strategy eof //**Label sof entryText = str.tostring(strategy.position_avg_price, '##.###') longText = 'Long Entry : ' + entryText shortText = 'Short Entry : ' + entryText noTrade = 'Sleeping Mode' LongTrade = strategy.position_size > 0 ShortTrade = strategy.position_size < 0 Tekslabel = LongTrade ? longText : ShortTrade ? shortText : noTrade xPosition = timenow + math.round(ta.change(time)*1) yPosition = ta.highest(1) labelColor = LongTrade ? color.new(color.aqua, 0) : ShortTrade ? color.new(color.red, 0) : color.new(color.gray, 0) textColor = LongTrade ? color.new(color.black, 0) : ShortTrade ? color.new(color.white, 0) : color.new(color.white, 0) // lab_l = label.new( // xPosition, yPosition, Tekslabel, // color=labelColor, // textcolor=textColor, // style = label.style_label_left, // textalign=text.align_left, // xloc=xloc.bar_time, yloc = yloc.price) // label.delete(lab_l[1]) //**Strategy eof