
तीन सूचकांक औसत रेखा स्टॉप लॉस रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है जो तीन अलग-अलग अवधि के सूचकांक चलती औसत के आधार पर बाजार में प्रवेश करती है। यह एक ही समय में औसत वास्तविक आयाम संकेतक का उपयोग करके स्टॉप लॉस की सीमा निर्धारित करती है, जो जोखिम प्रबंधन को लागू करती है।
यह रणनीति तीन सूचकांक चलती औसत का उपयोग करती हैः तेज, मध्यम और धीमी रेखा। जब मध्य रेखा धीमी रेखा से गुजरती है तो अधिक करें; जब तेज रेखा के नीचे मध्य रेखा से गुजरती है तो बराबरी करें। यह एक विशिष्ट प्रवृत्ति ट्रैकिंग रणनीति है, जो तीन समान रेखाओं के बहुभाषी रूपांतरण द्वारा प्रवृत्ति की दिशा का न्याय करती है।
साथ ही, यह रणनीति औसत वास्तविक तरंगों के संकेतकों का उपयोग करके स्टॉप-स्टॉप-लॉस की गणना करती है। विशेष रूप से, एक से अधिक स्टॉप-लॉस प्रवेश मूल्य + औसत वास्तविक तरंगों के लिए होते हैं।*स्टॉप-स्टॉप गुणांक; प्रवेश मूल्य के रूप में खाली स्टॉप-स्टॉप स्थान - औसत वास्तविक तरंग दैर्ध्य*रोकथाम गुणांक. रोकथाम सिद्धांत रोकथाम के समान है. यह प्रभावी रूप से एकतरफा जोखिम को सीमित कर सकता है.
जोखिम प्रतिक्रिया उपायों में शामिल हैंः औसत चक्र को उचित रूप से छोटा करना, स्टॉप-स्टॉप-लॉस गुणांक को अनुकूलित करना, अन्य निर्णय लेने वाले मापदंडों को जोड़ना।
इस रणनीति के लिए समग्र रूप से एक प्रभाव स्थिर प्रवृत्ति ट्रैक रणनीति है, सरल पैरामीटर सेट करने के लिए, आसानी से लागू. गतिशील स्टॉप और औसत वास्तविक आयाम के स्टॉप, एकतरफा जोखिम को सीमित कर सकते हैं. लेकिन पैरामीटर अनुकूलन और सूचक संयोजन पर ध्यान देने की आवश्यकता है, अति-अनुकूलन और निर्णय लेने में देरी से बचने के लिए. कुल मिलाकर, जोखिम-लाभ संतुलन अच्छा है, यह विचार करने लायक है.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//© Densz
strategy("3EMA with TP & SL (ATR)", overlay=true )
// INPUTS
startTime = input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2017 00:00 +0000"))
endTime = input(title="End Time", type = input.time, defval = timestamp("01 Jan 2022 00:00 +0000"))
slowEMALength = input(title="Slow EMA Length", type = input.integer, defval = 55)
middleEMALength = input(title="Middle EMA Length", type = input.integer, defval = 21)
fastEMALength = input(title="Fast EMA Length", type = input.integer, defval = 9)
trendMALength = input(title="Trend indicator MA Length", type = input.integer, defval = 200)
atrLength = input(title="ATR Length", type = input.integer, defval = 14)
tpATRMult = input(title="Take profit ATR multiplier", type = input.integer, defval = 3)
slATRMult = input(title="Stop loss ATR multiplier", type = input.integer, defval = 2)
rsiLength = input(title="RSI Length", type = input.integer, defval = 14)
// Indicators
slowEMA = ema(close, slowEMALength)
middEMA = ema(close, middleEMALength)
fastEMA = ema(close, fastEMALength)
atr = atr(atrLength)
rsiValue = rsi(close, rsiLength)
isRsiOB = rsiValue >= 80
isRsiOS = rsiValue <= 20
sma200 = sma(close, trendMALength)
inDateRange = true
// Plotting
plot(slowEMA, title="Slow EMA", color=color.red, linewidth=2, transp=50)
plot(middEMA, title="Middle EMA", color=color.orange, linewidth=2, transp=50)
plot(fastEMA, title="Fast EMA", color=color.green, linewidth=2, transp=50)
plot(sma200, title="SMA Trend indicator", color=color.purple, linewidth=3, transp=10)
plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="OB")
plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangledown, text="OS")
float takeprofit = na
float stoploss = na
var line tpline = na
var line slline = na
if strategy.position_size != 0
takeprofit := takeprofit[1]
stoploss := stoploss[1]
line.set_x2(tpline, bar_index)
line.set_x2(slline, bar_index)
line.set_extend(tpline, extend.none)
line.set_extend(slline, extend.none)
// STRATEGY
goLong = crossover(middEMA, slowEMA) and inDateRange
closeLong = crossunder(fastEMA, middEMA) and inDateRange
if goLong
takeprofit := close + atr * tpATRMult
stoploss := close - atr * slATRMult
// tpline := line.new(bar_index, takeprofit, bar_index, takeprofit, color=color.green, width=2, extend=extend.right, style=line.style_dotted)
// slline := line.new(bar_index, stoploss, bar_index, stoploss, color=color.red, width=2, extend=extend.right, style=line.style_dotted)
// label.new(bar_index, takeprofit, "TP", style=label.style_labeldown)
// label.new(bar_index, stoploss, "SL", style=label.style_labelup)
strategy.entry("Long", strategy.long, when = goLong)
strategy.exit("TP/SL", "Long", stop=stoploss, limit=takeprofit)
if closeLong
takeprofit := na
stoploss := na
strategy.close(id = "Long", when = closeLong)
if (not inDateRange)
strategy.close_all()