क्वाड्रिक फिटिंग ट्रेडिंग सिग्नल रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-23 15:40:57
टैगः

अवलोकन

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

रणनीति तर्क

मुख्य घटक और नियम निम्नलिखित हैंः

  1. चतुर्भुज प्रतिगमन का उपयोग करके उच्च/निम्न बिंदुओं पर वक्र फिटिंग।

  2. जब ऊपरी बैंड के ऊपर बंद टूटता है तो संकेत खरीदें।

  3. निचले बैंड के नीचे बंद टूटने पर संकेत बेचें।

  4. गलत ब्रेक से बचने के लिए N अवधि का सत्यापन।

  5. कोई निश्चित बाहर निकलने के नियम नहीं, बैकटेस्टिंग के माध्यम से बाहर निकलने का अनुकूलन।

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

लाभ

अन्य ब्रेकआउट प्रणालियों की तुलना में, मुख्य फायदे हैंः

  1. गणितीय अनुकूलन व्यक्तिपरक निर्णय की तुलना में अधिक उद्देश्यपूर्ण है।

  2. तकनीकी विश्लेषण और सांख्यिकीय मॉडल को जोड़ने वाला नया दृष्टिकोण।

  3. बहु-अवधि सत्यापन से झूठे टूटने से बचा जाता है।

  4. बैकटेस्टिंग से बाहर निकलने और प्रतीक्षा अवधि को अनुकूलित किया जा सकता है।

  5. लचीले समायोजन के साथ लागू करने में आसान।

  6. मॉडल मैन्युअल हस्तक्षेप के बिना स्वचालित रूप से अद्यतन करता है।

  7. उत्पादों और समय सीमाओं में पैरामीटर की मजबूती का परीक्षण कर सकता है।

  8. मशीन लर्निंग के साथ आगे अनुकूलित करने की क्षमता।

  9. अन्वेषणात्मक मूल्य के साथ समग्र रूप से नया दृष्टिकोण।

जोखिम

हालांकि, जोखिम निम्नलिखित हैंः

  1. फिटिंग परफॉर्मेंस पैरामीटर ट्यूनिंग पर निर्भर करता है, ओवरफिटिंग जोखिम।

  2. फिक्स्ड लाइनों में देरी होती है, घाटे से पूरी तरह से बचा नहीं जा सकता।

  3. वॉल्यूम की पुष्टि नहीं, फंसने का खतरा।

  4. लगातार अल्फा के लिए सांख्यिकीय मध्यस्थता चुनौतीपूर्ण है।

  5. सीमित बैकटेस्ट अवधि, मजबूती सत्यापित करने की आवश्यकता है।

  6. बहु-बाजार अनुकूलन क्षमता को मान्य करने की आवश्यकता है।

  7. स्थिर आकार में गतिशील समायोजन की कमी होती है।

  8. लाभ/जोखिम के अनुपात का सख्ती से मूल्यांकन करने की आवश्यकता है।

सुधार

विश्लेषण के आधार पर, सुधारों में निम्नलिखित शामिल हो सकते हैंः

  1. बाजार व्यवस्थाओं में मापदंडों की मजबूती का परीक्षण करें।

  2. वॉल्यूम पुष्टिकरण संकेतक जोड़ें.

  3. उच्च गुणवत्ता वाले संकेतों के लिए प्रवेश/निकास तर्क को अनुकूलित करें।

  4. गतिशील स्थिति आकार मॉडलों का निर्माण।

  5. घाटे को सीमित करने के लिए स्टॉप शामिल करें।

  6. जोखिम प्रबंधन रणनीतियों को अनुकूलित करें।

  7. रोलिंग विंडो बैकटेस्ट सत्यापन.

  8. बहु-बाजार स्थिरता का आकलन करें।

  9. मॉडल अनुकूलन के लिए मशीन लर्निंग का लाभ उठाएं।

निष्कर्ष

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


/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Quadratic Semaphore ",
         shorttitle = "SQS",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=5,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2019, title = "Year", minval = 2014)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2014)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
p = input(6)
length = input(30)
//
backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

x1 = bar_index
x2 = sqrt(x1)
y = high
//
S11 = sum(x2,length) - sqrt(sum(x1,length)) / length  
S12 = sum(x1*x2,length) - (sum(x1,length) * sum(x2,length)) / length  
S22 = sum(sqrt(x2),length) - sqrt(sum(x2,length)) / length            
Sy1 = sum (y*x1,length) - (sum(y,length) * sum(x1,length)) / length   
Sy2 = sum (y*x2,length) - (sum(y,length) * sum(x2,length)) / length   
//
max1 = sma(x1,length) 
max2 = sma(x2,length)
may = sma(y,length)
b2 = ((Sy1 * S22) - (Sy2*S12))/(S22*S11 - sqrt(S12))
b3 = ((Sy2 * S11) - (Sy1 * S12))/(S22 * S11 - sqrt(S12))
b1 = may - b2*max1 - b3*max2
qr = b1 + b2*x1 + b3*x2
//
yl = low
//
Sy1l = sum(yl*x1,length) - (sum(yl,length) * sum(x1,length)) / length  
Sy2l = sum(yl*x2,length) - (sum(yl,length) * sum(x2,length)) / length  
//
mayl = sma(yl,length)
b2l = ((Sy1l * S22) - (Sy2l*S12))/(S22*S11 - sqrt(S12))
b3l = ((Sy2l * S11) - (Sy1l * S12))/(S22 * S11 - sqrt(S12))
b1l = mayl - b2l*max1 - b3l*max2
qrl = b1l + b2l*x1 + b3l*x2
//
period = round(p/2)+1
hh = qr[period]
ll = qrl[period]
countH = 0
countL = 0
buy=0
sell=0
//
for i = 1 to period-1
    if qr[i]<hh
        countH:=countH+1
    if qrl[i]>ll
        countL:=countL+1

for i = period+1 to p+1
    if qr[i]<hh
        countH:=countH+1
    if qrl[i]>ll
        countL:=countL+1

if countH==p
    pivotH = high[period]
    buy := 1
    
if countL==p
    pivotL = low[period]
    sell := 1
//    
plotshape(buy == 1 , text='💣', style=shape.arrowup, location=location.belowbar, color=#32CD32, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 , text='🔨', style=shape.arrowdown, location=location.abovebar, color=#FF0000, textcolor=color.white, offset=0, transp=0,size=size.auto)
//

if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1) 


अधिक