ट्रेंड जजमेंट के साथ संयुक्त गतिशीलता बहु-कारक मात्रात्मक ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-23 14:58:57
टैगः

img

अवलोकन

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

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

  1. एकाधिक चलती औसत और गति संकेतक की गणना करें
    • Harmonics चलती औसत, अल्पकालिक चलती औसत, मध्यम अवधि चलती औसत, लंबी अवधि चलती औसत और अन्य कई चलती औसत की गणना करें
    • मूल्य परिवर्तन की प्रवृत्ति को प्रतिबिंबित करने के लिए प्रत्येक चलती औसत के बीच अंतर की गणना करें
    • मूल्य परिवर्तनों की गति को प्रतिबिंबित करने के लिए प्रत्येक चलती औसत के प्रथम क्रम व्युत्पन्न की गणना करें
    • प्रवृत्ति की दिशा निर्धारित करने के लिए साइन और कोसिनस संकेतकों की गणना करें
  2. व्यापार संकेतों का व्यापक रूप से आकलन करें
    • गति संकेतक, प्रवृत्ति संकेतक और अन्य बहु-कारकों की भारित गणना
    • परिणाम मूल्य और सीमा के बीच की दूरी के अनुसार वर्तमान बाजार की स्थिति का न्याय करें
    • लंबी और छोटी ट्रेडिंग सिग्नल जारी करें

लाभ विश्लेषण

  1. बहु-कारक निर्णय सिग्नल की सटीकता में सुधार करता है
    • मूल्य, प्रवृत्ति, गति और अन्य कारकों पर व्यापक रूप से विचार करें
    • विभिन्न कारकों को विभिन्न भारों के साथ कॉन्फ़िगर किया जा सकता है
  2. समायोज्य मापदंड, विभिन्न बाजारों के अनुकूल
    • चलती औसत के मापदंडों, व्यापार सीमा सीमा अनुकूलित किया जा सकता है
    • विभिन्न चक्रों और बाजार वातावरणों के अनुकूल हो सकता है
  3. स्पष्ट कोड संरचना, समझने में आसान
    • नामकरण विनिर्देश, पूर्ण टिप्पणी
    • माध्यमिक विकास और अनुकूलन के लिए आसान

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

  1. पैरामीटर अनुकूलन में कठिनाई उच्च है
    • इष्टतम मापदंडों को खोजने के लिए बहुत सारे ऐतिहासिक डेटा बैकटेस्टिंग की आवश्यकता होती है
  2. व्यापारिक आवृत्ति बहुत अधिक हो सकती है
    • कई कारकों के संयोजन के निर्णय से बहुत अधिक लेनदेन हो सकते हैं
  3. बाजार के साथ उच्च सहसंबंध
    • रुझान आकलन रणनीतियाँ तर्कहीन व्यवहार के लिए प्रवण हैं

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

  1. स्टॉप लॉस लॉजिक जोड़ें
    • तर्कहीन व्यवहार के कारण होने वाले बड़े नुकसान से बचें
  2. पैरामीटर सेटिंग्स अनुकूलित करें
    • रणनीति स्थिरता में सुधार के लिए इष्टतम पैरामीटर संयोजन खोजें
  3. मशीन लर्निंग तत्वों को बढ़ाएं
    • वर्तमान बाजार की स्थिति का आकलन करने और रणनीतिक निर्णयों में सहायता करने के लिए गहरी शिक्षा का उपयोग करें

सारांश

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


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/03/2017
// This is modified version of Dale Legan's "Confluence" indicator written by Gary Fritz.
// ================================================================
// Here is Gary`s commentary:
// Since the Confluence indicator returned several "states" (bull, bear, grey, and zero), 
// he modified the return value a bit:
// -9 to -1 = Bearish
// -0.9 to 0.9 = "grey" (and zero)
// 1 to 9 = Bullish
// The "grey" range corresponds to the "grey" values plotted by Dale's indicator, but 
// they're divided by 10.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy(title="Confluence", shorttitle="Confluence")
Harmonic = input(10, minval=1)
BuyBand = input(9)
SellBand = input(-9)
reverse = input(false, title="Trade reverse")
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)

Price = close

STL = round((Harmonic * 2) - 1 - 0.5)
ITL = round((STL * 2) - 1 - 0.5)
LTL = round((ITL * 2) - 1 - 0.5)
HOFF = round(Harmonic / 2 - 0.5)
SOFF = round(STL / 2 - 0.5)
IOFF = round(ITL / 2 - 0.5)

xHavg = sma(Price, Harmonic)
xSavg = sma(Price, STL)
xIavg = sma(Price, ITL)
xLavg = sma(Price, LTL)

xvalue2 = xSavg - xHavg[HOFF]
xvalue3 = xIavg - xSavg[SOFF]
xvalue12 = xLavg - xIavg[IOFF]

xmomsig = xvalue2 + xvalue3 + xvalue12

xLavgOHLC = sma(ohlc4, LTL - 1)

xH2 = sma(Price, Harmonic - 1)
xS2 = sma(Price, STL - 1)
xI2 = sma(Price, ITL - 1)
xL2 = sma(Price, LTL - 1)

DerivH = (xHavg * 2) - xHavg[1]
DerivS = (xSavg * 2) - xSavg[1]
DerivI = (xIavg * 2) - xIavg[1]
DerivL = (xLavg * 2) - xLavg[1]
SumDH = Harmonic * DerivH
SumDS = STL * DerivS
SumDI = ITL * DerivI
SumDL = LTL * DerivL

LengH = Harmonic - 1
LengS = STL - 1
LengI = ITL - 1
LengL = LTL - 1

N1H = xH2 * LengH
N1S = xS2 * LengS
N1I = xI2 * LengI
N1L = xL2 * LengL

DRH = SumDH - N1H
DRS = SumDS - N1S
DRI = SumDI - N1I
DRL = SumDL - N1L

SumH = xH2 * (Harmonic - 1)
SumS = xS2 * (STL - 1)
SumI = xI2 * (ITL - 1)
SumL = xLavgOHLC * (LTL - 1)

xvalue5 = (SumH + DRH) / Harmonic
xvalue6 = (SumS + DRS) / STL
xvalue7 = (SumI + DRI) / ITL
xvalue13 = (SumL + DRL) / LTL

value9 = xvalue6 - xvalue5[HOFF]
value10 = xvalue7 - xvalue6[SOFF]
value14 = xvalue13 - xvalue7[IOFF]
xmom = value9 + value10 + value14

HT = sin(xvalue5 * 2 * 3.14 / 360) + cos(xvalue5 * 2 * 3.14 / 360)
HTA = sin(xHavg * 2 * 3.14 / 360) + cos(xHavg * 2 * 3.14 / 360)
ST = sin(xvalue6 * 2 * 3.14 / 360) + cos(xvalue6 * 2 * 3.14 / 360)
STA = sin(xSavg * 2 * 3.14 / 360) + cos(xSavg * 2 * 3.14 / 360)
IT = sin(xvalue7 * 2 * 3.14 / 360) + cos(xvalue7 * 2 * 3.14 / 360)
ITA = sin(xIavg * 2 * 3.14 / 360) + cos(xIavg * 2 * 3.14 / 360)

xSum = HT + ST + IT
xErr = HTA + STA + ITA

Condition2 = (((xSum > xSum[SOFF]) and (xHavg < xHavg[SOFF])) or ((xSum < xSum[SOFF]) and (xHavg > xHavg[SOFF])))
Phase = iff(Condition2 , -1 , 1)
xErrSum = (xSum - xErr) * Phase
xErrSig = sma(xErrSum, SOFF)

xvalue70 = xvalue5 - xvalue13
xvalue71 = sma(xvalue70, Harmonic)


ErrNum = iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, 1,
          iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, 2, 
           iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, 2,
             iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, 3,
              iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, -1,
               iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, -2,
                 iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, -2,
                  iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, -3, 0))))))))


momNum = iff (xmom > 0 and xmom < xmom[1] and xmom < xmomsig , 1,
          iff (xmom > 0 and xmom < xmom[1] and xmom > xmomsig, 2,
           iff (xmom > 0 and xmom > xmom[1] and xmom < xmomsig, 2,
             iff (xmom > 0 and xmom > xmom[1] and xmom > xmomsig, 3,
              iff (xmom < 0 and xmom > xmom[1] and xmom > xmomsig, -1,
               iff (xmom < 0 and xmom < xmom[1] and xmom > xmomsig, -2,
                 iff (xmom < 0 and xmom > xmom[1] and xmom < xmomsig, -2,
                  iff (xmom < 0 and xmom < xmom[1] and xmom < xmomsig, -3, 0))))))))

TCNum =  iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, 1,
          iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, 2,
           iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, 2,
             iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, 3,
              iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, -1,
               iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, -2,
                 iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, -2,
                  iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, -3,0))))))))

value42 = ErrNum + momNum + TCNum
Confluence = iff (value42 > 0 and xvalue70 > 0, value42,
              iff (value42 < 0 and xvalue70 < 0, value42,
               iff ((value42 > 0 and xvalue70 < 0) or (value42 < 0 and xvalue70 > 0), value42 / 10, 0)))
Res1 = iff (Confluence >= 1, Confluence, 0)
Res2 = iff (Confluence <= -1, Confluence, 0)
Res3 = iff (Confluence == 0, 0, iff (Confluence > -1 and Confluence < 1, 10 * Confluence, 0))
pos = iff(Res2 >= SellBand and Res2 != 0, -1,
	     iff(Res1 <= BuyBand and Res1 != 0, 1, 
	       iff(Res3 != 0, 0, nz(pos[1], 0))))
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	 
if (possig == 0)
    strategy.close("Long", when = possig == 0)	 
    strategy.close("Short", when = possig == 0)	 
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(Res1, color=green, title="Confluence", linewidth=3, style = histogram)
plot(Res2, color=red, title="Confluence", linewidth=3, style = histogram)
plot(Res3, color=gray, title="Confluence",  linewidth=3, style = histogram)



अधिक