
इष्टतम एटीआर स्टॉप लॉस गुणांक रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है जो औसत वास्तविक लहरों के गुणांक का उपयोग करती है (एटीआर) स्टॉप पॉइंट को सेट करने के लिए, गतिशील रूप से जोखिम को समायोजित करने के लिए। जब कीमत की प्रवृत्ति बदलती है, तो यह समय पर बंद हो सकती है, जिससे भारी नुकसान से बचा जा सकता है।
यह रणनीति पहले तेज SMA चक्र और धीमे SMA चक्र के लिए सरल चलती औसत की गणना करती है, जब तेज SMA पर धीमी SMA के माध्यम से अधिक होता है, और जब तेज SMA के नीचे धीमी SMA के माध्यम से कम होता है।
प्रवेश के बाद, यह वास्तविक समय में एटीआर के मूल्य की निगरानी करता है। एटीआर पिछले एक निश्चित अवधि में औसत उतार-चढ़ाव को दर्शाता है। यह रणनीति हमें एटीआर की अवधि की लंबाई (डिफ़ॉल्ट 14) और गुणांक (डिफ़ॉल्ट 2) को सेट करने की अनुमति देती है। सिस्टम एटीआर मूल्य की गणना प्रवेश के समय करता है, और फिर सेट किए गए गुणांक को स्टॉप लॉस दूरी के रूप में गुणा करता है।
उदाहरण के लिए, यदि प्रवेश के बाद एटीआर 50 अंक है और गुणांक 2 पर सेट है, तो स्टॉप लॉस दूरी 100 अंक है। यदि कीमत बाद में 100 अंक से अधिक चलती है, तो स्टॉप लॉस ऑर्डर ट्रिगर किया जाएगा। यह समय पर स्टॉप लॉस को रोक सकता है और बहुत अधिक नुकसान से बचा सकता है।
इस रणनीति में रुझान के फैसले को भी ध्यान में रखा गया है, और केवल लंबे समय तक स्टॉप को तब सक्रिय किया जाता है जब खरीद सिग्नल एक अपट्रेंड के साथ मेल खाता है। जबकि शॉर्ट सिग्नल एक डाउनट्रेंड के साथ मेल खाता है।
स्टॉप-लॉस लाइन को चार्ट पर चित्रित किया जाता है, जिसे हम वास्तविक समय में सत्यापित कर सकते हैं। जब स्टॉप-लॉस की स्थिति ट्रिगर होती है, तो संबंधित स्थिति को सिस्टम द्वारा स्वचालित रूप से समाप्त कर दिया जाता है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह गतिशील रूप से स्टॉप लॉस दूरी को समायोजित करता है, जो बाजार में उतार-चढ़ाव के परिवर्तन के अनुसार स्वचालित रूप से जोखिम के द्वार को संशोधित कर सकता है। जब अस्थिरता बढ़ जाती है, तो स्टॉप लॉस दूरी भी बढ़ जाती है, जिससे स्टॉप लॉस के टूटने की संभावना कम हो जाती है। जबकि कम अस्थिर बाजारों में, स्टॉप लॉस दूरी भी कम हो जाती है।
एक निश्चित स्टॉप-लॉस दूरी की तुलना में, यह ट्रेंड को ट्रैक करने के साथ-साथ एकल नुकसान को प्रभावी ढंग से नियंत्रित करने की अनुमति देता है। यह लाभ के लिए जगह की गारंटी देता है और जोखिम प्रबंधन पर ध्यान देता है।
इसके अलावा, प्रवृत्ति के आकलन के साथ संयोजन में, इस तरह के नुकसान को रोकने के तरीके को कम किया जा सकता है जब एक क्षेत्र को संरेखित किया जाता है जो झटके के कारण फिसल जाता है।
इस रणनीति का मुख्य जोखिम यह है कि स्थिति के दौरान कीमतों की छोटी रेखाएं वापस खींचती हैं, जिससे स्टॉपलॉस ऑर्डर ट्रिगर हो जाते हैं। विशेष रूप से जब एटीआर चक्र बहुत छोटा होता है, तो स्टॉपलॉस दूरी पूरी तरह से अल्पकालिक उतार-चढ़ाव के प्रभाव को फ़िल्टर नहीं कर सकती है।
एक अन्य जोखिम यह है कि चरम स्थितियों में, कीमतों में उछाल की गति सीधे स्टॉपलॉस लाइन को पार कर सकती है। इस स्थिति में स्टॉपलॉस गुणांक को बड़ा करने की आवश्यकता होती है, लेकिन इसका मतलब है कि लाभ की जगह कम हो जाती है।
अंत में, इस रणनीति ने एटीआर मूल्य पर नाइट और प्री-ऑर्डर ट्रेडों के प्रभाव को ध्यान में नहीं रखा है। इससे एटीआर डेटा की गणना की गई है जो कि रणनीति को खोलने या बंद होने पर गलत हो सकती है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
एटीआर चक्र पैरामीटर का अनुकूलन, विभिन्न बाजारों के तहत सर्वोत्तम पैरामीटर संयोजन का परीक्षण
स्थिर गुणांक और गतिशील परिवर्तन गुणांक सेटिंग्स पर रिटर्न की तुलना करना
एटीआर की गणना रात के स्टॉक और स्टॉक से पहले के आंकड़ों के साथ की जाती है ताकि स्टॉक की कीमतों में उतार-चढ़ाव को कम किया जा सके
एटीआर शर्तें सेट करेंः एटीआर के एक निश्चित स्तर तक पहुंचने के बाद ही सक्षम करें, ताकि कम अस्थिरता वाले बाजारों में अनावश्यक नुकसान से बचा जा सके
अधिक फ़िल्टरिंग शर्तों के साथः जैसे कि बड़े पैमाने पर रुझान, मात्रा और ऊर्जा संकेतक
सबसे अच्छा एटीआर स्टॉप लॉस गुणांक रणनीति गतिशील रूप से स्टॉप लॉस दूरी को समायोजित करके ट्रेंड ट्रैकिंग और जोखिम नियंत्रण के बीच एक प्रभावी संतुलन प्राप्त करती है। फिक्स्ड स्टॉप लॉस दूरी की तुलना में, यह लाभप्रदता के लिए जगह की गारंटी देते हुए एकल नुकसान को प्रभावी रूप से सीमित कर सकता है।
बेशक, कुछ संभावित जोखिमों पर ध्यान देना आवश्यक है, जैसे कि कीमतों में उछाल, अतिसंवेदनशील स्टॉपलॉस आदि। हम कई स्तरों पर रणनीति की स्थिरता और रिटर्न को बढ़ाने के लिए अनुकूलन जारी रख सकते हैं।
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//@author=Daveatt
//This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
SystemName = "BEST ATR Stop Multiple Strategy"
TradeId = "BEST"
InitCapital = 100000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true
DefaultQtyType = strategy.fixed
DefaultQtyValue = strategy.fixed
Precision = 2
Overlay=true
strategy(title=SystemName, shorttitle=SystemName, overlay=Overlay )
fastSMAperiod = input(defval=15, title='Fast SMA', type=input.integer, minval=2, step=1)
slowSMAperiod = input(defval=45, title='Slow SMA', type=input.integer, minval=2, step=1)
src = close
// Calculate moving averages
fastSMA = sma(src, fastSMAperiod)
slowSMA = sma(src, slowSMAperiod)
// Calculate trading conditions
enterLong = crossover(fastSMA, slowSMA)
enterShort = crossunder(fastSMA, slowSMA)
// trend states
since_buy = barssince(enterLong)
since_sell = barssince(enterShort)
buy_trend = since_sell > since_buy
sell_trend = since_sell < since_buy
is_signal = enterLong or enterShort
// get the entry price
entry_price = valuewhen(enterLong or enterShort, src, 0)
// Plot moving averages
plot(series=fastSMA, color=color.teal)
plot(series=slowSMA, color=color.orange)
// Plot the entries
plotshape(enterLong, style=shape.circle, location=location.belowbar, color=color.green, size=size.small)
plotshape(enterShort, style=shape.circle, location=location.abovebar, color=color.red, size=size.small)
///////////////////////////////
//======[ Trailing STOP ]======//
///////////////////////////////
// use SL?
useSL = input(true, "Use stop Loss")
// ATR multiple Stop
stop_atr_length = input(14,title="ATR Length", minval=1, type=input.integer)
stop_atr_mult = input(2,title="ATR Multiple", minval=0.05, step=0.1, type=input.float)
// Global STOP
stop_price = 0.0, stop_price := nz(stop_price[1])
// STOP ATR
var stop_atr = 0.0
var entry_stop_atr = 0.0
stop_atr := nz(atr(stop_atr_length))
if enterLong or enterShort
entry_stop_atr := stop_atr * stop_atr_mult
// display the ATR value multiple
plotshape(enterLong, title='ATR Long Stop value', style=shape.labelup,
location=location.bottom, color=color.green, transp=0, text='', textcolor=color.navy, editable=true, size=size.small, show_last=1, size=size.small)
// var label atr_long_label = na
// var label atr_short_label = na
lapos_y_entry_up = lowest(30)
lapos_y_entry_dn = highest(30)
// text_label = "ATR value: " + tostring(stop_atr, '#.#') + "\n\nATR Multiple value: " + tostring(entry_stop_atr, '#.#')
// if enterLong
// label.delete(atr_long_label)
// atr_long_label := label.new(bar_index, lapos_y_entry_up, text=text_label,
// xloc=xloc.bar_index, yloc=yloc.price, color=color.green, style=label.style_labelup, textcolor=color.white,
// size=size.normal)
// if enterShort
// label.delete(atr_short_label)
// atr_short_label := label.new(bar_index, lapos_y_entry_dn, text=text_label,
// xloc=xloc.bar_index, yloc=yloc.price, color=color.red, style=label.style_labeldown, textcolor=color.black,
// size=size.normal)
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0
longStopPrice := if useSL and buy_trend
stopValue = entry_price - entry_stop_atr
else
0
shortStopPrice := if useSL and sell_trend
stopValue = entry_price + entry_stop_atr
else
999999
//////////////////////////////////////////////////////////////////////////////////////////
//*** STOP LOSS HIT CONDITIONS TO BE USED IN ALERTS ***//
//////////////////////////////////////////////////////////////////////////////////////////
cond_long_stop_loss_hit = useSL and buy_trend and crossunder(low, longStopPrice[1])
cond_short_stop_loss_hit = useSL and sell_trend and crossover(high, shortStopPrice[1])
// Plot stop loss values for confirmation
plot(series=useSL and buy_trend and low >= longStopPrice
? longStopPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Long Trail Stop")
plot(series=useSL and sell_trend and high <= shortStopPrice
? shortStopPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Short Trail Stop")
close_long = cond_long_stop_loss_hit
close_short = cond_short_stop_loss_hit
// Submit entry orders
strategy.entry(TradeId + " L", long=true, when=enterLong)
strategy.close(TradeId + " L", when=close_long)
//if (enterShort)
strategy.entry(TradeId + " S", long=false, when=enterShort)
strategy.close(TradeId + " S", when=close_short)