गॉसियन त्रुटि फ़ंक्शन पर आधारित मात्रात्मक ट्रेडिंग रणनीति


निर्माण तिथि: 2024-01-19 14:28:03 अंत में संशोधित करें: 2024-01-19 14:28:03
कॉपी: 1 क्लिक्स: 647
1
ध्यान केंद्रित करना
1617
समर्थक

गॉसियन त्रुटि फ़ंक्शन पर आधारित मात्रात्मक ट्रेडिंग रणनीति

अवलोकन

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

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

इस रणनीति के लिए केंद्रीय संकेतक पी-सिग्नल है। पी-सिग्नल के लिए गणना सूत्र निम्नानुसार हैः

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

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

  1. nStDev मूल्य का मानक अंतर है;
  2. nSma कीमतों का सरल चल औसत है;
  3. fErf एक गॉस त्रुटि फ़ंक्शन है.

पूरे सूत्र का अर्थ है कि कीमतों के चल औसत को कीमतों के मानक विचलन से विभाजित करना, फिर इसे sqrt ((2) से विभाजित करना, और फिर इसे गॉस त्रुटि फ़ंक्शन द्वारा ((-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. Gaussian त्रुटि फ़ंक्शन का उपयोग करके मूल्य वितरण को अनुकूलित करें। Gaussian त्रुटि फ़ंक्शन सामान्य वितरण के लिए अच्छी तरह से अनुकूलित है, जो अधिकांश वित्तीय समय-श्रृंखला वितरण विशेषताओं के अनुरूप है।
  2. कीमतों के मानक अंतर का उपयोग करके स्वचालित रूप से पैरामीटर को समायोजित करना। यह रणनीति पैरामीटर को व्यापक बनाता है और बाजार में बदलाव के लिए अधिक संवेदनशील बनाता है।
  3. पी-सिग्नल सूचक ट्रेंडिंग और रिवर्स ट्रेड के फायदे को जोड़ता है। यह मूल्य में उतार-चढ़ाव के रुझान को ध्यान में रखता है और मूल्य रिवर्स बिंदुओं पर भी ध्यान देता है, जो ट्रेंडिंग ट्रेडिंग और रिवर्स ट्रेडिंग अवसरों को पकड़ने में मदद करता है।

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

इस रणनीति के कुछ जोखिम भी हैं, जो मुख्य रूप से इस प्रकार हैंः

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

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

अनुकूलन दिशा

इस रणनीति में और अधिक अनुकूलन के लिए जगह है, मुख्य रूप सेः

  1. फ़िल्टरिंग शर्तें जोड़ें, झूठे संकेतों से बचें। उदाहरण के लिए, अन्य संकेतकों के साथ संयोजन में, AND या OR शर्तें करें, कुछ शोर को फ़िल्टर करें।
  2. अनुकूलित पैरामीटर संयोजन। विभिन्न किस्मों और समय पर nPoints के आकार को समायोजित करें, रणनीति की स्थिरता में सुधार करें।
  3. गतिशील पैरामीटर को ध्यान में रखें। nPoints पैरामीटर को बाजार में उतार-चढ़ाव के आधार पर अनुकूलित करने दें, जिससे रणनीति की कठोरता में सुधार हो सकता है।
  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.