यह रणनीति गतिशील चलती औसत के आधार पर ट्रेडिंग सिग्नल उत्पन्न करती है ताकि शेयर की कीमतें बढ़ने पर लंबी हो सकें और कीमतें गिरने पर बंद हो सकें। गति संकेतक और चलती औसत के फायदे को जोड़कर, इसका उद्देश्य स्थिर लाभ के लिए मध्यम अवधि के मूल्य रुझानों को ट्रैक करना है।
यह रणनीति मुख्य रूप से तीन Hull Moving Average (HMA) वेरिएंट
एचएमए का सूत्र हैः
HMA = WMA ((2*WMA ((close, n/2)-WMA ((close, n), sqrt ((n))
जहां डब्ल्यूएमए भारित चलती औसत है और एन अवधि पैरामीटर है। एसएमए की तुलना में, एचएमए मूल्य परिवर्तनों के लिए तेजी से प्रतिक्रिया करता है।
WHMA और EHMA के लिए सूत्र समान हैं। HMA को डिफ़ॉल्ट विकल्प के रूप में चुना गया है।
एचएमए की गणना करने के बाद, रणनीति एचएमए के मध्य रेखा मूल्य का उपयोग ट्रेडिंग संकेतों के रूप में करती है। जब कीमत एचएमए की मध्य रेखा से ऊपर जाती है तो यह लंबी हो जाती है और जब कीमत रेखा से नीचे गिरती है तो पदों को बंद कर देती है। इस प्रकार यह लाभ के लिए एचएमए की मध्य रेखा का उपयोग करके मध्यम अवधि के रुझानों को ट्रैक करती है।
पारंपरिक एमए रणनीतियों की तुलना में, इस रणनीति के निम्नलिखित फायदे हैंः
कुछ जोखिम भी हैं:
समाधान:
इस रणनीति को निम्नलिखित पहलुओं से भी बढ़ाया जा सकता हैः
गतिशील एमए ट्रेडिंग रणनीति मध्यम अवधि के मूल्य रुझानों को प्रभावी ढंग से ट्रैक करने के लिए एचएमए की त्वरित प्रतिक्रिया को एकीकृत करती है। उपयुक्त समय और बंद स्टॉप पर लंबी स्थिति खोलने से, इसने अच्छे बैकटेस्ट परिणाम प्रदर्शित किए हैं। पैरामीटर ट्यूनिंग और स्टॉक फ़िल्टरिंग में आगे के सुधार से अधिक स्थिर अतिरिक्त रिटर्न होगा। यह लागू करने में आसान, जोखिम-नियंत्रित मात्रात्मक रणनीति है।
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Position Investing by SirSeff', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0) strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all']) strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) ////////////////////////////////////////////////////////////////////// // Testing Start dates testStartYear = input(2000, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => true // Component Code Stop ////////////////////////////////////////////////////////////////////// //INPUT src = input(close, title='Source') modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)') switchColor = input(true, 'Color Hull according to trend?') candleCol = input(false, title='Color candles based on Hull\'s Trend?') visualSwitch = input(true, title='Show as a Band?') thicknesSwitch = input(1, title='Line Thickness') transpSwitch = input.int(40, title='Band Transparency', step=5) //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na //OUT HULL = Mode(modeSwitch, src, length) MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800 //PLOT ///< Frame Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(visualSwitch ? SHULL : na, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) ///< Ending Filler fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color=candleCol ? switchColor ? hullColor : na : na) if HULL[0] > HULL[2] and testPeriod() strategy.entry('Invest', strategy.long) if HULL[0] < HULL[2] and testPeriod() strategy.entry('Pause', strategy.short)