गौसियन त्रुटि फंक्शन के आधार पर मात्रात्मक ट्रेडिंग रणनीति का विश्लेषण

लेखक:चाओझांग, दिनांकः 2024-01-19 14:28:03
टैगः

img

अवलोकन

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

रणनीति तर्क

इस रणनीति का मुख्य सूचक पी-सिग्नल है। पी-सिग्नल का गणना सूत्र हैः

fPSignal(ser, int) =>
    nStDev = stdev(ser, int) 
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)

यहाँ ser मूल्य श्रृंखला का प्रतिनिधित्व करता है, int पैरामीटर nPoints का प्रतिनिधित्व करता है, जो कि वापस देखने के लिए बार की संख्या है। इस सूत्र में तीन भाग होते हैंः

  1. nStDev मूल्य का मानक विचलन है;
  2. nSma मूल्य का सरल चलती औसत है;
  3. fErf गौसियन त्रुटि फलन है.

पूरे सूत्र का अर्थ है कि मूल्य के चलती औसत को मूल्य के मानक विचलन से विभाजित करना, फिर मानकीकरण के लिए वर्ग वर्ग से विभाजित करना, और अंत में गौसियन त्रुटि फ़ंक्शन द्वारा (-1, 1) रेंज में मैप करना। यानी यदि मूल्य उतार-चढ़ाव औसत से अधिक है, तो पी-सिग्नल 1 के करीब है; यदि मूल्य उतार-चढ़ाव औसत से कम है, तो पी-सिग्नल -1 के करीब है।

रणनीति में प्रवेश और निकास निर्धारित करने के लिए पी-सिग्नल के मूल्य और इसके परिवर्तन के संकेत का उपयोग किया जाता हैः

strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)

strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)  

यह लंबे समय तक जाता है जब पी-सिग्नल 0 से कम होता है और सकारात्मक में बदल जाता है। यह स्थिति बंद करता है जब पी-सिग्नल 0 से अधिक होता है और नकारात्मक में बदल जाता है।

लाभ

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

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

जोखिम

इस रणनीति के साथ कुछ जोखिम भी हैंः

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

इन जोखिमों को कम करने के लिए कुछ उपायों पर विचार किया जा सकता हैः व्यापार की आवृत्ति को कम करने के लिए फिल्टर जोड़ना; पैरामीटर संयोजन का अनुकूलन और लेनदेन लागत की स्थापना; लाइव परीक्षण और उपयुक्त उत्पादों का चयन करना।

सुधार

इसमें और सुधार की संभावना हैः

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

निष्कर्ष

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


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

// **********************************************************************************************************
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// P-Signal Strategy © Kharevsky
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy", precision = 3)
// Parameters and const of P-Signal.
nPoints = input(title = "Number of Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
    nT = 1.0/(1.0 + 0.5*abs(x))
    nAns = 1.0 - nT*exp(-x*x - 1.26551223 + 
     nT*( 1.00002368 + nT*( 0.37409196 + nT*( 0.09678418 + 
     nT*(-0.18628806 + nT*( 0.27886807 + nT*(-1.13520398 + 
     nT*( 1.48851587 + nT*(-0.82215223 + nT*( 0.17087277 ))))))))))
    x >= 0 ? nAns : -nAns
fPSignal(ser, int) => 
    nStDev = stdev(ser, int)
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)
// Strat.
float nPSignal = sma(fPSignal(change(ohlc4), nIntr), nIntr)
float ndPSignal = sign(nPSignal[0] - nPSignal[1])
strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)
strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)
// Plotting. 
hline(+1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
hline(-1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
plot(nPSignal, color = color.blue, style = plot.style_line)
plot(strategy.position_size, color = color.white, style = plot.style_cross)
// Alerts.
if(strategy.position_size[0] > strategy.position_size[1])
    alert("P-Signal strategy opened the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
if(strategy.position_size[0] < strategy.position_size[1])
    alert("P-Signal strategy closed the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
// The end.

अधिक