ইম্পুটাম বার্স্ট ট্র্যাকিং কৌশল

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

img

সারসংক্ষেপ

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

কৌশল নীতি

এই কৌশলটি প্রবেশের সংকেত নির্ধারণের জন্য প্রধান সূচকগুলি হলঃ

  1. শতাংশ মূল্য পরিবর্তন (isFourPercentBull) - মূল্য কার্যকরভাবে ভেঙে গেছে কিনা তা নির্ধারণ করতে পূর্ববর্তী দিনের বন্ধের মূল্যের তুলনায় বন্ধের দামের শতাংশ পরিবর্তন গণনা করুন।

  2. ক্লোজিং প্রাইস থেকে সর্বোচ্চ মূল্যের অনুপাত (HighCloseRatio) - মূল্যের অগ্রগতির শক্তি নির্ধারণের জন্য ক্লোজিং প্রাইস থেকে সর্বোচ্চ মূল্যের অনুপাত গণনা করুন।

  3. ট্রেডিং ভলিউম (ভলিউম) - বৈধ অগ্রগতি নিশ্চিত করার জন্য ট্রেডিং ভলিউম আগের দিনের চেয়ে বেশি হতে হবে।

  4. 200-দিনের সহজ চলমান গড় (এসএমএ) - প্রবণতার দিক নির্ধারণের জন্য বন্ধের মূল্য এবং খোলার মূল্য 200 দিনের লাইনের চেয়ে বেশি হতে হবে।

যখন উপরের একাধিক শর্ত একই সময়ে পূরণ করা হয়, তখন একটি ক্রয় সংকেত জারি করা হয়। এর পরে, কৌশলটি সক্রিয়ভাবে ক্ষতি বন্ধ করতে এবং লাভকে লক করতে মূল্য ট্র্যাকিং স্টপ লস ব্যবহার করে। বিশেষত, ট্রেলিং স্টপ লস লাইনের গণনার সূত্রটি হ'লঃ

trailPrice = close * (100 - trailPercent) / 100

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

কৌশলটির সুবিধা

একটি সাধারণ ব্রেকআউট কৌশল হিসাবে, এর নিম্নলিখিত সুবিধা রয়েছেঃ

  1. মাল্টি-কন্ডিশন ফিল্টারিং ব্রেকআউটের বৈধতা নিশ্চিত করে এবং মিথ্যা ব্রেকআউট এড়ায়।

  2. মূল্য ট্র্যাকিং স্টপ লস গ্রহণ করুন, যা সক্রিয়ভাবে ক্ষতি কমাতে পারে এবং ড্রডাউন এড়ানোর জন্য লাভকে সর্বাধিক করতে পারে।

  3. কৌশলগত যুক্তি সহজ এবং পরিষ্কার, সহজেই বোঝা যায় এবং অপ্টিমাইজ করা যায়।

কৌশলটির ঝুঁকি

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

  1. এখনও ব্যর্থ ব্রেকআউটের সম্ভাবনা রয়েছে যা সম্পূর্ণরূপে ক্ষতি এড়াতে পারে না।

  2. অতিরিক্ত আক্রমণাত্মক ট্র্যাকিং স্টপগুলি ঘন ঘন স্টপের কারণ হতে পারে।

  3. অনুপযুক্ত প্যারামিটার সেটিংস অত্যধিক ট্রেডিং ফ্রিকোয়েন্সি বা মিস করা সংকেত হতে পারে।

সংশ্লিষ্ট ঝুঁকিগুলির সমাধান হলঃ

  1. পর্যাপ্ত জায়গা নিশ্চিত করার জন্য পরামিতি অপ্টিমাইজ করুন এবং স্টপ ক্ষতির মাত্রা হ্রাস করুন।

  2. স্পষ্ট প্রবণতা মিস না করার জন্য ব্রেকআউট শর্তগুলি যুক্তিসঙ্গতভাবে শিথিল করুন।

  3. কৌশল স্থিতিশীলতা মূল্যায়ন করার জন্য বিভিন্ন জাতের পরীক্ষা করুন।

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

এই কৌশলতে স্টপগুলির উচ্চ ঘনত্ব বিবেচনা করে, নিম্নলিখিত দিকগুলি আরও অপ্টিমাইজ করা যেতে পারেঃ

  1. অন্যান্য স্টপ লস ট্র্যাকিং পদ্ধতি যেমন চলমান গড় ট্র্যাকিং, ATR এবং ভোল্টেবিলিটি ট্র্যাকিং ব্যবহার করুন।

  2. ঐতিহাসিক তথ্যের উপর ভিত্তি করে আরও ভাল পারফরম্যান্সের প্যারামিটার সমন্বয়ের বিচার প্রশিক্ষণের জন্য মেশিন লার্নিং অ্যালগরিদম বৃদ্ধি করুন।

  3. কার্যকারিতা নিশ্চিত করার জন্য ভলিউম ব্রেকআউটের উপর ভিত্তি করে সহায়ক বিচার শর্ত যুক্ত করুন।

  4. সেরা ফিট খুঁজে পেতে বিভিন্ন জাতের মধ্যে প্যারামিটার সেটিংসের পার্থক্য মূল্যায়ন করুন।

সিদ্ধান্ত

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


/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20:00
period: 1d
basePeriod: 1h
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/
// © doks23

//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)

//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true

// Profit and Loss
trailPercent    = input.float(title="Trail%", defval=3, step=0.1)

//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)

//Input Strategy
DateCheck=  input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate=   input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate      =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')

//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
    trade_qty:=ContractQty
else
    trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty


//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice    = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
    strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
    trailPrice := close*percentMulti
if strategy.position_size>0
    trailPrice := math.max(close*percentMulti,trailPrice[1])
    if low <= trailPrice
        strategy.exit('Exit','Long',stop = trailPrice)
        if strategy.position_size==0     
            trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
    trail_long_SL:=trailPrice
else
    trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)

আরো