रैखिक प्रतिगमन विश्लेषण पर आधारित एक मात्रात्मक व्यापार रणनीति


निर्माण तिथि: 2024-01-26 15:48:35 अंत में संशोधित करें: 2024-01-26 15:48:35
कॉपी: 0 क्लिक्स: 680
1
ध्यान केंद्रित करना
1617
समर्थक

रैखिक प्रतिगमन विश्लेषण पर आधारित एक मात्रात्मक व्यापार रणनीति

अवलोकन

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

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

अनुकूलन रैखिक प्रतिगमन चैनल रणनीति के केंद्र में एक निश्चित संख्या के K रूट K लाइनों के समापन मूल्य रैखिक प्रतिगमन समीकरण की गणना करना है, जो मूल्य के मध्यस्थ अंक, मूल्य की ऊपरी सीमा के लिए ऊपरी ट्रैक और मूल्य की निचली सीमा के लिए निचले ट्रैक का प्रतिनिधित्व करता है।

  1. इनपुट पैरामीटर लंबाई निर्दिष्ट K रूट K लाइन के लिए स्वतंत्र चर x और निर्भर चर y को इकट्ठा करें। यहाँ x 1 से लंबाई तक का पूर्णांक है, y संबंधित K लाइन का समापन मूल्य है।

  2. पतन गुणांक की गणना करेंः

    • b = (∑y)/n - m(∑x)/n
    • m = [(n∑xy) - (∑x)(∑y)]/[(n∑x2) - (∑x)2]
  3. प्रत्येक K लाइन के लिए गणना करें रैखिक प्रतिगमन मान y’, मानक अंतर STDDEV

  4. मध्य रेखा पर वापसी समीकरण y’ = mx + b, ऊपर और नीचे की रेखाओं को मध्य रेखा के ऊपर और नीचे एक मानक अंतर गुणांक की दूरी पर फ्लोट किया गया है।

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

श्रेष्ठता विश्लेषण

अनुकूलन रैखिक रिवर्सन चैनल रणनीति पारंपरिक औसत रेखीय रणनीति की तुलना में निम्नलिखित फायदे हैंः

  1. अधिक वैज्ञानिक और तर्कसंगत, औसत रेखा की तुलना में उच्च सांख्यिकीय महत्व के साथ रिग्रेशन विश्लेषण मॉडल

  2. अधिक लचीलापन, कीमतों में बदलाव के साथ चैनल की सीमा स्वचालित रूप से समायोजित होती है

  3. कुछ प्रजातियों में औसत रेखा रणनीति से बेहतर प्रतिक्रिया

  4. लैपटॉप पर परीक्षण सफल रहा, लैपटॉप पर संतोषजनक प्रदर्शन

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

इस रणनीति में मुख्य रूप से निम्नलिखित जोखिम हैं:

  1. कीमतों में अत्यधिक उतार-चढ़ाव के कारण भारी घाटा होता है। इसका समाधान स्टॉप लॉस और ऑप्टिमाइज़ेशन पैरामीटर सेट करना है।

  2. गलियारे में गड़बड़ी के कारण ट्रैकिंग की प्रभावशीलता खराब है। समाधान अन्य तकनीकी संकेतकों के साथ पैरामीटर को समायोजित करना है।

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

अनुकूलन दिशा

इस रणनीति को निम्नलिखित आयामों से अनुकूलित किया जा सकता हैः

  1. अधिक संयोजनों का परीक्षण करें और इष्टतम खोजें

  2. अन्य तकनीकी संकेतकों के साथ संयोजन में, जब गति तेज होती है तो सिग्नल गड़बड़ हो जाता है

  3. हानि को रोकने की रणनीति में वृद्धि, हानि के जोखिम को नियंत्रित करना और धन की सुरक्षा करना

  4. स्थिति प्रबंधन मॉड्यूल को जोड़ना और बाजार की स्थिति के अनुसार स्थिति आकार को समायोजित करना

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)

//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
    sum_y := sum_y + close[i]
    sum_xy := i * close[i] + sum_xy
    sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)

//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
    y = i * m  + b
    difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)

//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b

if DayTrader == false
    if crossover(source, upper)
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, lower)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")

    if crossover(source, middle) and strategy.position_size < 0
        strategy.close_all()
    if crossunder(source,middle) and strategy.position_size > 0
        strategy.close_all()

if DayTrader == true
    if crossover(source, lower) 
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, upper)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")


plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)