इस रणनीति को एटीआर-आधारित पैरालाइट स्टॉप-लॉस रणनीति कहा जाता है। यह रणनीति एटीआर-आधारित पैरालाइट स्टॉप-लॉस वक्र के संकुचन की गति को समायोजित करने के लिए एटीआर का उपयोग करती है, जिससे यह बाजार में उतार-चढ़ाव की दर में परिवर्तन के लिए अनुकूल हो सके।
परंपरागत पारलौकिक रेखा के टूटने का त्वरण अपरिवर्तित रहता है, जो अस्थिरता की वृद्धि का सामना करने में असमर्थ है। इस रणनीति ने पारलौकिक रेखा के संकुचन की गति को एटीआर मूल्य के साथ तेज कर दिया है, ताकि अस्थिरता बढ़ने पर, स्टॉप लॉस वक्र कीमत के करीब और अधिक तेज़ी से आ सके, और जोखिम को प्रभावी ढंग से नियंत्रित कर सके।
विशेष रूप से, रणनीति मूल्य प्रवृत्ति की दिशा का आकलन करने के बाद, एटीआर मूल्य के आधार पर एक अनुकूलन त्वरण कारक की गणना करती है, और इसके आधार पर एक पैरालाइटल स्टॉपलॉस वक्र खींचती है। जब कीमत स्टॉपलॉस लाइन को तोड़ती है, तो स्टॉपलॉस पोजीशन निष्पादित करें।
इस रणनीति का लाभ यह है कि पारंपरिक पारलौकिक लाइन रोक को बाजार में उतार-चढ़ाव के आधार पर गतिशील रूप से समायोजित किया जा सकता है। लेकिन एटीआर मापदंडों को अनुकूलित करने की आवश्यकता है, और रोक को तोड़ने के लिए बहुत संवेदनशील है।
कुल मिलाकर, लाभप्रदता की रक्षा और जोखिम को नियंत्रित करने के लिए स्व-अनुकूली रोकना महत्वपूर्ण है। व्यापारियों को बाजार की स्थिति के आधार पर उपयुक्त रोक-थाम संकेतकों का चयन करना चाहिए, और पैरामीटर का परीक्षण और अनुकूलन करना चाहिए ताकि रोक-थाम रणनीति का अधिकतम लाभ उठाया जा सके।
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="ATR Parabolic SAR Strategy [QuantNomad]", shorttitle="ATR PSAR Strategy [QN]", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
atr_length = input(14)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
entry_bars = input(1, title = "Entry on Nth trend bar")
atr = atr(atr_length)
atr := na(atr) ? tr : atr
psar = 0.0 // PSAR
af = 0.0 // Acceleration Factor
trend_dir = 0 // Current direction of PSAR
ep = 0.0 // Extreme point
trend_bars = 0
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long
trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long
// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 :
barstate.isfirst[1] and close[1] <= open[1] ? -1 :
sar_long_to_short ? -1 :
sar_short_to_long ? 1 : nz(trend_dir[1])
trend_bars := sar_long_to_short ? -1 :
sar_short_to_long ? 1 :
trend_dir == 1 ? nz(trend_bars[1]) + 1 :
trend_dir == -1 ? nz(trend_bars[1]) - 1 :
nz(trend_bars[1])
// Calculate Acceleration Factor
af := trend_change ? start :
(trend_dir == 1 and high > ep[1]) or
(trend_dir == -1 and low < ep[1]) ?
min(maximum, af[1] + increment) :
af[1]
// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high :
trend_change and trend_dir == -1 ? low :
trend_dir == 1 ? max(ep[1], high) :
min(ep[1], low)
// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] :
barstate.isfirst[1] and close[1] <= open[1] ? high[1] :
trend_change ? ep[1] :
trend_dir == 1 ? psar[1] + af * atr :
psar[1] - af * atr
plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red, linewidth = 2)
// Strategy
strategy.entry("Long", true, when = trend_bars == entry_bars)
strategy.entry("Short", false, when = trend_bars == -entry_bars)