হুল মুভিং এভারেজ সুইং ট্রেডিং কৌশল

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

সারসংক্ষেপ

এই কৌশলটি হল হুল মুভিং এভারেজ সূচকের উপর ভিত্তি করে একটি স্বল্পমেয়াদী ট্রেডিং কৌশল। কৌশলটি ট্রেন্ড অনুসরণকারী কৌশলটির অন্তর্গত ট্রেডিং সংকেত তৈরি করতে হুল মুভিং এভারেজ লাইনের সোনার ক্রস এবং মৃত ক্রস ব্যবহার করে।

কৌশলগত যুক্তি

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

কিছু মিথ্যা সংকেত ফিল্টার করার জন্য, কৌশলটি হুল লাইন (Hull_Line) প্রবর্তন করে। হুল লাইন হল nma এবং n2ma এর মধ্যে পার্থক্যের একটি রৈখিক রিগ্রেশন ফলাফল। যখন মূল্য এবং হুল লাইনের মধ্যে বিচ্যুতি হয়, তখন কৌশলটি ট্রেডিং সংকেতটি এড়িয়ে যাবে।

বিশেষ করে, কৌশলগত নিয়মগুলি নিম্নরূপঃ

  1. সময়কালের সাথে এনএমএ গণনা করুন

  2. nma সময়ের অর্ধেকের সাথে n2ma গণনা করুন

  3. n2ma এবং nma মধ্যে পার্থক্য পার্থক্য গণনা

  4. Moving average the diff with period sqrt ((hullperiod), এবং পেতে the Hull Line Hull_Line

  5. যখন মূল্য হুল লাইন উপরে ক্রস, একটি কিনতে সংকেত উৎপন্ন হয়

  6. যখন দাম হুল লাইনের নিচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত তৈরি হয়

  7. যদি মূল্য এবং Hull লাইন মধ্যে পার্থক্য আছে, সংকেত এড়িয়ে যান

  8. পজিশনের একটি নির্দিষ্ট শতাংশ দিয়ে প্রবেশ করুন, exit stop loss গ্রহণ করুন

সুবিধা বিশ্লেষণ

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

  1. Hull Moving Average এর উপর ভিত্তি করে, এটি দ্রুত প্রবণতা ক্যাপচার করতে পারে এবং প্রবণতা অনুসরণ করতে পারে

  2. মিথ্যা সংকেত ফিল্টার এবং সংকেত মান উন্নত করতে Hull লাইন ব্যবহার করুন

  3. স্বল্পমেয়াদী ট্রেডিংয়ের জন্য উপযুক্ত, ভাল ঝুঁকি-প্রতিদান অনুপাত এবং ড্রাউন

  4. নমনীয় প্যারামিটার সেটিং, বিভিন্ন বাজারের পরিবেশে অভিযোজিত

  5. বিপরীতমুখী স্টপ লস গ্রহণ করুন, সময় এবং নিয়ন্ত্রণ ঝুঁকিতে ক্ষতি বন্ধ করতে পারেন

  6. নির্দিষ্ট সময়ের মধ্যে সিস্টেমিক ঝুঁকি এড়ানোর জন্য মৌসুমীতা একত্রিত করুন

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. ট্রেন্ড অনুসরণকারী কৌশল, সারাদিন ট্রেড করতে পারে না

  2. প্রবণতা বিপরীত হলে বড় ক্ষতি

  3. চলমান গড়ের বিলম্ব, সময়মত বাঁক পয়েন্ট ধরা যাবে না

  4. উচ্চ ট্রেডিং ফ্রিকোয়েন্সির ফলে ট্রেডিং খরচ বেশি হয়

  5. অপ্রয়োজনীয় প্যারামিটার সেটিংগুলি পরিসীমা-সীমাবদ্ধ বাজারে কম মুনাফা অর্জন করতে পারে

এই ঝুঁকিগুলি নিয়ন্ত্রণ করতে, আমরা নিম্নলিখিত ব্যবস্থা গ্রহণ করতে পারিঃ

  1. একক ক্ষতি নিয়ন্ত্রণের জন্য মার্টিনগাল স্টপ লস কৌশল গ্রহণ করুন

  2. বিভিন্ন বাজারের পরিবেশে প্যারামিটার এবং পরীক্ষার দৃঢ়তা অপ্টিমাইজ করুন

  3. বিপরীতমুখী সময়ে প্রবণতা অনুসরণ করা এড়াতে প্রবণতা মূল্যায়নকারী সূচকগুলি একত্রিত করুন

  4. ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য হোল্ডিং সময় বাড়ান

অপ্টিমাইজেশান নির্দেশাবলী

এই কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ

  1. আরও ভাল প্রবেশের জন্য প্রবণতার সূচনা পয়েন্টটি সনাক্ত করতে গতির সূচকগুলি একত্রিত করুন

  2. ট্রেন্ডের দিকনির্দেশনা এবং শক্তি বিচার করতে সহায়তা করার জন্য মেশিন লার্নিং মডেল যুক্ত করুন

  3. রিয়েল-টাইম মার্কেট ডায়নামিকের উপর ভিত্তি করে পরামিতিগুলি সামঞ্জস্য করার জন্য অভিযোজিত প্যারামিটার সেটিং গ্রহণ করুন

  4. বিভিন্ন টাইমফ্রেম জন্য বিভিন্ন অবস্থান মাপ সঙ্গে মাল্টি-সময়ফ্রেম Hull সিস্টেম কনফিগার করুন

  5. পর্যাপ্ত গতির সাথে মিথ্যা ব্রেকআউট এড়ানোর জন্য ভলিউম সূচকগুলি একত্রিত করুন

  6. অস্থিরতার উপর ভিত্তি করে অবস্থানের আকারকে গতিশীলভাবে সামঞ্জস্য করার জন্য অস্থিরতা ভিত্তিক অবস্থান আকারের মডেল যুক্ত করুন

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

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


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//                               Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
    Hull_retracted = Hull_Line - 2
else
    Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
    strategy.close("BUY", when=window())
if price > c2
    strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
    strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
    strategy.entry("SELL", strategy.short, when=window())  //        /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D


আরো