पी-सिग्नल मल्टी टाइमफ्रेम ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-28 16:32:36
टैगः

img

अवलोकन

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

रणनीति तर्क

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

fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...) # Gaussian error function 

fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal indicator

रणनीति बिटकॉइन के लिए दैनिक, साप्ताहिक और मासिक समय सीमाओं पर पी-सिग्नल संकेतक की गणना करती है, जब संकेतक 0 से ऊपर जाता है तो लंबी हो जाती है, और जब यह 0 से नीचे जाता है तो बाहर निकल जाता है।

लाभ विश्लेषण

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

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

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

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

इसके अतिरिक्त, रणनीति की अपनी कुछ सीमाएं हैं। उदाहरण के लिए, हिंसक चाल को संभालने में असमर्थता, संकेतक क्रॉसओवर से संकेत के पीछे रहना आदि। ये सभी लाइव ट्रेडिंग के दौरान छिपी हुई समस्याएं बन सकते हैं।

इन मुद्दों को हल करने के लिए, हम संकेतक मापदंडों को समायोजित कर सकते हैं, स्टॉप लॉस को अनुकूलित कर सकते हैं, अधिक सहायक संकेतक आदि पेश कर सकते हैं।

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

पी-सिग्नल रणनीति को अनुकूलित करने के लिए कई दिशाएं हैंः

  1. परिवर्तन पी-सिग्नल संकेतक पैरामीटरः nIntr_D, nIntr_W और nIntr_M, इष्टतम पैरामीटर संयोजन का पता लगाने

  2. स्टॉप लॉस के तरीके जोड़ेंः ट्रेलिंग स्टॉप लॉस, टाइम स्टॉप लॉस, एटीआर स्टॉप लॉस आदि, इष्टतम स्टॉप लॉस का पता लगाएं

  3. सहायक संकेतक पेश करें: विशिष्ट बाजार स्थितियों का आकलन सुधारें, उदाहरण के लिए रुझानों को निर्धारित करने के लिए एमएसीडी का उपयोग करें

  4. स्थिति आकार अनुकूलित करेंः खाता उपयोग दक्षता के आधार पर गतिशील स्थिति आकार सेट करें

  5. मशीन लर्निंग अनुकूलनः वैश्विक रूप से इष्टतम मापदंडों को खोजने के लिए तंत्रिका नेटवर्क, आनुवंशिक एल्गोरिदम का उपयोग करें

निष्कर्ष

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


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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
// A good strategy should be able to handle backtesting.
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy:", precision = 3, pyramiding = 3)
//
// Parameters and const of P-Signal.
//
nPoints_D = input(title = "Number of D Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_W = input(title = "Number of W Bars", type = input.integer, defval = 4, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_M = input(title = "Number of M Bars", type = input.integer, defval = 6, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr_D = nPoints_D - 1
int nIntr_W = nPoints_W - 1
int nIntr_M = nPoints_M - 1
bool bDValveOpen = true
bool bWValveOpen = true
bool bMValveOpen = true
// 
// 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)
//
// Signals for the strategy.
//
float nPSignal_D = sma(fPSignal(change(ohlc4), nIntr_D), nIntr_D)
float ndPSignal_D = sign(nPSignal_D[0] - nPSignal_D[1])
//
float nPSignal_W = sma(security(syminfo.tickerid, "W",fPSignal(change(ohlc4), nIntr_W)), nIntr_W)
float ndPSignal_W = sign(nPSignal_W[0] - nPSignal_W[1])
//
float nPSignal_M = sma(security(syminfo.tickerid, "M",fPSignal(change(ohlc4), nIntr_M)), nIntr_M)
float ndPSignal_M = sign(nPSignal_M[0] - nPSignal_M[1])
//
// P-Signal 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_D, color = color.blue, style = plot.style_line)
//
// Multi Frame Strategy 
// ... Day
if(nPSignal_D < 0 and ndPSignal_D > 0 and bDValveOpen)
    strategy.entry("long_D", strategy.long, 1) 
    bDValveOpen := false
if(nPSignal_D > 0 and ndPSignal_D < 0)
    strategy.close("long_D")
    bDValveOpen := true
// ... Week
if(nPSignal_W < 0 and ndPSignal_W > 0 and bWValveOpen)
    strategy.entry("long_W", strategy.long, 1) 
    bWValveOpen := false
if(nPSignal_W > 0 and ndPSignal_W < 0)
    strategy.close("long_W")
    bWValveOpen := true
// ... Month
if(nPSignal_M < 0 and ndPSignal_M > 0 and bMValveOpen)
    strategy.entry("long_M", strategy.long, 1) 
    bMValveOpen := false
if(nPSignal_M > 0 and ndPSignal_M < 0)
    strategy.close("long_M")
    bMValveOpen := true
// The end.

अधिक