यह एक प्रवृत्ति ट्रैकिंग स्टॉप लॉस रणनीति है जो मूल्य अस्थिरता पर आधारित है। यह मूल्य उतार-चढ़ाव के लिए स्टॉप लॉस लाइनें निर्धारित करने के लिए औसत सच्ची सीमा (एटीआर) का उपयोग करता है। एटीआर कीमतों की अस्थिरता और जोखिम स्तर को दर्शाता है। जब कीमत स्टॉप लॉस लाइन से अधिक हो जाती है, तो रणनीति प्रवृत्ति उलट का न्याय करती है और पदों को खोलने या नुकसान रोकने के लिए संबंधित कार्रवाई करती है।
रणनीति पहले एक निश्चित अवधि में औसत सच्ची सीमा (एटीआर) की गणना करती है। फिर वर्तमान मूल्य प्रवृत्ति दिशा के आधार पर, यदि यह एक अपट्रेंड है, तो स्टॉप लॉस लाइन वर्तमान उच्चतम मूल्य माइनस एन बार एटीआर पर सेट की जाती है; यदि यह एक डाउनट्रेंड है, तो स्टॉप लॉस लाइन वर्तमान सबसे कम मूल्य प्लस एन बार एटीआर पर सेट की जाती है। स्टॉप लॉस लाइन और मूल्य के बीच की दूरी को नियंत्रित करने के लिए पैरामीटर के माध्यम से एन मूल्य को समायोजित किया जा सकता है।
जब कीमत अपट्रेंड या डाउनट्रेंड की स्टॉप लॉस लाइन को तोड़ती है, तो ट्रेंड बदल गया है। इस बिंदु पर, रणनीति स्टॉप लॉस के लिए पदों को साफ करती है और नए ट्रेंड की दिशा के आधार पर एक नई स्टॉप लॉस लाइन सेट करती है।
संक्षेप में, रणनीति रुझान परिवर्तनों का सटीक न्याय प्राप्त करने के लिए स्टॉप लॉस लाइनों को सेट करने के लिए मूल्य अस्थिरता का उपयोग करती है। रुझान परिवर्तन के समय समय पर स्टॉप लॉस रणनीति को नई प्रवृत्ति की दिशा को समझने में मदद करता है।
कुल मिलाकर, यह मूल्य अस्थिरता के आधार पर स्टॉप लॉस लाइनों को स्थापित करने के लिए एक अच्छा एल्गोरिथ्म कार्यान्वयन है। मूल्य रुझानों का न्याय करने में इसकी सटीकता उच्च है और यह रुझानों के प्रमुख मोड़ बिंदुओं को पकड़ सकता है। यह बेहतर अनुकूलन क्षमता के लिए पैरामीटर ट्यूनिंग के लिए कुछ जगह भी प्रदान करता है। एक स्टॉप लॉस रणनीति के रूप में, यह प्रभावी रूप से बाजार उलट के जोखिमों से बच सकता है और लाइव ट्रेडिंग में लागू करने के लायक है।
/*backtest start: 2022-11-30 00:00:00 end: 2023-11-30 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/ // © laptevmaxim92 //@version=4 strategy("Volatility stop strategy", overlay=true) length = input(20) mult = input(2, step = 0.1) utp = input(false, "Use take profit?") pr = input(100, "Take profit pips") usl = input(false, "Use stop loss?") sl = input(100, "Stop loss pips") fromday = input(01, defval=01, minval=01, maxval=31, title="From Day") frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month") fromyear = input(2000, minval=1900, maxval=2100, title="From Year") today = input(31, defval=01, minval=01, maxval=31, title="To Day") tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month") toyear = input(2039, minval=1900, maxval=2100, title="To Year") use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)) atr_ = atr(length) max_ = 0.0 min_ = 0.0 max1 = 0.0 max1 := max(nz(max_[1]), close) min1 = 0.0 min1 := min(nz(min_[1]), close) vstop = 0.0 is_uptrend = false is_uptrend_prev = false 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 ? color.green : color.red, linewidth=2) longCondition = is_uptrend if (longCondition and use_date) strategy.entry("BUY", strategy.long) shortCondition = not is_uptrend if (shortCondition and use_date) strategy.entry("SELL", strategy.short) if (utp and not usl) strategy.exit("TP", "BUY", profit = pr) strategy.exit("TP", "SELL", profit = pr) if (usl and not utp) strategy.exit("SL", "BUY", loss = sl) strategy.exit("SL", "SELL", loss = sl) if (usl and utp) strategy.exit("TP/SL", "BUY", loss = sl, profit = pr) strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)