गति-अनुसरण अनुकूली सांख्यिकीय मध्यस्थता रणनीति


निर्माण तिथि: 2023-12-11 16:41:27 अंत में संशोधित करें: 2023-12-11 16:41:27
कॉपी: 0 क्लिक्स: 791
1
ध्यान केंद्रित करना
1621
समर्थक

गति-अनुसरण अनुकूली सांख्यिकीय मध्यस्थता रणनीति

अवलोकन

यह रणनीति Nadaraya-Watson Nuclear Regression Method पर आधारित है, जो एक गतिशील अस्थिरता घेरने वाले बैंड का निर्माण करती है, जो कि कम कीमत और घेरने वाले बैंड के क्रॉसिंग को ट्रैक करके एक कम-बेच-उच्च-बेच ट्रेडिंग सिग्नल प्राप्त करती है। यह रणनीति गणितीय विश्लेषण पर आधारित है और बाजार में बदलाव के लिए अनुकूल है।

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

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

रणनीतिक लाभ

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

रणनीतिक जोखिम

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

इन जोखिमों से बचने और कम करने के लिए मुख्य रूप से पैरामीटर को अनुकूलित करना, अच्छी तरह से जांच करना, प्रभावशाली कारकों को समझना और सावधानीपूर्वक व्यवहार करना है।

रणनीति अनुकूलन दिशा

  1. पैरामीटर को और अधिक अनुकूलित करें और सर्वश्रेष्ठ पैरामीटर संयोजन खोजें
  2. मशीन लर्निंग का उपयोग करके स्वचालित रूप से चयनित पैरामीटर
  3. विशेष बाजार स्थितियों में फ़िल्टरिंग शर्तों को जोड़ना और रणनीतियों को सक्रिय करना
  4. अन्य संकेतक के साथ मिलाकर फ़िल्टरिंग भ्रामक संकेत
  5. विभिन्न गणितीय मॉडल एल्गोरिदम का प्रयास करें

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Julien_Eche
//@version=5

strategy("Nadaraya-Watson Envelope Strategy", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20)

// Helper Functions
getEnvelopeBounds(_atr, _nearFactor, _farFactor, _envelope) => 
    _upperFar = _envelope + _farFactor*_atr
    _upperNear = _envelope + _nearFactor*_atr
    _lowerNear = _envelope - _nearFactor*_atr
    _lowerFar = _envelope - _farFactor*_atr
    _upperAvg = (_upperFar + _upperNear) / 2
    _lowerAvg = (_lowerFar + _lowerNear) / 2 
    [_upperNear, _upperFar, _upperAvg, _lowerNear, _lowerFar, _lowerAvg]

customATR(length, _high, _low, _close) =>
    trueRange = na(_high[1])? math.log(_high)-math.log(_low) : math.max(math.max(math.log(_high) - math.log(_low), math.abs(math.log(_high) - math.log(_close[1]))), math.abs(math.log(_low) - math.log(_close[1])))
    ta.rma(trueRange, length)

customKernel(x, h, alpha, x_0) =>
    sumWeights = 0.0
    sumXWeights = 0.0
    for i = 0 to h
        weight = math.pow(1 + (math.pow((x_0 - i), 2) / (2 * alpha * h * h)), -alpha)
        sumWeights := sumWeights + weight
        sumXWeights := sumXWeights + weight * x[i]
    sumXWeights / sumWeights

// Custom Settings
customLookbackWindow = input.int(8, 'Lookback Window (Custom)', group='Custom Settings')
customRelativeWeighting = input.float(8., 'Relative Weighting (Custom)', step=0.25, group='Custom Settings')
customStartRegressionBar = input.int(25, "Start Regression at Bar (Custom)", group='Custom Settings')

// Envelope Calculations
customEnvelopeClose = math.exp(customKernel(math.log(close), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelopeHigh = math.exp(customKernel(math.log(high), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelopeLow = math.exp(customKernel(math.log(low), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelope = customEnvelopeClose
customATRLength = input.int(60, 'ATR Length (Custom)', minval=1, group='Custom Settings')
customATR = customATR(customATRLength, customEnvelopeHigh, customEnvelopeLow, customEnvelopeClose)
customNearATRFactor = input.float(1.5, 'Near ATR Factor (Custom)', minval=0.5, step=0.25, group='Custom Settings')
customFarATRFactor = input.float(2.0, 'Far ATR Factor (Custom)', minval=1.0, step=0.25, group='Custom Settings')
[customUpperNear, customUpperFar, customUpperAvg, customLowerNear, customLowerFar, customLowerAvg] = getEnvelopeBounds(customATR, customNearATRFactor, customFarATRFactor, math.log(customEnvelopeClose))

// Colors
customUpperBoundaryColorFar = color.new(color.red, 60)
customUpperBoundaryColorNear = color.new(color.red, 80)
customBullishEstimatorColor = color.new(color.teal, 50)
customBearishEstimatorColor = color.new(color.red, 50)
customLowerBoundaryColorNear = color.new(color.teal, 80)
customLowerBoundaryColorFar = color.new(color.teal, 60)

// Plots
customUpperBoundaryFar = plot(math.exp(customUpperFar), color=customUpperBoundaryColorFar, title='Upper Boundary: Far (Custom)')
customUpperBoundaryAvg = plot(math.exp(customUpperAvg), color=customUpperBoundaryColorNear, title='Upper Boundary: Average (Custom)')
customUpperBoundaryNear = plot(math.exp(customUpperNear), color=customUpperBoundaryColorNear, title='Upper Boundary: Near (Custom)') 
customEstimationPlot = plot(customEnvelopeClose, color=customEnvelope > customEnvelope[1] ? customBullishEstimatorColor : customBearishEstimatorColor, linewidth=2, title='Custom Estimation')
customLowerBoundaryNear = plot(math.exp(customLowerNear), color=customLowerBoundaryColorNear, title='Lower Boundary: Near (Custom)')
customLowerBoundaryAvg = plot(math.exp(customLowerAvg), color=customLowerBoundaryColorNear, title='Lower Boundary: Average (Custom)') 
customLowerBoundaryFar = plot(math.exp(customLowerFar), color=customLowerBoundaryColorFar, title='Lower Boundary: Far (Custom)')

// Fills
fill(customUpperBoundaryFar, customUpperBoundaryAvg, color=customUpperBoundaryColorFar, title='Upper Boundary: Farmost Region (Custom)')
fill(customUpperBoundaryNear, customUpperBoundaryAvg, color=customUpperBoundaryColorNear, title='Upper Boundary: Nearmost Region (Custom)')
fill(customLowerBoundaryNear, customLowerBoundaryAvg, color=customLowerBoundaryColorNear, title='Lower Boundary: Nearmost Region (Custom)')
fill(customLowerBoundaryFar, customLowerBoundaryAvg, color=customLowerBoundaryColorFar, title='Lower Boundary: Farmost Region (Custom)')


longCondition = ta.crossover(close, customEnvelopeLow)
if (longCondition)
    strategy.entry("Buy", strategy.long)

exitLongCondition = ta.crossover(customEnvelopeHigh, close)
if (exitLongCondition)
    strategy.close("Buy")