यह रणनीति दोहरी चलती औसत के माध्यम से लंबे और छोटे संकेत उत्पन्न करती है और ट्रैकिंग स्टॉप लॉस को लागू करती है। मूल विचार चलती औसत के साथ प्रवृत्ति की दिशा निर्धारित करना, प्रवृत्ति के साथ लंबा या छोटा जाना और स्टॉप लॉस को ट्रैक करने के लिए स्टॉप लॉस की गणना करने के लिए एटीआर का उपयोग करना है।
यह रणनीति एचएल 2 को स्रोत मूल्य के रूप में उपयोग करती है और स्टॉप लॉस रेंज के रूप में एक निश्चित अवधि के एटीआर की गणना करती है। ऊपरी और निचले बैंड की गणना एक निश्चित कारक से गुणा एटीआर के आधार पर की जाती है। जब कीमत ऊपरी बैंड से ऊपर टूट जाती है, तो एक खरीद संकेत लंबे समय तक जाने के लिए उत्पन्न होता है। जब कीमत निचले बैंड से नीचे टूट जाती है, तो एक बिक्री संकेत शॉर्ट जाने के लिए उत्पन्न होता है।
ट्रेडिंग स्टॉप लॉस को ट्रैक करने के लिए एटीआर में परिवर्तन के आधार पर स्टॉप लॉस को वास्तविक समय में समायोजित किया जाता है। विशेष रूप से, लंबे समय तक जाने के बाद, स्टॉप लॉस को ट्रैक करने के लिए नवीनतम निचले स्तर के आधार पर निचले बैंड को क्रमिक रूप से बढ़ाया जाता है। शॉर्ट होने के बाद, स्टॉप लॉस को ट्रैक करने के लिए नवीनतम उच्च के आधार पर ऊपरी बैंड को क्रमिक रूप से कम किया जाता है।
इस प्रकार, यह रणनीति ट्रेडिंग दिशा और जोखिम नियंत्रण सुनिश्चित करने के लिए एटीआर पर आधारित ट्रैकिंग स्टॉप लॉस तंत्र को भी शामिल करती है।
इस रणनीति का सबसे बड़ा लाभ जोखिम नियंत्रण में निहित है। पारंपरिक चलती औसत रणनीतियाँ केवल दिशात्मक निर्णयों पर विचार करती हैं और आसानी से खातों को उड़ा सकती हैं। स्टॉप लॉस को ट्रैक करने के लिए एटीआर को शामिल करके, यह रणनीति बाजार की अस्थिरता के आधार पर स्टॉप लॉस को गतिशील रूप से समायोजित कर सकती है ताकि प्रभावी ढंग से ट्रेडिंग जोखिमों को नियंत्रित किया जा सके।
इसके अतिरिक्त, यह रणनीति दो-दिशात्मक व्यापार को जोड़ती है। एकल-दिशात्मक रणनीतियों की तुलना में, यह रुझानों के उलट होने पर स्थिति दिशाओं को तुरंत समायोजित कर सकती है, एक दिशा में फंसने से बचती है और रणनीति लाभप्रदता में सुधार करती है।
इस रणनीति के मुख्य जोखिम एटीआर अवधि और गुणक की पैरामीटर सेटिंग्स से आते हैं। यदि एटीआर अवधि बहुत कम या गुणक बहुत बड़ा है, तो जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस रेंज बहुत छोटी होगी। यदि एटीआर अवधि बहुत लंबी या गुणक बहुत छोटा है, तो स्टॉप लॉस लाभ के लिए बहुत ढीला होगा। इसके अलावा, झूठे ब्रेकआउट के जोखिम हैं जब कीमतें चलती औसत में प्रवेश करती हैं।
एटीआर अवधि और गुणक को स्टॉप लॉस और लाभ लक्ष्यों के बीच संतुलन बनाने के लिए अनुकूलित करके जोखिमों का प्रबंधन किया जा सकता है, और झूठे ब्रेकआउट को फ़िल्टर करने और सिग्नल गुणवत्ता में सुधार के लिए अन्य संकेतकों को शामिल किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं से बढ़ाया जा सकता हैः
सबसे अच्छा पैरामीटर संयोजन खोजने के लिए चलती औसत अवधि का अनुकूलन करें।
संकेतों को फ़िल्टर करने और गुणवत्ता में सुधार करने के लिए एमएसीडी, केडीजे आदि जैसे अन्य संकेतक जोड़ें।
लाभप्रदता बढ़ाने के लिए निश्चित अंश, मार्टिंगेल आदि जैसे पद आकार को शामिल करें।
शोध पैरामीटर अनुकूलन के लिए विभिन्न उत्पादों के बीच मतभेद।
पैरामीटर प्रशिक्षण और अनुकूलन के लिए आनुवंशिक एल्गोरिदम की तरह मशीन लर्निंग लागू करें।
यह रणनीति पूरी तरह से प्रवृत्ति न्याय और जोखिम नियंत्रण पर विचार करती है, ड्रॉडाउन को कम करते हुए लाभ का पीछा करती है। पैरामीटर अनुकूलन और पोर्टफोलियो विधियों के माध्यम से आगे का सुधार रणनीति लाभप्रदता में सुधार करने में मदद कर सकता है। सारांश में, यह स्पष्ट तर्क और आसान कार्यान्वयन के साथ एक मजबूत और स्थिर मात्रात्मक व्यापारिक रणनीति है।
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //@version=4 strategy("Trenbolone Strategy", overlay = true) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 999) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 999) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = buySignal if (longCondition) strategy.entry("BUY", strategy.long, when = window()) shortCondition = sellSignal if (shortCondition) strategy.entry("SELL", strategy.short, when = window()) buy1 = barssince(buySignal) sell1 = barssince(sellSignal) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na barcolor(barcoloring ? color1 : na)