ডাবল মুভিং এভারেজ ব্রেকআউট কৌশল


সৃষ্টির তারিখ: 2023-12-11 15:21:58 অবশেষে সংশোধন করুন: 2023-12-11 15:21:58
অনুলিপি: 0 ক্লিকের সংখ্যা: 410
1
ফোকাস
1237
অনুসারী

ডাবল মুভিং এভারেজ ব্রেকআউট কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি দুটি মুভিং এভারেজ ব্যবহার করেঃ একটি দ্রুত এমএ এবং একটি ধীর এমএ। দ্রুত এমএ চক্রটি সাধারণত স্বল্পমেয়াদী সময়ের জন্য সেট করা হয় (যেমন 15 পিরিয়ড), যা স্বল্পমেয়াদী মূল্য পরিবর্তনের জন্য ব্যবহৃত হয়; ধীর এমএ চক্রটি সাধারণত দীর্ঘ সময়ের জন্য সেট করা হয় (যেমন 21 পিরিয়ড), যা মূল প্রবণতার দিকনির্দেশের জন্য ব্যবহৃত হয়। কৌশলটির ট্রেডিং সিগন্যাল দুটি এমএ এর ক্রস থেকে আসেঃ যখন দ্রুত এমএ ধীর এমএ অতিক্রম করে তখন একটি কেনার সংকেত; যখন দ্রুত এমএ ধীর এমএ অতিক্রম করে তখন একটি বিক্রয় সংকেত।

বিভিন্ন এমএ চক্রের পোর্টফোলিও সেট করে, কৌশলটি ট্রেন্ড ক্যাপচার করার সময়কালের দৈর্ঘ্যকে সামঞ্জস্য করতে পারে। সংক্ষিপ্ত এমএ পোর্টফোলিওগুলি স্বল্পমেয়াদী ছোট চক্রের জন্য মূল্য পরিবর্তনের সুযোগগুলি ধরতে পারে; দীর্ঘ এমএ পোর্টফোলিওগুলি কেবলমাত্র দীর্ঘতর লাইন স্তরের প্রবণতা ধরার জন্য ঝড়কে ফিল্টার করতে পারে।

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

কৌশলগত সুবিধা

দ্বি-মিলনের কৌশল নিম্নলিখিত সুবিধাগুলি নিয়ে আসেঃ

  1. ধারণাটি সহজ, সহজে বোঝা যায় এবং বাস্তবায়িত হয়।
  2. এমএ চক্রের সমন্বয় করে বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্য রেখে বিভিন্ন সময়কালের প্রবণতা ধরা যায়;
  3. এটি একটি স্থিতিশীল ব্যবসায়িক পদ্ধতি, যার ফলে খুব ঘন ঘন লেনদেন হয় না।
  4. স্টপ লস স্টপারের সাথে, ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করা যায়;
  5. সহজেই অপ্টিমাইজ করা যায়, এমএ চক্র, ঝুঁকি ব্যবস্থাপনা পরামিতি ইত্যাদি সামঞ্জস্য করা যায়, যা আরও কার্যকর করে।

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

ডাবল ইউনিভার্সাল স্ট্র্যাটেজিতে কিছু ঝুঁকিও রয়েছে, যা নিম্নলিখিত দিকগুলিতে কেন্দ্রীভূতঃ

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

এই ঝুঁকিগুলি সংশোধন এবং অপ্টিমাইজ করা যেতে পারে, যেমন MA প্যারামিটারগুলিকে সামঞ্জস্য করা, ফিল্টারিং শর্তগুলি যুক্ত করা এবং স্টপ লজিকটি অপ্টিমাইজ করা।

অপ্টিমাইজেশান দিক

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

  1. ট্র্যাডিশনাল বা ওভারল্যাপিং ইন্ডিকেটরগুলির মতো ফিল্টার যুক্ত করুন, যাতে ঘন ঘন ঝাঁকুনি এবং ভুয়া ব্রেকআউটের সময় বাসা তৈরি করা যায় না।
  2. MA চক্র এবং সংমিশ্রণ বিভিন্ন চক্র এবং জাতের বৈশিষ্ট্যের সাথে সামঞ্জস্যপূর্ণ হতে পারে;
  3. বিভিন্ন ধরনের এমএ যেমন ইএমএ, এলডব্লিউএমএ ইত্যাদি পরীক্ষা করা যায়, যা দামের প্রতিক্রিয়াতে সবচেয়ে সংবেদনশীল এমএ ফর্ম্যাট নির্বাচন করে;
  4. মেশিন লার্নিং অ্যালগরিদম যুক্ত করা হয়েছে যা স্বয়ংক্রিয়ভাবে MA প্যারামিটার, স্টপড্যাম্পের মতো অতি-প্যারামিটারগুলিকে অনুকূলিতকরণ করতে পারে।
  5. বিভিন্ন ধরণের ক্ষতির পরীক্ষা করা যায় যেমন, উড়ন্ত ক্ষতি, ট্র্যাকিং ক্ষতি, গড় ক্ষতি ইত্যাদি।

এই অপ্টিমাইজেশান এবং উন্নতিগুলি কৌশলগুলির সাফল্য, লাভের হার, ঝুঁকি এবং রিটার্নের হারকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-12-10 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Silent Trader Strategy", shorttitle = "Silent Trader", overlay = true, pyramiding = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_value = 0.0675, initial_capital = 1000, currency = currency.USD, calc_on_order_fills = true, calc_on_every_tick = true)

maFastSource   = input(defval = ohlc4, title = "Fast MA Source")
maFastLength   = input(defval = 15, title = "Fast MA Period", minval = 1)
maSlowSource   = input(defval = ohlc4, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
inpTakeProfit   = input(defval = 100, title = "Take Profit percentage(0.1%)", minval = 0)
inpStopLoss     = input(defval = 100, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

useTimeLimit    = input(defval = true, title = "Use Start Time Limiter?")
startYear       = input(defval = 2018, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() =>
    inputTime = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute)
    timeOk = time > inputTime ? true : false
    r = (useTimeLimit and timeOk) or not useTimeLimit

maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)

fast = plot(maFast, title = "Fast MA", color = #26A69A, linewidth = 1, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #EF5350, linewidth = 1, style = line, transp = 50)

aboveBelow = maFast >= maSlow ? true : false
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

if( startTimeOk() )
    enterLong = not tradeDirection[1] and tradeDirection
    exitLong = tradeDirection[1] and not tradeDirection
    strategy.entry( id = "Long", long = true, when = enterLong )
    //strategy.close( id = "Long", when = exitLong )
    
    enterShort = tradeDirection[1] and not tradeDirection
    exitShort = not tradeDirection[1] and tradeDirection
    strategy.entry( id = "Short", long = false, when = enterShort )
    //strategy.close( id = "Short", when = exitShort )
    
    strategy.exit("Exit Long", from_entry = "Long",  profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)
    strategy.exit("Exit Short", from_entry = "Short", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)