ডায়নামিক রেঞ্জ ব্রেকআউট কৌশল

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

img

সারসংক্ষেপ

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

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

সূচক গণনা

প্রথমত, কম দামের উপর ভিত্তি করে বোলিংজার ব্যান্ডের বেস লাইন এবং নীচের ব্যান্ড গণনা করুনঃ

src = low
basis = sma(src, length) 
dev = mult * stdev(src, length)
lower = basis - dev

যেখানে src হল নিম্ন মূল্য, দৈর্ঘ্য হল গণনার সময়কাল, বেস হল চলমান গড়, dev হল স্ট্যান্ডার্ড ডিভিয়েশন, এবং নীচে হল নিম্ন ব্যান্ড।

মাল্ট সাধারণত ২ তে সেট করা হয়, যার অর্থ হল নীচের ব্যান্ডটি এক স্ট্যান্ডার্ড ডিভিয়েশন দূরে।

ফিল্টার শর্ত

কৌশলটি দুটি ফিল্টার শর্ত অন্তর্ভুক্ত করেঃ

মোমবাতি শরীরের ফিল্টারশরীরের আকার nbody এবং এর গড় অবয়ব নির্ধারণ করতে ব্যবহার করুন, শুধুমাত্র যখন nbody অবয়বের অর্ধেকের চেয়ে বড় হয় তখন ট্রেডিং সংকেত তৈরি করুন।

রঙ ফিল্টার
মোমবাতিটি ধনাত্মকভাবে বন্ধ হয়ে গেলে (বন্ধ > খোলা) দীর্ঘ সময় ধরে চলবেন না। এই hbox মাথা মিথ্যা ব্রেকআউট এড়াতে।

ট্রেডিং সিগন্যাল

নিম্নলিখিত শর্ত পূরণ হলে দীর্ঘ সংকেত উৎপন্ন করুনঃ

low < lower // price breaks lower band
close < open or usecol == false // color filter
nbody > abody / 2 or usebod == false // body filter  

যখন শরীরের আকার আবার অর্ধেকেরও বেশি হয়, তখন ঘনিষ্ঠ অবস্থানঃ

close > open and nbody > abody / 2  

অবস্থান আকার

কৌশলটি ট্রেডের আকারকে স্বয়ংক্রিয়ভাবে পজিশনের এক্সপোনেন্সিয়াল বৃদ্ধির জন্য গণনা করেঃ

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] 

ঝুঁকি নিয়ন্ত্রণ

শুধুমাত্র নির্দিষ্ট তারিখের পরিসরে ট্রেডিং সীমাবদ্ধ করার জন্য বছর, মাস এবং তারিখের উপর সীমাবদ্ধতা যোগ করুনঃ

when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

সুবিধা

ডায়নামিক ট্রেডিং রেঞ্জ

ট্রেন্ডের পর রিট্র্যাক্সিং ধরার জন্য বোলিংগারের নিচের ব্যান্ড একটি গতিশীল সমর্থন এলাকা প্রদান করে।

দ্বৈত ফিল্টার

মোমবাতি শরীর এবং রঙ ফিল্টার সমন্বয় কার্যকরভাবে মিথ্যা breakouts এড়াতে।

স্বয়ংক্রিয় অবস্থান আকার

পজিশনের আকার ১০০% পর্যন্ত বৃদ্ধি পায়, ঝুঁকি স্বয়ংক্রিয়ভাবে পরিচালনা করে।

তারিখের পরিসীমা

নির্দিষ্ট সময়ের মধ্যে একটি তারিখের পরিসীমা নির্ধারণ করে বাজারের অস্থিরতার সাথে যুক্ত ঝুঁকি হ্রাস পায়।

ঝুঁকি

দীর্ঘমেয়াদী অবসান

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

সমাধান

প্রবণতা সূচকগুলির সাথে মিশ্রিত করুন, দীর্ঘস্থায়ী ড্রাউনডাউন এড়ানোর জন্য যদি এটি ষাঁড়ের বাজার হিসাবে বিবেচিত হয় তবে কৌশলটি বন্ধ করুন।

ব্যর্থ ব্রেকআউট

ব্রেকআউট ব্যর্থ হতে পারে যদি নিচের ব্যান্ডটি পুনরায় পরীক্ষা করা হয়।

সমাধান

সমর্থন স্তরের নিচে স্টপ লস যোগ করুন অথবা দ্রুত স্টপ লসের জন্য ব্যর্থ পুনরায় পরীক্ষা সনাক্ত করতে লজিক যোগ করুন।

উন্নতি

স্টপ লস যোগ করুন

ব্যাকটেস্টের ফলাফলের ভিত্তিতে স্টপ লসকে সমর্থন থেকে নিচে অপ্টিমাইজ করুন।

প্যারামিটার অপ্টিমাইজ করুন

সূক্ষ্ম সুর শরীর ফিল্টার থাকার সময়কাল, রঙ ফিল্টার ইত্যাদি সর্বোত্তম খুঁজে পেতে।

প্রবণতা ফিল্টার যোগ করুন

যদি এটাকে ষাঁড়ের বাজার হিসেবে বিবেচনা করা হয়, তাহলে কৌশল বন্ধ করুন।

সিদ্ধান্ত

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


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Wizard Strategy v1.0", shorttitle = "Wizard str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false

//Signals
up1 = low < lower and (close < open or usecol == false) and body
exit = close > open and nbody > abody / 2

//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

আরো