यह रणनीति एक दो-दिशात्मक ट्रेडिंग रणनीति है जो अस्थिरता को ट्रैक करती है। यह स्टॉप लॉस सेट करने के लिए औसत सच्ची रेंज (एटीआर) संकेतक का उपयोग करती है और स्टॉप लॉस स्तर को तोड़ने की कीमत के आधार पर प्रवृत्ति दिशा निर्धारित करती है। यह ट्रेंड दिशा में बदलाव होने पर रिवर्स पोजीशन खोलती है।
रणनीति अस्थिरता की गणना करने के लिए 3-दिवसीय एटीआर का उपयोग करती है। एक गुणांक से गुणा एटीआर मूल्य को स्टॉप लॉस स्तर के रूप में उपयोग किया जाता है। जब कीमत स्टॉप लॉस स्तर से ऊपर होती है, तो यह इसे एक अपट्रेंड के रूप में आंकता है और जब कीमत स्टॉप लॉस स्तर से नीचे गिरती है तो लंबी स्थिति को बंद कर देता है। जब कीमत स्टॉप लॉस स्तर से नीचे होती है, तो यह इसे एक डाउनट्रेंड के रूप में आंकता है और जब कीमत स्टॉप लॉस स्तर से ऊपर उठती है तो शॉर्ट स्थिति को बंद कर देती है। यह रुझान बदलने पर रिवर्स स्थिति खोलती है। रुझान के दौरान स्टॉप लॉस स्तर को अनुकूलित किया जाता है और रुझान बदलने पर रीसेट किया जाता है।
जोखिमों को कम करने के लिए: व्यापक स्टॉप स्तरों के लिए एटीआर गुणांक बढ़ाएं, व्यापार की आवृत्ति को सीमित करें, न्यूनतम लाभ लेने के स्तर निर्धारित करें, आदि।
यह एक समग्र स्थिर दो-दिशात्मक ट्रेलिंग स्टॉप रणनीति है। एटीआर ड्रॉडाउन को नियंत्रित करने के लिए गतिशील स्टॉप स्तर निर्धारित करता है। दो-दिशात्मक ट्रेडिंग से लाभ की संभावनाएं भी बढ़ जाती हैं। आगे के अनुकूलन रणनीति को अधिक मजबूत बना सकते हैं, प्रवृत्ति के बाद क्षमताओं को बढ़ा सकते हैं।
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BCH Swinger v1", 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 = 2017, title = "From Year") ToMonth = input(defval = 10, title = "To Month", minval = 1) ToDay = input(defval = 01, 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