মোমেন্টাম ব্রেকআউট ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-12-19 15:46:38 অবশেষে সংশোধন করুন: 2023-12-19 15:46:38
অনুলিপি: 2 ক্লিকের সংখ্যা: 573
1
ফোকাস
1621
অনুসারী

মোমেন্টাম ব্রেকআউট ট্রেডিং কৌশল

ওভারভিউ

Momentum Breakout Trading Strategy হল একটি ট্রেন্ড ট্র্যাকিং কৌশল যা মূল প্রতিরোধের স্তরগুলিকে অতিক্রম করে ট্রেডিং সিগন্যাল তৈরি করে। এই কৌশলটি ডোনচিয়ান চ্যানেলের গতিশীলতা ব্যবহার করে মূল প্রতিরোধের স্তরগুলি নির্ধারণ করে এবং চলমান গড় সূচকগুলির সাথে সংযুক্ত করে। এটি ভুল ট্রেডিং এড়াতে সংকেতগুলিকে আরও ফিল্টার করে।

কৌশল নীতি

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

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

বিশেষ করে, এই কৌশলটির জন্য প্রবেশের শর্তটি হলঃ দামটি ডোনচিয়ান চ্যানেলের ট্রেল আপটি ভেঙে দেয় এবং বন্ধের দামটি চলমান গড়ের চেয়ে বেশি। ঊর্ধ্বমুখী ঊর্ধ্বমুখী ঊর্ধ্বমুখী ঊর্ধ্বমুখী ঊর্ধ্বমুখী ঊর্ধ্বমুখী।

স্টপ লস পদ্ধতিটি Donchian Channel এর নিচের ট্র্যাক অনুসরণ করে। এটি নিশ্চিত করে যে স্টপ লস পয়েন্টটি প্রবণতার সাথে সাথে উপরে চলে যাবে।

সামর্থ্য বিশ্লেষণ

এই কৌশলটি ট্রেন্ডের দিকনির্দেশনা এবং শক্তি নির্ধারণের জন্য দুটি সূচককে একত্রিত করে, এটি ব্রেকআপ সংকেতগুলিকে কার্যকরভাবে সনাক্ত করতে পারে এবং ভুল ব্যবসায় এড়াতে পারে। একই সাথে, স্টপ লসটি যুক্তিসঙ্গত, যাতে কৌশলটি ট্রেন্ডকে পুরোপুরি অনুসরণ করতে পারে।

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

  1. ডনচিয়ান চ্যানেলের সূচকটি গতিশীলভাবে গুরুত্বপূর্ণ সমর্থন ও প্রতিরোধের অবস্থান নির্ধারণ করতে পারে এবং প্রবণতার গুরুত্বপূর্ণ বিপর্যয় চিহ্নিত করতে পারে।

  2. মুভিং এভারেজ সূচকগুলি ফিল্টার হিসাবে কাজ করে, যা ক্রয়-বিক্রয় অঞ্চল এড়াতে এবং অকার্যকর লেনদেন হ্রাস করতে পারে।

  3. স্টপ লস পদ্ধতিটি ডোনচিয়ান চ্যানেলের নিচে ট্র্যাক করা হয়, যা ট্রেন্ডের সর্বাধিক লাভের জন্য ব্যবহার করা হয়।

  4. কৌশলগত প্যারামিটারগুলি যুক্তিসঙ্গতভাবে নমনীয়ভাবে সেট করা হয়েছে, যা বিভিন্ন বাজার পরিস্থিতির জন্য সামঞ্জস্যপূর্ণ এবং অনুকূলিতকরণযোগ্য।

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

এই কৌশলটি নিম্নলিখিত ঝুঁকির সম্মুখীন হয়েছেঃ

  1. ব্রেকআউট ব্যর্থতার ঝুঁকি দামের ব্রেকআউট চ্যানেলের ট্র্যাকিংয়ের পরে দ্রুত পুনঃনির্ধারণ করা যেতে পারে, কার্যকরভাবে স্টক স্থাপন করা যায় না

  2. ট্রেন্ড রিভার্সনের ঝুঁকি। স্টপ লস পয়েন্টের আগে ট্রেড রিভার্সনের সম্ভাবনা রয়েছে, যার ফলে স্টপ লস আউট হয়।

  3. প্যারামিটার অপ্টিমাইজেশনের ঝুঁকি। ভুল প্যারামিটার সেটিং ট্রেডিং ঘন বা সংকেত অভাব হতে পারে।

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

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

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

  1. ট্র্যাফিক ইন্ডিকেটর দিয়ে ফিল্টার করা সিগন্যালের সাহায্যে নিশ্চিত করুন যে এই ব্রেকডাউনটি শক্তিশালী।

  2. চলমান গড়ের চক্রের প্যারামিটারগুলিকে অপ্টিমাইজ করা হয়েছে যাতে এটি বিভিন্ন জাতের বৈশিষ্ট্যগুলির সাথে আরও সামঞ্জস্যপূর্ণ হয়

  3. স্টপ-ড্রপ মেকানিজমকে সামঞ্জস্য করুন যাতে স্টপ-ড্রপ দূরত্বটি বাজারের ওঠানামার সাথে খাপ খাইয়ে নিতে পারে।

  4. পুনরায় প্রবেশের ব্যবস্থা যোগ করা হয়েছে, যাতে ট্রেন্ডিং সুযোগগুলি পুনরায় ধরা যায়।

  5. মাল্টি-প্রজাতি পুনর্নির্মাণ, পরামিতিগুলির দৃঢ়তা পরীক্ষা করুন। বিভিন্ন জাতের বৈশিষ্ট্য অনুসারে সূক্ষ্মভাবে প্যারামিটারগুলি সামঞ্জস্য করুন।

সারসংক্ষেপ

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

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

//@version=4

// Revision:        1
// Author:          @millerrh
// Strategy:  
//      Entry: Buy when Donchian Channel breaks out
//      Exit: Trail a stop with the lower Donchian Channel band
// Conditions/Variables:
//    1. Can add a filter to only take setups that are above a user-defined moving average (helps avoid trading counter trend) 
//    2. Manually configure which dates to back test
//    3. User-Configurable DC Channel length


// === CALL STRATEGY/STUDY, PROGRAMATICALLY ENTER STRATEGY PARAMETERS HERE SO YOU DON'T HAVE TO CHANGE THEM EVERY TIME YOU RUN A TEST ===
// (STRATEGY ONLY) - Comment out srategy() when in a study() 
strategy("Donchian Breakout", overlay=true, initial_capital=10000, currency='USD', 
   default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// (STUDY ONLY) - Comment out study() when in a strategy() 
//study("Donchian Breakout", overlay=true)


// === BACKTEST RANGE ===
From_Year  = input(defval = 2019, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window

// == INPUTS ==
trigInput = input(title = "Execute Trades On...", defval = "Wick", options=["Wick","Close"]) // Useful for comparing standing stop orders vs. waiting for candle closes prior to action
stopTrail = input(title = "Trail Stops On...", defval = "ATR", options = ["ATR","Bottom of DC Channel","Midline of DC Channel","Tightest of ATR/Bot DC Channel"])
dcPeriod = input(title="DC period", type=input.integer, defval=20)

// === PLOT THE DONCHIAN CHANNEL ===
// Logic
dcUpper = highest(high, dcPeriod)
dcLower = lowest(low, dcPeriod)
dcMid = avg(dcUpper, dcLower)

// Plotting
dcUplot = plot(dcUpper, color=color.blue, linewidth=1, title="Upper Channel Line")
dcLplot = plot(dcLower, color=color.blue, linewidth=1, title="Lower Channel Line")
dcMidPlot = plot(dcMid, color=color.gray, linewidth=1, title="Mid-Line Average")
fill(dcUplot, dcLplot, color=color.gray, transp=90)

// == FILTERING ==
// Inputs
useMaFilter = input(title = "Use MA for Filtering?", type = input.bool, defval = true)
maType = input(defval="SMA", options=["EMA", "SMA"], title = "MA Type For Filtering")
maLength   = input(defval = 100, title = "MA Period for Filtering", minval = 1)

// Declare function to be able to swap out EMA/SMA
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = ma(maType, close, maLength)
plot(maFilter, title = "Trend Filter MA", color = color.green, linewidth = 3, style = plot.style_line, transp = 50)

// Check to see if the useMaFilter check box is checked, this then inputs this conditional "maFilterCheck" variable into the strategy entry 
maFilterCheck = if useMaFilter == true
    maFilter
else
    0

// == ENTRY AND EXIT CRITERIA ==
// Trigger stop based on candle close or High/Low (i.e. Wick) - If doing daily timeframe, can do candle close.  Intraday should use wick.
trigResistance = trigInput == "Close" ? close : trigInput == "Wick" ? high : na
trigSupport = trigInput == "Close" ? close : trigInput == "Wick" ? low : na
buySignal = trigResistance >= dcUpper[1] // The [1] looks at the previous bar's value as it didn't seem to be triggering correctly without it (likely) DC moves with each bar
sellSignal = trigSupport <= dcLower[1]

buy = buySignal and dcUpper[1] > maFilterCheck // All these conditions need to be met to buy


// (STRATEGY ONLY) Comment out for Study
// This string of code enters and exits at the close
if (trigInput == "Close")
    strategy.entry("Long", strategy.long, when = buy)
    strategy.close("Long", when = sellSignal)

// This string of code enters and exits at the wick (i.e. with pre-set stops)
if (trigInput == "Wick")
    strategy.entry("Long", strategy.long, stop = dcUpper[1], when = time > Start and time < Finish and dcUpper[1] > maFilterCheck)
    strategy.exit("Exit Long", from_entry = "Long", stop = dcLower[1])