पारलौकिक समय-सीमा पर आधारित प्रवृत्ति अनुसरण रणनीतियाँ


निर्माण तिथि: 2024-02-21 11:05:17 अंत में संशोधित करें: 2024-02-21 11:05:17
कॉपी: 0 क्लिक्स: 690
1
ध्यान केंद्रित करना
1617
समर्थक

पारलौकिक समय-सीमा पर आधारित प्रवृत्ति अनुसरण रणनीतियाँ

अवलोकन

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

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

यह रणनीति सुरक्षा फ़ंक्शन को कॉल करके उच्च समय सीमा (डिफ़ॉल्ट रूप से वर्तमान समय सीमा के 4 गुना) के पार होने वाले संकेतक को प्राप्त करती है। पार करने वाले संकेतक में दो लाइनें होती हैंः पार रेखा और रुझान रेखा। पार करने वाली रेखा रुझान रेखा के ऊपर होती है और नीचे होती है।

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

इस तरह से कम समय सीमा के बाजार के शोर से बाधित होने से बचा जा सकता है, सिग्नल की विश्वसनीयता में सुधार होता है। साथ ही उच्च समय सीमा का उपयोग करके बाजार की संरचना का आकलन करने के लिए सही समग्र निर्णय लिया जाता है।

रणनीतिक लाभ

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

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

  • हाई टाइम फ्रेम सिग्नल में देरी, शॉर्ट लाइन का मौका छूट सकता है
  • उच्च समय सीमा में बाजार संरचना के बारे में गलत होने की संभावना
  • सुपरट्रेंड इंडिकेटर भी गलत संकेत दे सकता है
  • समय सीमा की सीमा महत्वपूर्ण डेटा को अनदेखा कर सकती है और परीक्षण परिणामों की सटीकता को प्रभावित कर सकती है

समाधान:

  • सिग्नल विलंबता को कम करने के लिए उच्च समय सीमा सेटिंग को ठीक से समायोजित करें
  • अन्य संकेतकों के साथ संयोजन में उच्च समय सीमा संरचनात्मक निर्णय की पुष्टि करें
  • ओवर-ट्रेंड सूचक मापदंडों का अनुकूलन, सिग्नल गुणवत्ता में सुधार
  • परीक्षण रणनीति की स्थिरता के लिए समय सीमा का विस्तार करें

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

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

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

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

संक्षेप

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed

//@version=4
strategy("Higher TF - Repainting", overlay=true, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

HTFMultiplier = input(4, minval=1, step=1)

SupertrendMult = input(1)
SupertrendPd = input(4, minval=4, step=4)

backtestBars = input(title="Backtest from ", defval=10, minval=1, maxval=30)
backtestFrom = input(title="Timeframe", defval="years", options=["days", "months", "years"])

repaintOption = input(title="Repaint", defval="Yes", options=["Yes", "No - set lookahead false", "No - do not use security"])

f_multiple_resolution(HTFMultiplier) => 
    target_Res_In_Min = timeframe.multiplier * HTFMultiplier * (
      timeframe.isseconds   ? 1. / 60. :
      timeframe.isminutes   ? 1. :
      timeframe.isdaily     ? 1440. :
      timeframe.isweekly    ? 7. * 24. * 60. :
      timeframe.ismonthly   ? 30.417 * 24. * 60. : na)

    target_Res_In_Min     <= 0.0417       ? "1S"  :
      target_Res_In_Min   <= 0.167        ? "5S"  :
      target_Res_In_Min   <= 0.376        ? "15S" :
      target_Res_In_Min   <= 0.751        ? "30S" :
      target_Res_In_Min   <= 1440         ? tostring(round(target_Res_In_Min)) :
      tostring(round(min(target_Res_In_Min / 1440, 365))) + "D"

f_getBackTestTimeFrom(backtestFrom, backtestBars)=>
    byDate = backtestFrom == "days"
    byMonth = backtestFrom == "months"
    byYear = backtestFrom == "years"
    
    date = dayofmonth(timenow)
    mth = month(timenow)
    yr = year(timenow)
    
    leapYearDaysInMonth = array.new_int(12,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,29)
    nonleapYearDaysInMonth = array.new_int(12,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,28)
    
    restMonths = array.new_int(10,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,30)
    array.set(leapYearDaysInMonth,2,31)
    array.set(leapYearDaysInMonth,3,30)
    array.set(leapYearDaysInMonth,4,31)
    array.set(leapYearDaysInMonth,5,31)
    array.set(leapYearDaysInMonth,6,30)
    array.set(leapYearDaysInMonth,7,31)
    array.set(leapYearDaysInMonth,8,30)
    array.set(leapYearDaysInMonth,9,31)
    
    array.concat(leapYearDaysInMonth,restMonths)
    array.concat(nonleapYearDaysInMonth,restMonths)
    isLeapYear = yr % 4 == 0 and (year%100 != 0 or year%400 == 0)
    numberOfDaysInCurrentMonth = isLeapYear ? array.get(leapYearDaysInMonth, mth-2) : array.get(nonleapYearDaysInMonth, mth-2)
    if(byDate)
        mth := (date - backtestBars) < 0 ? mth - 1 : mth
        yr := mth < 1 ? yr - 1 : yr
        mth := mth < 1 ? 1 : mth
        date := (date - backtestBars) < 0 ? numberOfDaysInCurrentMonth - backtestBars + date + 1 : date - backtestBars + 1
    if(byMonth)
        date := 1
        yr := (mth - (backtestBars%12)) < 0 ? yr - int(backtestBars/12) - 1 : yr - int(backtestBars/12)
        mth := mth - (backtestBars%12) + 1
    if(byYear)
        date := 1
        mth := 1
        yr := yr - backtestBars
    [date, mth, yr]


repaint = repaintOption == "Yes"
useSecurityLookahead = repaintOption == "No - set lookahead false"

[SupertrendRepaint, DirRepaint] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = true, gaps=true)
[SupertrendNoLookahead, DirNoLookahead] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = false, gaps=false)

[SupertrendRegular, DirRegular] = supertrend(SupertrendMult, SupertrendPd)

[date, mth, yr] = f_getBackTestTimeFrom(backtestFrom, backtestBars)
inDateRange = time >= timestamp(syminfo.timezone, yr, mth, date, 0, 0)

longCondition = repaint ? DirRepaint == -1 : useSecurityLookahead? DirNoLookahead == -1 : DirRegular == -1
shortCondition = repaint ? DirRepaint == 1 : useSecurityLookahead? DirNoLookahead == 1 : DirRegular == 1
strategy.entry("Buy", strategy.long, when=longCondition and inDateRange)
strategy.entry("Sell", strategy.short, when=shortCondition and inDateRange)