কৌশল অনুসরণ করে অভিযোজিত প্রবণতা


সৃষ্টির তারিখ: 2024-01-15 14:20:32 অবশেষে সংশোধন করুন: 2024-01-15 14:20:32
অনুলিপি: 3 ক্লিকের সংখ্যা: 835
1
ফোকাস
1617
অনুসারী

কৌশল অনুসরণ করে অভিযোজিত প্রবণতা

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির কেন্দ্রীয় সূচক হল ব্রিন ব্যান্ড। ব্রিন ব্যান্ডটি মিড-রেল, আপ-রেল এবং ডাউন-রেলের সমন্বয়ে গঠিত। মিড-রেল হল n দিনের একটি সরল চলমান গড়, আপ-রেল হল মিড-রেল + k গুণ n দিনের স্ট্যান্ডার্ড ডিফেন্ডার, এবং ডাউন-রেল হল মিড-রেল-k গুণ n দিনের স্ট্যান্ডার্ড ডিফেন্ডার। এখানে 20 দিনের মিড-রেল এবং 2 গুণ স্ট্যান্ডার্ড ডিফেন্ডার বেছে নেওয়া হয়েছে ব্রিন ব্যান্ড গঠন করার জন্য।

তারপর আমরা বুলিন ব্যান্ডের ব্যান্ডউইথ ((উপরের রেল-নিচের রেল) এবং মধ্যম রেলের অনুপাত গণনা করি, যাকে বলা হয় প্রান্তিক শক্তির ফ্যাক্টর () । এই অনুপাতটি বর্তমান বাজারের ওঠানামা এবং প্রবণতার শক্তিকে প্রতিফলিত করে। আমরা শক্তির ফ্যাক্টরের সর্বোচ্চ-ন্যূনতম মান সেট করি যাতে এটি খুব বড় বা খুব ছোট না হয়।

যুক্তিসঙ্গত শক্তি ফ্যাক্টর পাওয়ার পরে, এটিআর নির্দেশক সহ, এটিআরকে উপরে এবং নীচে ট্র্যাকের উপরে এবং নীচে সরান*শক্তি ফ্যাক্টর এই দূরত্ব, একটি স্ব-অনুকূলিত প্রবণতা চ্যানেল তৈরি করে। যখন বন্ধের দাম নীচে থেকে উপরে উঠে যায়, তখন বেশি করুন; যখন উপরে থেকে নীচে থেকে নীচে চলে যায়, তখন খালি করুন।

এছাড়াও, কৌশলটি একটি ক্ষতি বন্ধ করার ব্যবস্থাও সেট করে। যখন একাধিক শীর্ষস্থানীয় অবস্থান তৈরি হয়, যদি দামটি পজিশন খোলার সময় সর্বনিম্ন পয়েন্টটি ভেঙে যায় তবে পজিশনটি বন্ধ করে দেওয়া হয়; খালি শীর্ষস্থানীয় অবস্থানও।

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

এই কৌশলটির সুবিধাগুলো হলঃ

  1. স্বনির্ধারণ ক্ষমতাসম্পন্ন। স্ট্রেনথ ফ্যাক্টর গণনা করার পদ্ধতিটি কৌশলটিকে বাজারের ওঠানামার গতিশীলতার উপর ভিত্তি করে চ্যানেলের প্রস্থকে সামঞ্জস্য করতে সক্ষম করে, ট্রেন্ডিং বাজারগুলিতে চ্যানেল প্রসারিত করে এবং ঝড়ের বাজারে চ্যানেল সংকীর্ণ করে, বিভিন্ন ধরণের বাজারের স্বনির্ধারণের জন্য।

  2. অপারেটিং ফ্রিকোয়েন্সি মাঝারি সহজ চলন্ত গড় কৌশল তুলনায়, বুলিন-ব্যান্ড কৌশলটি চ্যানেলের সামঞ্জস্যের জন্য কম ফ্রিকোয়েন্সি দেয়, যা অপ্রয়োজনীয়ভাবে ঘন ঘন পজিশন খোলার এড়ায়

  3. এন্ট্রি সঠিক। এই প্রবেশের পদ্ধতিটি কার্যকরভাবে বাজার শব্দকে ফিল্টার করে এবং প্রবণতা শুরু করার উচ্চ সম্ভাবনা নিশ্চিত করে।

  4. ক্ষতির ব্যবস্থা রয়েছে। বিল্ট-ইন ক্ষতির ব্যবস্থাটি একক ক্ষতির কার্যকর নিয়ন্ত্রণের জন্য কৌশলটির একটি বড় সুবিধা।

কৌশলগত ঝুঁকি

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

  1. প্যারামিটার সংবেদনশীলতা বেশি। ব্রিনসবেন্ডের সময়কাল n এবং গুণিতক k ফলাফলের উপর প্রভাব ফেলে, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে পুনরাবৃত্তি পরীক্ষা প্রয়োজন।

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

  3. কখনও কখনও ভুল সংকেত তৈরি হয়। ব্রিনবেন্ড কৌশলটি নিখুঁত নয়, এবং কিছু ভুল সংকেত তৈরি হয়, যার জন্য সংশ্লিষ্ট ক্ষতির প্রয়োজন।

  4. এই কৌশলটি কেবলমাত্র সর্বোচ্চ এবং সর্বনিম্ন মূল্যের পরে বন্ধের জন্য বন্ধ করে দেয়, এটি আরও জটিল স্টপিং পদ্ধতি যেমন ওঠানামা বা সংরক্ষণশীলতার সাথে সংযুক্ত না করে, যা অপ্টিমাইজেশনের প্রয়োজন হতে পারে।

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

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

  1. বিভিন্ন মুদ্রা এবং বিভিন্ন সময়কালের প্যারামিটারগুলির কার্যকারিতা পরীক্ষা করুন। কৌশলটির প্যারামিটারগুলি বিভিন্ন মুদ্রা এবং সময়কালের জন্য অনুকূলিতকরণ করা যেতে পারে, কৌশলটির অভিযোজনযোগ্যতা বাড়ায়।

  2. অপ্টিমাইজ করা ক্ষতি বন্ধ করার পদ্ধতি। আপনি চলমান ক্ষতি, দোলন ক্ষতি, ট্র্যাকিং ক্ষতি ইত্যাদি চালু করতে পারেন, যাতে ক্ষতি বন্ধ করার পদ্ধতি আরও বুদ্ধিমান হয়।

  3. অন্যান্য সূচকগুলির সাথে মিলিতভাবে ফিল্টার করুন। MACD, KDJ ইত্যাদির মতো সূচকগুলি যুক্ত করা যেতে পারে, যাতে ব্রিন বন্ডটি ক্রস-প্লেডের ঝাঁকুনির বাজারে ভুল সংকেত তৈরি না করে।

  4. পজিশন ম্যানেজমেন্ট পদ্ধতি বাড়ানো। স্টপ, পিরামিড, ফিক্সড রেট পজিশনের মতো ম্যানেজমেন্ট পদ্ধতি বাস্তবায়ন করে কৌশলগত রিটার্নের হার বাড়ানো যায়।

  5. রিটার্ন অপ্টিমাইজেশান করা। রিটার্নের সময়সীমা বাড়ানো, প্যারামিটারগুলি সামঞ্জস্য করা, রিটার্ন রিপোর্ট বিশ্লেষণ করা ইত্যাদির মাধ্যমে কৌশলটির কার্যকারিতা পুরোপুরি পরীক্ষা করা এবং সর্বোত্তম প্যারামিটারগুলি সন্ধান করা।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[Th] Adaptive Trend v1", shorttitle="[TH] Adaptive Trend", overlay=true)

Pd=input(2, minval=1,maxval = 100, title="Period")
Bw=input(50, minval=1,maxval = 100, title="Bandwidth")
minFactor = input(0.5, minval=0.1, maxval=1.0, step=0.1, title="Minimum Factor")
maxFactor = input(3.00, minval=0.2, maxval=5.0, step=0.1, title="Maximum Factor")
plot_trend=input(true, title="Plot trend")

plot_losscut = input(true, title="Plot losscut")

/////////////// Calculate the BB's ///////////////
basisBB = ema(close, 20)
devBB     = 2 * stdev(close, 20)
upperBB = basisBB + devBB
lowerBB = basisBB - devBB
//plot(upperBB)
//plot(lowerBB)

///////////// Trend ////////////////////////////

rawFactor = ((upperBB-lowerBB)/basisBB)*Bw
Factor = rawFactor > minFactor ? (rawFactor > maxFactor ? maxFactor : rawFactor) : minFactor

Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
TrendUpPlot=plot(plot_trend?TrendUp:na, style=line, color=green, linewidth=1)
TrendDownPlot=plot(plot_trend?TrendDown:na, style=line, color=red, linewidth=1)
Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
fill(TrendUpPlot,TrendDownPlot, color=Trend == 1 ? green : red, transp=80)
sig_trend_long = Trend[1] == -1 and Trend == 1
sig_trend_short = Trend[1] == 1 and Trend == -1

///////////// Loss Cut ////////////////////////////
price_cut = sig_trend_long[1] or sig_trend_short[1] or sig_reentry_long[1] or sig_reentry_short[1] ? open : price_cut[1] 
current_trend = sig_trend_long[1] ? 1 : (sig_trend_short[1] ? -1 : current_trend[1])

sig_loss_cut = sig_trend_long or sig_trend_short ? false : ( current_trend == 1 ? (price_cut > low) : (current_trend == -1 ? (price_cut < high) : false) )
has_position = sig_loss_cut ? false : ((sig_trend_long[1] or sig_trend_short[1] or sig_reentry_long[1] or sig_reentry_short[1]) ? true : has_position[1])
sig_reentry_long = not has_position and current_trend == 1 and low > price_cut
sig_reentry_short = not has_position and current_trend == -1 and high < price_cut

bgcolor(plot_losscut and ( not has_position or sig_loss_cut ) ? silver : white, transp=70)
plotshape(plot_losscut and sig_loss_cut and current_trend == 1? 1 : na, color=green, style=shape.xcross, location=location.belowbar ,size=size.tiny)
plotshape(plot_losscut and sig_loss_cut and current_trend == -1? 1 : na, color=red, style=shape.xcross, location=location.abovebar ,size=size.tiny)

LossCutPlot = plot(plot_losscut ? price_cut : na, linewidth=4, color=black, transp=60)
fill(TrendDownPlot, LossCutPlot, color=silver, transp=90)

plotshape(sig_trend_long or sig_reentry_long ? Trend : na, title="Up Entry Arrow", color=green, style=shape.triangleup, location=location.belowbar, size=size.tiny)
plotshape(sig_trend_short or sig_reentry_short ? Trend : na, title="Down Entry Arrow",color=red, style=shape.triangledown, size=size.tiny)
    
    
///////////// Strategy //////////////////////////// 
if true

    strategy.entry('long', long=strategy.long, comment='Long', when=sig_trend_long or sig_reentry_long)
    strategy.entry('short', long=strategy.short, comment='Short', when=sig_trend_short or sig_reentry_short)
    
    if(current_trend == 1)
        strategy.close('long', when=sig_loss_cut == true) 
        //strategy.exit('lc',from_entry='long', stop=price_cut)
    
    if( current_trend == -1 )
        strategy.close('short', when=sig_loss_cut == true) 
        //strategy.exit('sc',from_entry='short', stop=price_cut)