ट्रिपल सुपरट्रेंड इचिमोकू क्लाउड क्वांटिटेटिव ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-27 15:22:40
टैगः

img

सारांश

यह रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो ट्रिपल सुपरट्रेंड इंडिकेटर, इचिमोकु क्लाउड इंडिकेटर, औसत सच्ची सीमा (एटीआर) इंडिकेटर और घातीय चलती औसत (ईएमए) को जोड़ती है। यह बाजार की प्रवृत्ति निर्धारित करने के लिए ट्रिपल सुपरट्रेंड, समर्थन और प्रतिरोध के लिए इचिमोकु क्लाउड, स्टॉप लॉस के लिए एटीआर, प्रवृत्ति की पुष्टि के लिए ईएमए का उपयोग करता है ताकि एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली बनाई जा सके।

रणनीतिक सिद्धांत

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

इसके अलावा, इचिमोकू बादल की मोटाई कुछ झूठे संकेतों को फ़िल्टर करने के लिए वर्तमान प्रवृत्ति की ताकत निर्धारित करने में मदद करती है। एटीआर संकेतक का उपयोग स्टॉप लॉस सेट करने के लिए किया जाता है। ईएमए संकेतक मध्य और दीर्घकालिक रुझानों की पुष्टि करता है।

विशेष रूप से, जब कीमत तीनों सुपरट्रेंड संकेतकों के ऊपरी बैंड से ऊपर होती है, और जब तीनों के निचले बैंड से नीचे होती है, तो शॉर्ट हो जाती है। अनिश्चित संकेतों को फ़िल्टर करने के लिए इचिमोकू क्लाउड से ऊपर या नीचे होने की भी आवश्यकता होती है। स्टॉप लॉस को एंट्री प्राइस माइनस एटीआर वैल्यू के लिए सेट किया जाता है।

लाभ

  1. विभिन्न सेटिंग्स वाले ट्रिपल सुपरट्रेंड इंडिकेटर प्रभावी रूप से बाजार शोर को फ़िल्टर कर सकते हैं और प्रवृत्ति की दिशा को अधिक सटीक रूप से निर्धारित कर सकते हैं।

  2. इचिमोकू क्लाउड झूठे ब्रेकआउट से बचने के लिए प्रवृत्ति की ताकत निर्धारित करता है। एटीआर स्टॉप लॉस सेटिंग अधिकतम मात्रा में भारी नुकसान से बचने के लिए उचित है।

  3. ईएमए मध्यम और दीर्घकालिक रुझान की दिशा की पुष्टि करने में सहायता करता है, सुपरट्रेंड से संकेतों का सत्यापन करता है, विश्वसनीयता में और सुधार करता है।

  4. कई संकेतकों को मिलाकर संकेत अधिक विश्वसनीय होते हैं क्योंकि वे बाजार की प्रवृत्ति निर्धारित करते समय एक-दूसरे का सत्यापन कर सकते हैं।

जोखिम

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

  2. जब अस्थिरता अधिक होती है, तो एटीआर द्वारा निर्धारित स्टॉप लॉस को सीधे ट्रिगर किया जा सकता है, जिससे हानि दर बढ़ जाती है। मापदंडों को समायोजित किया जा सकता है या स्टॉप लॉस रेंज बढ़ाई जा सकती है।

  3. यदि सुपरट्रेंड मापदंडों को अनुचित रूप से सेट किया जाता है तो अमान्य संकेत अक्सर हो सकते हैं। इष्टतम संयोजन खोजने के लिए बहुत सारे बैकटेस्ट की आवश्यकता होती है।

सुधार

  1. संकेतों को फ़िल्टर करने और विश्वसनीयता में सुधार करने में सहायता के लिए अस्थिरता सूचकांक, बोलिंगर बैंड जैसे अधिक संकेतक जोड़े जा सकते हैं।

  2. एटीआर गणना में सुधार करना ताकि भारी उतार-चढ़ाव के दौरान गतिशील रूप से स्टॉप लॉस रेंज को कम हानि दर के लिए समायोजित किया जा सके।

  3. मैनुअल पैरामीटर सेटिंग के बजाय ट्रेडिंग सिग्नल का न्याय करने के लिए ऐतिहासिक डेटा पर प्रशिक्षित मशीन लर्निंग मॉडल जोड़ें। सिग्नल सटीकता में सुधार किया जा सकता है।

निष्कर्ष

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


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="HyperTrend", shorttitle="HyperTrend", overlay=true )

// 
float percent_of_portfo = input.int(2, title = "percent of portfo per order", minval = 0, maxval = 100) / 100

// ichimoku Cloud
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length", group = "ichimoku")
basePeriods = input.int(26, minval=1, title="Base Line Length", group = "ichimoku")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length", group = "ichimoku")
displacement = input.int(26, minval=1, title="Lagging Span", group = "ichimoku")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
	 title="Leading Span A", display = display.none)
p2 = plot(leadLine2, offset = displacement - 1, color=#ef9a9a,
	 title="Leading Span B", display = display.none)
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none) 
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none) 
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 72, 59) : color.rgb(244, 67, 54, 70))


// three supertrend

//1
atrPeriod1 = input(10, "ATR Length1", group="SuperTrend")
factor1 = input.float(1.0, "Factor1", step = 0.01, group="SuperTrend")

[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)
supertrend1 := barstate.isfirst ? na : supertrend1

bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend1 =    plot(direction1 < 0 ? supertrend1 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend1 =  plot(direction1 < 0 ? na : supertrend1, "Down Trend", color = color.red,   style = plot.style_linebr)


//2
atrPeriod2 = input(11, "ATR Length2", group="SuperTrend")
factor2 = input.float(2.0, "Factor2", step = 0.01, group="SuperTrend")

[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)
supertrend2 := barstate.isfirst ? na : supertrend2

bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend2 =    plot(direction2 < 0 ? supertrend2 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend2 =  plot(direction2 < 0 ? na : supertrend2, "Down Trend", color = color.red,   style = plot.style_linebr)


//3
atrPeriod3 = input(12, "ATR Length2", group="SuperTrend")
factor3 = input.float(3.0, "Factor2", step = 0.01, group="SuperTrend")

[supertrend3, direction3] = ta.supertrend(factor3, atrPeriod3)
supertrend3 := barstate.isfirst ? na : supertrend3

bodyMiddle3 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend3 =    plot(direction3 < 0 ? supertrend3 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend3 =  plot(direction3 < 0 ? na : supertrend3, "Down Trend", color = color.red,   style = plot.style_linebr)


// ATR
lengthATR = input.int(title="Length (ATR)", defval=14, minval=1, group="ATR")
smoothingATR = input.string(title="Smoothing (ATR)", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"], group="ATR")
ma_function(sourceATR, lengthATR) =>
	switch smoothingATR
		"RMA" => ta.rma(sourceATR, lengthATR)
		"SMA" => ta.sma(sourceATR, lengthATR)
		"EMA" => ta.ema(sourceATR, lengthATR)
		=> ta.wma(sourceATR, lengthATR)
ATR = ma_function(ta.tr(true), lengthATR)
plot(ATR, title = "ATR", color=color.new(#B71C1C, 0), display = display.none)

// EMA
lenEMA = input.int(200, minval=1, title="Length of EMA", group="EMA")
srcEMA = input(close, title="Source of EMA", group="EMA")
offset = input.int(title="Offset (EMA)", defval=0, minval=-500, maxval=500, group="EMA")
outEMA = ta.ema(srcEMA, lenEMA)
plot(outEMA, title="EMA", color=color.blue, offset=offset, display = display.none)

ma(sourceEMA, lengthEMA, type) =>
    switch type
        "SMA" => ta.sma(sourceEMA, lengthEMA)
        "EMA" => ta.ema(sourceEMA, lengthEMA)
        "SMMA (RMA)" => ta.rma(sourceEMA, lengthEMA)
        "WMA" => ta.wma(sourceEMA, lengthEMA)
        "VWMA" => ta.vwma(sourceEMA, lengthEMA)

typeMA = input.string(title = "Method (EMA)", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="EMA")
smoothingLengthEMA = input.int(title = "Smoothing Length (EMA)", defval = 5, minval = 1, maxval = 100, group="EMA")

smoothingLine = ma(outEMA, smoothingLengthEMA, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)


//logic



if (open + ATR > supertrend1) and (open + ATR > supertrend2) and (open + ATR > supertrend3) 
	strategy.entry("L", strategy.long)
else if (open < supertrend1 + ATR) and (open < supertrend2 + ATR) and (open < supertrend3 + ATR) 
	strategy.entry("S", strategy.short)
else
	strategy.close_all("C")

अधिक