
यह रणनीति एक रुझान-ट्रेसिंग स्टॉप-लॉस रणनीति है, जो कीमतों की अस्थिरता पर आधारित है। यह औसत वास्तविक उतार-चढ़ाव की मात्रा (एटीआर) का उपयोग करके कीमतों के उतार-चढ़ाव के लिए एक स्टॉप-लॉस लाइन स्थापित करता है। एटीआर मूल्य की अस्थिरता और जोखिम के स्तर को दर्शाता है। जब कीमत स्टॉप-लॉस लाइन से अधिक हो जाती है, तो यह रणनीति यह निर्धारित करती है कि रुझान में बदलाव हो रहा है और तदनुसार ओपनिंग या स्टॉप-लॉस ऑपरेशन किया जाता है।
यह रणनीति पहले एक निश्चित अवधि में औसत वास्तविक उतार-चढ़ाव एटीआर की गणना करती है। और फिर, वर्तमान मूल्य प्रवृत्ति की दिशा के आधार पर, यदि यह ऊपर की ओर है, तो स्टॉपलॉस को वर्तमान उच्चतम मूल्य से घटाकर n गुना एटीआर के रूप में सेट किया जाता है; यदि यह नीचे की ओर है, तो स्टॉपलॉस को वर्तमान निम्नतम मूल्य से जोड़कर n गुना एटीआर के रूप में सेट किया जाता है। जिसमें n मान को पैरामीटर के माध्यम से समायोजित किया जा सकता है, जो स्टॉपलॉस और मूल्य की दूरी को नियंत्रित करने के लिए उपयोग किया जाता है।
जब कीमतें बढ़ती प्रवृत्ति की रोकथाम रेखा को तोड़ती हैं या गिरती प्रवृत्ति की रोकथाम रेखा को तोड़ती हैं, तो यह निर्धारित किया जाता है कि प्रवृत्ति में बदलाव हुआ है। इस समय रणनीति को बंद कर दिया जाता है और नई प्रवृत्ति की दिशा के अनुसार नई रोकथाम रेखा स्थापित की जाती है।
कुल मिलाकर, यह रणनीति मूल्य की अस्थिरता का उपयोग करके एक स्टॉप-लॉस लाइन स्थापित करने की क्षमता को प्राप्त करती है, जिससे ट्रेंड में बदलाव का सटीक आकलन किया जा सकता है। जब ट्रेंड बदलता है, तो समय पर स्टॉप-लॉस रणनीति को नए ट्रेंड की दिशा को पकड़ने में मदद करता है।
यह रणनीति समग्र रूप से एक बेहतर एल्गोरिथ्म कार्यान्वयन है जो कीमतों की अस्थिरता पर आधारित स्टॉप-लॉस लाइन सेट करती है। यह मूल्य आंदोलन की उच्च सटीकता का आकलन करती है, जो प्रवृत्ति के महत्वपूर्ण मोड़ को पकड़ने में सक्षम है। साथ ही यह एक निश्चित पैरामीटर को समायोजित करने के लिए जगह प्रदान करती है, जो मजबूत अनुकूलनशीलता है। एक स्टॉप-लॉस रणनीति के रूप में, यह प्रभावी रूप से रुझान के उलट जाने के जोखिम से बचने में सक्षम है।
/*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)