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

লেখক:চাওঝাং, তারিখঃ 2024-01-15 14:20:32
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত নীতি

এই কৌশলটির মূল সূচক হল বোলিংজার ব্যান্ড। বোলিংজার ব্যান্ডগুলির মধ্যে একটি মধ্যম ব্যান্ড, একটি উপরের ব্যান্ড এবং একটি নিম্ন ব্যান্ড রয়েছে। মধ্যম ব্যান্ডটি এন-দিনের সহজ চলমান গড়, উপরের ব্যান্ডটি মধ্যম ব্যান্ড + কে গুণ এন-দিনের স্ট্যান্ডার্ড ডিভিয়েশন এবং নিম্ন ব্যান্ডটি মধ্যম ব্যান্ড - কে গুণ এন-দিনের স্ট্যান্ডার্ড ডিভিয়েশন। এখানে আমরা বোলিংজার ব্যান্ডগুলি তৈরি করতে 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)


আরো