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

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-২৬ 16:18:37
ট্যাগঃ

সারসংক্ষেপ

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

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

মূল যুক্তি দুটি চলমান গড়ের উপর নির্ভর করে, একটি দ্রুত লাইন এবং একটি ধীর লাইন, দামের প্রবণতা পরিমাপ করতে। দ্রুত লাইনের একটি স্বল্প সময়কাল রয়েছে এবং এটি আরও সংবেদনশীল। ধীর লাইনের একটি দীর্ঘ সময়কাল রয়েছে এবং এটি আরও স্থিতিশীল।

কোডটি ব্যবহারকারীদের ইনপুট পরামিতিগুলির মাধ্যমে দ্রুত লাইন সময় shortPeriod এবং ধীর লাইন সময় longPeriod সেট করতে দেয়। দুটি চলমান গড়ের মানগুলি shortSMA এবং longSMA হিসাবে গণনা করা হয়।

যখন দ্রুত চলমান গড় ধীর চলমান গড়ের উপরে অতিক্রম করে, এটি একটি আপসাইড ব্রেকআউট এবং দীর্ঘ প্রবেশের সংকেত দেয়। যখন দ্রুত এমএ ধীর এমএ এর নীচে অতিক্রম করে, এটি একটি ডাউনসাইড ব্রেকআউট এবং সংক্ষিপ্ত প্রবেশের সংকেত দেয়।

দীর্ঘ প্রবেশের শর্তঃ

Fast MA crosses above slow MA
Fast MA > Slow MA

সংক্ষিপ্ত প্রবেশের শর্তঃ

Fast MA crosses below slow MA
Fast MA < Slow MA 

কৌশলটি ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস, লাভ গ্রহণ এবং অবস্থান আকারের সেটিংস অন্তর্ভুক্ত করে।

সুবিধা

  • ব্যবহার করা সহজ, নতুনদের জন্য বোঝা সহজ
  • চলমান গড় কিছু শব্দ ফিল্টার করে
  • বিভিন্ন সময়সীমার জন্য সূক্ষ্ম সমন্বয় ম্যানেজমেন্ট সময়সীমার নমনীয়তা
  • পূর্ব নির্ধারিত স্টপ লস এবং লাভ গ্রহণ

ঝুঁকি

  • ভুয়া ব্রেকআউট এবং উইপসাউয়ের জন্য সংবেদনশীল
  • ব্যাপ্তি-সীমাবদ্ধ অস্থির বাজারের জন্য আদর্শ নয়
  • বিলম্বের ইঙ্গিত, এন্ট্রি বিলম্ব হতে পারে
  • প্রবণতা বিপরীত কার্যকরভাবে ফিল্টার করতে অক্ষম

ঝুঁকি ব্যবস্থাপনাঃ

  • মিথ্যা সংকেত এড়াতে ফিল্টার যোগ করুন
  • প্রবণতা স্পষ্ট হলে কৌশল প্রয়োগ করুন
  • আরও ভাল এন্ট্রি জন্য MA পরামিতি অপ্টিমাইজ করুন
  • অকাল থামার এড়ানোর জন্য বৃহত্তর স্টপগুলির অনুমতি দিন

উন্নতির সুযোগ

  • সেরা সমন্বয় খুঁজে পেতে এমএ পরামিতি অপ্টিমাইজ করুন
  • BOLL চ্যানেল বা KD এর মত অতিরিক্ত সূচক যোগ করুন
  • মুনাফা সর্বাধিকীকরণের জন্য প্রস্থান নিয়ম উন্নত করুন
  • বিভিন্ন যন্ত্রের উপর পরীক্ষার দৃঢ়তা
  • বিগ ডেটা ব্যবহার করে মেশিন লার্নিং অন্তর্ভুক্ত করুন

সিদ্ধান্ত

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


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YohanNaftali

//@version=5

///////////////////////////////////////////////////////////////////////////////
// Heikin Ashi Candle Startegy
// ver 2021.12.29
// © YohanNaftali
// This script composed by Yohan Naftali for educational purpose only 
// Reader who will use this signal must do own research
///////////////////////////////////////////////////////////////////////////////
strategy(
     title = 'Heikin Ashi Candle Startegy Long',  
     shorttitle = 'HA Strategy Long',  
     format = format.price,
     precision = 0,
     overlay = true)

// Input
validationPeriod = input.int( 
     defval = 3, 
     title = 'Validation Period', 
     group = 'Candle')

qtyOrder = input.float(
     defval = 1.0,
     title = 'Qty', 
     group = 'Order')

maxActive = input.float(
     defval = 1.0,
     title = 'Maximum Active Open Position', 
     group = 'Order')

// Long Strategy
tpLong = input.float(
     defval = 1,
     title = "Take Profit (%)",
     minval = 0.0, 
     step = 0.1, 
     group = "Long") * 0.01

slLong = input.float(
     defval = 25,
     title = "Stop Loss (%)", 
     minval=0.0, 
     step=0.1,
     group="Long") * 0.01

trailingStopLong = input.float(
     defval = 0.2,
     title = "Trailing Stop (%)",
     minval = 0.0, 
     step = 0.1,
     group = 'Long') * 0.01

// Calculation
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
haOpen = request.security(haTicker, timeframe.period, open)

// Long
limitLong = tpLong > 0.0 ? strategy.position_avg_price * (1 + tpLong) : na
stopLong = slLong > 0.0 ? strategy.position_avg_price * (1 - slLong) : na
float trailLong = 0.0
trailLong := if strategy.position_size > 0
    trailClose = close * (1 - trailLong)
    math.max(trailClose, trailLong[1])
else
    0

isGreen = true
for i = 0 to validationPeriod-1
    isGreen := isGreen and haClose[i] > haOpen[i]        
isLong = isGreen and haClose[validationPeriod] < haOpen[validationPeriod]



plot(
     limitLong,
     title = 'Limit', 
     color = color.rgb(0, 0, 255, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     trailLong,
     title = 'Trailing', 
     color = color.rgb(255, 255, 0, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     stopLong,
     title = 'Stop', 
     style = plot.style_stepline,
     color = color.rgb(255, 0, 0, 0), 
     linewidth = 1)

// plotshape(
//      isLong, 
//      title = 'Entry', 
//      style = shape.arrowup, 
//      location = location.belowbar, 
//      offset = 1, 
//      color = color.new(color.green, 0), 
//      text = 'Long Entry',
//      size = size.small)

// Strategy
strategy.risk.max_position_size(maxActive)
strategy.risk.allow_entry_in(strategy.direction.long)

strategy.entry(
     id = "Long", 
     direction = strategy.long, 
     qty = qtyOrder,  
     when = isLong,       
     alert_message = "LN")
if (strategy.position_size > 0)
    strategy.exit(
         id = "Long Exit",
         from_entry = "Long",
         limit = limitLong,
         stop = stopLong,
         trail_price = trailLong,
         alert_message = "LX")      

আরো