ट्रिपल एक्सपोनेंशियल मूविंग एवरेज प्रॉफिट टेकिंग और स्टॉप लॉस रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-04 10:38:42
टैगः

img

अवलोकन

ट्रिपल एक्सपोनेंशियल मूविंग एवरेज प्रॉफिट टेकिंग एंड स्टॉप लॉस रणनीति बाजार में प्रवेश और निकास के लिए अलग-अलग अवधि के साथ तीन घातीय मूविंग एवरेज पर आधारित एक प्रवृत्ति-अनुसरण रणनीति है। यह जोखिम प्रबंधन के लिए लाभ लेने और स्टॉप-लॉस स्तरों को निर्धारित करने के लिए औसत सच्ची रेंज संकेतक का भी उपयोग करता है।

रणनीति तर्क

यह रणनीति तीन घातीय चलती औसत का उपयोग करती हैः तेज रेखा, मध्य रेखा और धीमी रेखा। यह लंबी हो जाती है जब मध्य रेखा धीमी रेखा के ऊपर पार करती है, और स्थिति बंद हो जाती है जब तेज रेखा मध्य रेखा के नीचे पार करती है। यह एक विशिष्ट प्रवृत्ति-अनुसरण रणनीति है जो तीन चलती औसत के पार होने के माध्यम से प्रवृत्ति की दिशा निर्धारित करती है।

साथ ही, रणनीति लाभ लेने और स्टॉप-लॉस स्तरों की गणना करने के लिए औसत सच्ची रेंज संकेतक का लाभ उठाती है। विशेष रूप से, लंबी स्थिति के लिए लाभ लेना प्रवेश मूल्य + औसत सच्ची रेंज * लाभ कारक है, और छोटी स्थिति के लिए यह प्रवेश मूल्य - औसत सच्ची रेंज * लाभ कारक है। स्टॉप लॉस तर्क समान है। यह प्रभावी रूप से बड़े नुकसान के जोखिम को सीमित करता है।

लाभ विश्लेषण

  1. निर्णय संकेतक सहज और समझने में आसान हैं।
  2. व्यवस्थित और स्वचालित करने में आसान।
  3. रुझानों का पालन और जोखिम नियंत्रण को संतुलित करता है।

जोखिम विश्लेषण

  1. कुछ देरी और समय पर उलटफेर को पकड़ने में असमर्थता है।
  2. विभिन्न बाजारों में हानि रोकने के लिए इच्छुक।
  3. पैरामीटर ट्यूनिंग में अनुकूलन की आवश्यकता होती है, अन्यथा परिणाम खराब हो सकते हैं।

जोखिम को कम करने के उपायों में निम्न शामिल हैंः चलती औसत अवधि को छोटा करना, लाभ/रोक कारक का अनुकूलन करना और सहायक संकेतक जोड़ना।

अनुकूलन दिशाएँ

  1. इष्टतम मापदंडों को खोजने के लिए चलती औसत के संयोजनों का परीक्षण करें।
  2. अन्य तकनीकी संकेतक जैसे एमएसीडी, आरएसआई आदि जोड़ें।
  3. स्वचालित रूप से मापदंडों का अनुकूलन करने के लिए मशीन लर्निंग का उपयोग करें.
  4. वास्तविक सीमा के आधार पर लाभ/स्टॉप स्तर को गतिशील रूप से समायोजित करें।
  5. भीड़भाड़ से बचने के लिए भावनाओं को शामिल करें।

निष्कर्ष

कुल मिलाकर यह स्थिर प्रदर्शन और सरल मापदंडों के माध्यम से आसान कार्यान्वयन के साथ एक प्रभावी प्रवृत्ति-अनुसरण रणनीति है। औसत सच्ची सीमा के आधार पर गतिशील लाभ लेने और स्टॉप लॉस प्रति-साइड जोखिम को सीमित करता है। लेकिन पैरामीटर अनुकूलन और संकेतक संयोजन को ओवरफिट या निर्णय देरी से बचने के लिए सावधानीपूर्वक करने की आवश्यकता है। संतुलन पर, इस रणनीति में अच्छी जोखिम-इनाम प्रोफ़ाइल है और विचार करने योग्य है।


/*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()


अधिक