एल्स इंस्टेंट ट्रेंड लाइन रणनीति


निर्माण तिथि: 2023-12-20 16:51:05 अंत में संशोधित करें: 2023-12-20 16:51:05
कॉपी: 0 क्लिक्स: 938
1
ध्यान केंद्रित करना
1621
समर्थक

एल्स इंस्टेंट ट्रेंड लाइन रणनीति

अवलोकन

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

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

इस रणनीति के केंद्र में तत्काल प्रवृत्ति रेखा की गणना है।

it := (a-((a*a)/4.0))*src+0.5*a*a*src[1]-(a-0.75*a*a)*src[2]+2*(1-a )*it[1]-(1-a )*(1-a )*it[2]

जहां src मूल्य का प्रतिनिधित्व करता है, a एक समतल कारक है, जिसका डिफ़ॉल्ट मान 0.07 है। यह सूत्र एक द्वितीयक फ़िल्टर है जो कीमतों को समतल करने और रुझान उत्पन्न करने में सक्षम है।

एक अन्य महत्वपूर्ण संकेतक अंतराल रेखा है, जिसे निम्न सूत्र से गणना की जाती हैः

lag = 2.0 * it - nz(it[2])

यह लाइन आईटी लाइन से एक चक्र पीछे है। जब कीमत ऊपर की पिछली रेखा को पार करती है, तो यह प्रवृत्ति को उलट देती है, और अधिक करती है। जब कीमत नीचे की पिछली रेखा को पार करती है, तो यह प्रवृत्ति को उलट देती है, और खाली करती है।

इसके अलावा, रणनीति में जोखिम को नियंत्रित करने के लिए एक स्टॉप लॉस प्लान भी है।

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

इस रणनीति के निम्नलिखित फायदे हैं:

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

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

इस रणनीति के कुछ जोखिम भी हैं:

  1. गलत तरीके से सेट किए गए आईटी लाइन और लेगलाइन पैरामीटर के कारण गलत सिग्नल हो सकता है
  2. स्टॉप पॉइंट की गलत सेटिंग से समय से पहले या बहुत ज्यादा स्टॉप हो सकता है
  3. ट्रेडिंग की उच्च आवृत्ति, ट्रेडिंग लागत लाभप्रदता को प्रभावित करती है
  4. लंबे समय तक एकाग्रता रखने से संभावित वृद्धि दर पर प्रभाव पड़ सकता है

इन जोखिमों को निम्न तरीकों से कम किया जा सकता हैः

  1. अनुकूलन मापदंडों को लागू करना
  2. समायोज्य स्टॉप पॉइंट सेट करें
  3. ट्रेडिंग की आवृत्ति को कम करने के लिए स्टॉक खोलने की संख्या को ठीक से समायोजित करें
  4. सेट होल्डिंग पीरियड रोक

अनुकूलन दिशा

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

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

निष्कर्ष के तौर पर

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

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

//@version=3
strategy("Ehlers Instantaneous Trendline Strategy", shorttitle = "Ehlers Instantaneous Trendline Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, backtest_fill_limits_assumption = 1)
src = input(hl2, title="Source")
a = input(0.07, title="Alpha", step=0.01) 
fr = input(false, title="Fill Trend Region")
it = na
if (na(it[2]) or na(it[1]))
    it := (src + 2 * src[1] + src[2]) / 4.0
else
    it := (a-((a*a)/4.0))*src+0.5*a*a*src[1]-(a-0.75*a*a)*src[2]+2*(1-a )*it[1]-(1-a )*(1-a )*it[2]
lag = 2.0 * it - nz(it[2])
rngFrac = input(0.35)
revPct = input(0.015)
stopType = input(title="Stop type", defval = "stop-order", options = ["stop-order", "market-order", "None"])

diff = input(0.5, title = "Spread")
LongPrice(p) =>
    LongPrice = diff == 0 ? p : floor(p / diff) * diff

ShortPrice(p) =>
    ShortPrice = diff == 0 ? p : ceil(p / diff) * diff

strategy.cancel_all()
reverseTrade = false
if stopType == "market-order" 
    if  strategy.position_size > 0 and close < strategy.position_avg_price * (1 - revPct) 
        strategy.order("StopLoss open short", strategy.short, 2 * strategy.position_size, limit = close - 2 * diff)
        reverseTrade := true
    if  strategy.position_size < 0 and close > strategy.position_avg_price * (1 + revPct) 
        strategy.order("StopLoss open long", strategy.long, -2 * strategy.position_size, limit = close + 2 * diff)
        reverseTrade := true
    
if lag > it and not reverseTrade
    price = LongPrice(max(close - (high - low) * rngFrac, low))
    if strategy.position_size <= 0
        strategy.order("Open long", strategy.long, strategy.equity / price - strategy.position_size, limit = price)
        if stopType == "stop-order"
            strategy.order("StopLoss open long", strategy.short, 2 * strategy.equity / price, stop = ShortPrice(price * (1 - revPct)))
    else
        if stopType == "stop-order"
            strategy.order("StopLoss open short", strategy.short, 2 * strategy.position_size, stop = ShortPrice(strategy.position_avg_price * (1 - revPct)))
if lag < it and not reverseTrade
    price = ShortPrice(min(close - (high - low) * rngFrac, high))
    if strategy.position_size >= 0
        strategy.order("Open short", strategy.short, strategy.equity / price + strategy.position_size, limit = price)
        if stopType == "stop-order"
            strategy.order("StopLoss open short", strategy.long, 2 * strategy.equity / price, stop = LongPrice(price * (1 + revPct)))
    else
        if stopType == "stop-order"
            strategy.order("StopLoss open long", strategy.long, -2 * strategy.position_size, stop = LongPrice(strategy.position_avg_price * (1 + revPct)))


itPlot=plot(it, color=red, linewidth=1, title="Trend")
lagPlot=plot(lag, color=blue, linewidth=1, title="Trigger")
fill(itPlot, lagPlot, it < lag ? green : red,  transp=70)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(9, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()