यह एक दैनिक अंतराल स्विंग ट्रेडिंग रणनीति है जो एटीआर स्टॉप का उपयोग करके गति तकनीक पर आधारित है। इसे स्थिर से कोरी होंग द्वारा बनाया गया था।
रणनीति गति संकेतक का उपयोग कर प्रवृत्ति की दिशा की पहचान करती है और कम खरीद-उच्च बिक्री स्विंग ट्रेडिंग को लागू करने के लिए एटीआर के आधार पर स्टॉप लॉस लाइनें निर्धारित करती है।
कोड पहले बैकटेस्टिंग समय सीमा सेट करता है।
इसके बाद सूचक खंड में निम्नलिखित सूचक गणना की जाती है:
प्रवृत्ति का आकलन करने का मुख्य तर्क हैः
यदि बंद पिछले डाउनसाइड स्टॉप लॉस लाइन से ऊपर है, तो इसे अपट्रेंड माना जाता है; यदि बंद पिछले अपसाइड स्टॉप लॉस लाइन से नीचे है, तो इसे डाउनट्रेंड माना जाता है।
जब रुझान बदलता है, तो स्टॉप लॉस लाइन की स्थिति को समायोजित करें।
विशेष रूप से, एक अपट्रेंड में, स्टॉप लॉस लाइन को पिछले बार की उच्चतम कीमत घटाकर एटीआर मूल्य पर सेट किया जाता है; एक डाउनट्रेंड में, स्टॉप लॉस लाइन को पिछले बार की सबसे कम कीमत प्लस एटीआर मूल्य पर सेट किया जाता है।
यह स्टॉप लॉस के बाद रुझान का एहसास करता है।
ट्रेडिंग नियम अनुभाग में, जब मूल्य स्टॉप लॉस लाइन को तोड़ता है तो लंबी/लघु स्थिति खोलें।
इस रणनीति के फायदे:
कुछ जोखिम भी हैं:
कुछ अनुकूलनः
इस रणनीति को अनुकूलित करने के लिए कुछ दिशाएंः
इष्टतम खोजने के लिए विभिन्न एटीआर मापदंडों का परीक्षण करें। कई मापदंड सेटों का बैकटेस्ट करें और रिटर्न/जोखिम अनुपात का मूल्यांकन करें।
एटीआर के ऊपर अस्थिरता मीट्रिक को जोड़कर स्टॉप लॉस को अनुकूलित करें। अस्थिरता मीट्रिक जोड़ें, अस्थिरता बढ़ने की अवधि के दौरान स्टॉप लॉस को ठीक से आराम दें।
चंचल बाजार के दौरान ट्रेडों से बचने के लिए ट्रेंड फिल्टर जोड़ें। ट्रेंड जजमेंट इंडिकेटर जोड़ें, केवल ट्रेंड स्पष्ट होने पर ही ट्रेड करें।
स्थिति आकार निर्धारण तंत्र जोड़ें. खाता उपयोग अनुपात, लगातार स्टॉप लॉस समय आदि के आधार पर स्थिति आकार समायोजित करें.
ओवरनाइट गैप जोखिम नियंत्रण जोड़ें। ओवरनाइट गैप जोखिम से बचने के लिए बाजार बंद होने से पहले सक्रिय रूप से नुकसान में कटौती करें।
एक बुनियादी दैनिक स्विंग ट्रेडिंग रणनीति के रूप में, समग्र तर्क स्पष्ट है। यह गति तकनीक के साथ प्रवृत्ति का न्याय करता है और एटीआर का उपयोग स्टॉप लॉस के लिए करता है, प्रभावी रूप से जोखिम को नियंत्रित करता है।
अनुकूलन के लिए अभी भी बड़ी जगह है, रणनीति को अधिक व्यावहारिक बनाने के लिए प्रवृत्ति निर्णय, स्टॉप लॉस विधि, स्थिति आकार आदि जैसे पहलुओं से सुधार किया जा सकता है। कुल मिलाकर यह रणनीति मात्रात्मक व्यापार के लिए एक ठोस ढांचा प्रदान करती है।
/*backtest start: 2023-01-29 00:00:00 end: 2024-02-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100) ///////////////////////////////////////////////////////////// //START - SET DATE RANGE // === BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1) FromDay = input(defval = 1, title = "From Day", minval = 1) FromYear = input(defval = 2010, title = "From Year") ToMonth = input(defval = 12, title = "To Month", minval = 1) ToDay = input(defval = 31, title = "To Day", minval = 1) ToYear = input(defval = 2020, title = "To Year") startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1) endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59) withinTimeRange = true ///////////////////////////////////////////////////////////// //END - SET DATE RANGE ///////////////////////////////////////////////////////////// //START - INDICATORS length = input(3) mult = input(1, minval = 0.01) atr_ = atr(length) max1 = max(nz(max_[1]), close) min1 = min(nz(min_[1]), close) is_uptrend_prev = nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend = close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ = is_trend_changed ? close : max1 min_ = is_trend_changed ? close : min1 vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2) ///////////////////////////////////////////////////////////// //END - INDICATORS ///////////////////////////////////////////////////////////// //START - TRADING RULES direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) condition1 = close > vstop and withinTimeRange condition2 = close < vstop and withinTimeRange strategy.entry("BUY", strategy.long, when = condition1) strategy.entry("SELL", strategy.short, when = condition2) ///////////////////////////////////////////////////////////// //END - TRADING RULES