ডায়নামিক মুভিং এভারেজ গণনা করে এবং এটিকে ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করে এই কৌশলটি শেয়ারের দাম বাড়ার সাথে সাথে পজিশনে বেশি এবং শেয়ারের দাম কমার সাথে সাথে পজিশনে কম থাকে। এই কৌশলটি গতিশীলতার সূচক এবং মুভিং এভারেজের সুবিধাগুলিকে একত্রিত করে, যা শেয়ারের দামের মাঝারি সময়ের প্রবণতা অনুসরণ করে এবং স্থিতিশীল উপার্জন অর্জন করে।
এই কৌশলটি মূলত তিনটি ভেরিয়েন্টের উপর ভিত্তি করে Hull Moving Average, যার মধ্যে রয়েছে সাধারণ Hull Moving Average ((HMA), ভারসাম্যযুক্ত Hull Moving Average ((WHMA) এবং সূচকীয় Hull Moving Average ((EHMA) । কোড অনুসারে, কৌশলটি ব্যবহারকারীদের এই তিনটি Hull MA এর মধ্যে স্যুইচ করার অনুমতি দেয়।
এইচএমএর গণনা সূত্র হলঃ
HMA = WMA(2*WMA(close,n/2)-WMA(close,n),sqrt(n))
এইচএমএ হল ওজনযুক্ত চলমান গড় এবং n হল চক্রের পরামিতি। এইচএমএ এসএমএ (সাধারণ চলমান গড়) এর চেয়ে দ্রুত মূল্য পরিবর্তনের প্রতিক্রিয়া জানায়।
WHMA এবং EHMA-র জন্য হিসাবের সূত্র HMA-র মতই। 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)