ডায়নামিক মুভিং মিডিয়ার উপর ভিত্তি করে ট্রেডিং ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-১২-২১ ১১ঃ৩৩ঃ৫০
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি গতিশীল চলমান গড়ের উপর ভিত্তি করে ট্রেডিং সংকেত তৈরি করে যখন শেয়ারের দাম বেড়ে যায় এবং দাম কমে গেলে অবস্থান বন্ধ করে দেয়। গতির সূচক এবং চলমান গড়ের সুবিধাগুলি একত্রিত করে, এটি স্থিতিশীল মুনাফার জন্য মাঝারি মেয়াদী মূল্য প্রবণতা ট্র্যাক করার লক্ষ্যে।

নীতি

কৌশলটি মূলত তিনটি হুল মুভিং এভারেজ (এইচএমএ) ভেরিয়েন্ট নিয়মিত এইচএমএ, ওয়েটেড এইচএমএ (ডাব্লুএইচএমএ) এবং এক্সপোনেনশিয়াল এইচএমএ (ইএইচএমএ) এর উপর নির্ভর করে। কোডটি দেখায় যে এটি ব্যবহারকারীদের তিনটি হুল এমএগুলির মধ্যে স্যুইচ করতে দেয়।

HMA এর সূত্র হলঃ

এইচএমএ = ডব্লিউএমএ (২*ডব্লিউএমএ (২) -ডব্লিউএমএ (২) -ডব্লিউএমএ (২) -ডব্লিউএমএ (২) -ডব্লিউএমএ (২) -ডব্লিউএমএ (৩) -ডব্লিউএমএ (৩) -ডব্লিউএমএ (২) -ডব্লিউএমএ (৩) -ডব্লিউএমএ (৩) -ডব্লিউএমএ (৩) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ (৪) -ডব্লিউএমএ) -ডব্লি

যেখানে WMA হল ওয়েটেড মুভিং এভারেজ এবং n হল পিরিয়ড প্যারামিটার। SMA এর তুলনায়, HMA মূল্য পরিবর্তনের ক্ষেত্রে দ্রুত প্রতিক্রিয়া দেখায়।

WHMA এবং EHMA এর জন্য সূত্রগুলি অনুরূপ। HMA ডিফল্ট বিকল্প হিসাবে নির্বাচিত হয়।

এইচএমএ গণনা করার পরে, কৌশলটি এইচএমএর মধ্যরেখা মানকে ট্রেডিং সংকেত হিসাবে ব্যবহার করে। যখন দাম এইচএমএ মধ্যরেখার উপরে অতিক্রম করে এবং যখন দাম লাইনের নীচে পড়ে তখন অবস্থানগুলি বন্ধ করে দেয়। সুতরাং এটি লাভের জন্য এইচএমএ মধ্যরেখা ব্যবহার করে মাঝারি মেয়াদী প্রবণতা অনুসরণ করে।

সুবিধা

ঐতিহ্যগত এমএ কৌশলগুলির তুলনায় এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছেঃ

  1. দ্রুত প্রতিক্রিয়া এবং সময়মত প্রবেশ এবং বন্ধের জন্য প্রবণতা অনুসরণ করার ক্ষমতা
  2. অপ্রয়োজনীয় ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করা, উত্থান এবং স্টপগুলি অনুসরণ করা এড়ানো
  3. আরও বেশি বাজারের পরিবেশে অভিযোজিত করার জন্য নমনীয় এইচএমএ পরামিতি
  4. প্রয়োগযোগ্যতা প্রসারিত করার জন্য পরিবর্তনযোগ্য এইচএমএ ভেরিয়েন্ট

ঝুঁকি

এছাড়াও কিছু ঝুঁকি আছেঃ

  1. ব্যাপ্তি-সীমাবদ্ধ বাজারে একাধিক মিথ্যা সংকেত উৎপন্ন করা, ট্রেডিং ফ্রিকোয়েন্সি এবং স্লিপিং খরচ বৃদ্ধি
  2. HMA পরামিতিগুলি সঠিকভাবে সেট না করা হলে প্রবণতা বিপরীত পয়েন্টগুলি অনুপস্থিত, যা ক্ষতির ঝুঁকি বাড়ায়
  3. কম লিকুইডিটি স্টক ট্রেডিংয়ের সময় লিকুইডিটি ঝুঁকি এবং বিশাল স্লাইপ

সমাধান:

  1. সর্বোত্তম মানের জন্য HMA পরামিতি অপ্টিমাইজ করুন
  2. প্রবণতা বিপরীত পয়েন্ট নির্ধারণের জন্য অন্যান্য সূচক যোগ করুন
  3. বড় গড় দৈনিক ভলিউম সহ তরল স্টক নির্বাচন করুন

উন্নতি

কৌশলটি নিম্নলিখিত দিকগুলি থেকেও উন্নত করা যেতে পারেঃ

  1. সিগন্যাল নির্ভরযোগ্যতা নিশ্চিত করতে ভলিউম বা অন্যান্য ফিল্টার যোগ করুন
  2. ম্যাকডি, কেডিজে একত্রিত করুন, আরও ভাল টাইমিং, জয় হার উন্নত
  3. বাস্তব বাণিজ্য ব্যাকটেস্টের ভিত্তিতে এইচএমএ সময়কাল সংশোধন করুন
  4. WHMA বা EHMA-তে স্যুইচ করুন যা নির্দিষ্ট স্টকের জন্য সেরা পারফর্ম করে
  5. একক ট্রেড ক্ষতি নিয়ন্ত্রণের জন্য স্টপ লস মেকানিজম যোগ করুন

সংক্ষিপ্তসার

ডায়নামিক এমএ ট্রেডিং কৌশলটি মধ্যমেয়াদী মূল্য প্রবণতা কার্যকরভাবে ট্র্যাক করার জন্য এইচএমএর দ্রুত প্রতিক্রিয়াকে একীভূত করে। উপযুক্ত সময় এবং বন্ধের স্টপগুলিতে দীর্ঘ পজিশন খোলার মাধ্যমে এটি ভাল ব্যাকটেস্ট ফলাফল প্রদর্শন করেছে। প্যারামিটার টিউনিং এবং স্টক ফিল্টারিংয়ের আরও উন্নতি আরও স্থিতিশীল অতিরিক্ত রিটার্নের দিকে পরিচালিত করবে। এটি বাস্তবায়ন করা সহজ, ঝুঁকি-নিয়ন্ত্রিত পরিমাণগত কৌশল।


/*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)



আরো