अनुकूली शून्य अंतराल घातीय चलती औसत मात्रात्मक ट्रेडिंग रणनीति


निर्माण तिथि: 2024-02-19 15:38:02 अंत में संशोधित करें: 2024-02-19 15:38:02
कॉपी: 0 क्लिक्स: 841
1
ध्यान केंद्रित करना
1617
समर्थक

अनुकूली शून्य अंतराल घातीय चलती औसत मात्रात्मक ट्रेडिंग रणनीति

अवलोकन

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

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

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

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

जब तेज़ रेखा ((शून्य मंदी सूचकांक चलती औसत) पर धीमी रेखा ((सामान्य सूचकांक चलती औसत) को पार करते समय अधिक किया जाता है, तो नीचे पार करते समय खाली किया जाता है, जिससे एक ट्रेडिंग रणनीति सिग्नल बनता है जो चलती औसत के पार होने के समान होता है।

रणनीतिक लाभ

स्व-अनुकूली शून्य-विलंब ईएमए रणनीति शून्य-विलंब फ़िल्टर और स्व-अनुकूली चक्र अनुकूलन के तरीकों को जोड़ती है, जिसमें निम्नलिखित फायदे हैंः

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

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

स्व-अनुकूलित शून्य-विलंब ईएमए रणनीतियों में कुछ जोखिम भी हैं, जो मुख्य रूप से इस प्रकार हैंः

  1. विशिष्ट बाजार परिस्थितियों में अनुकूलन अनुकूलित चक्र पैरामीटर विफल हो सकता है
  2. निश्चित स्टॉप लॉस टर्मिनल की गलत सेटिंग से अत्यधिक नुकसान या हानि हो सकती है
  3. पैरामीटर अनुकूलन परीक्षण की कमी से खराब प्रदर्शन हो सकता है

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

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

अनुकूलन के लिए शून्य-अवसर वाली ईएमए रणनीति में अनुकूलन के लिए व्यापक स्थान है, मुख्य दिशाओं में शामिल हैंः

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

इन अनुकूलन के माध्यम से, जीत की दर, लाभप्रदता, जोखिम समायोजन सूचकांक आदि को बढ़ाने की उम्मीद है।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Adaptive Zero Lag EMA v2", shorttitle="AZLEMA", overlay = true)

src = input(title="Source",  defval=close)
Period = input(title="Period",  defval = 20)
adaptive = input(title="Adaptive Method", options=["Off", "Cos IFM", "I-Q IFM", "Average"], defval="Off")
GainLimit = input(title="Gain Limit",  defval = 10)
Threshold = input(title="Threshold", type = float, defval=0.05, step=0.01)
fixedSL = input(title="SL Points", defval=70)
fixedTP = input(title="TP Points", defval=5)
risk = input(title='Risk', defval=0.01, step=0.01)

//##############################################################################
//I-Q IFM
//#############################################################################
range = input(title="Max Period",  defval=60, minval=8, maxval=100)

PI = 3.14159265359
imult = 0.635
qmult = 0.338
inphase = 0.0
quadrature = 0.0
re = 0.0
im = 0.0
deltaIQ = 0.0
instIQ = 0.0
lenIQ = 0.0
V = 0.0

P = src - src[7]
inphase := 1.25*(P[4] - imult*P[2]) + imult*nz(inphase[3])
quadrature := P[2] - qmult*P + qmult*nz(quadrature[2])
re := 0.2*(inphase*inphase[1] + quadrature*quadrature[1]) + 0.8*nz(re[1])
im := 0.2*(inphase*quadrature[1] - inphase[1]*quadrature) + 0.8*nz(im[1])
if (re!= 0.0)
    deltaIQ := atan(im/re)
for i=0 to range
    V := V + deltaIQ[i]
    if (V > 2*PI and instIQ == 0.0)
        instIQ := i
if (instIQ == 0.0)
    instIQ := nz(instIQ[1])
lenIQ := 0.25*instIQ + 0.75*nz(lenIQ[1])

//##############################################################################
//COSINE IFM
//#############################################################################
s2 = 0.0
s3 = 0.0
deltaC = 0.0
instC = 0.0
lenC = 0.0
v1 = 0.0
v2 = 0.0
v4 = 0.0

v1 := src - src[7]
s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1])
s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1])
if (s2 != 0)
    v2 := sqrt(s3/s2)
if (s3 != 0)
    deltaC := 2*atan(v2)
for i = 0 to range
    v4 := v4 + deltaC[i]
    if (v4 > 2*PI and instC == 0.0)
        instC := i - 1
if (instC == 0.0)
    instC := instC[1]
lenC := 0.25*instC + 0.75*nz(lenC[1])

if (adaptive == "Cos IFM")
    Period := round(lenC)
if (adaptive == "I-Q IFM")
    Period := round(lenIQ)
if (adaptive == "Average")
    Period := round((lenC + lenIQ)/2)

//##############################################################################
//ZERO LAG EXPONENTIAL MOVING AVERAGE
//##############################################################################
LeastError = 1000000.0
EC = 0.0
Gain = 0.0
EMA = 0.0
Error = 0.0
BestGain = 0.0

alpha =2/(Period + 1)
EMA := alpha*src + (1-alpha)*nz(EMA[1])

for i = -GainLimit to GainLimit
    Gain := i/10
    EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1])
    Error := src - EC
    if(abs(Error)<LeastError)
        LeastError := abs(Error)
        BestGain := Gain

EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1])

plot(EC, title="EC", color=orange, linewidth=2)
plot(EMA, title="EMA", color=red, linewidth=2)

buy = crossover(EC,EMA) and 100*LeastError/src > Threshold
sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold
strategy.initial_capital = 50000
if (time>timestamp(2016, 1, 1 , 0, 0))
    //LONG
    balance = strategy.initial_capital + strategy.netprofit
    lots = ((risk * balance)/fixedSL)*1
    strategy.entry("BUY", strategy.long, qty=lots, oca_name="BUY",  when=buy)
    strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)
    //SHORT
    strategy.entry("SELL", strategy.short, qty=lots, oca_name="SELL", when=sell)
    strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)