
এই কৌশলটি বাজারের প্রবণতার পরিবর্তনের বিচার করতে এবং প্রবণতা অনুসারে ক্রয়-বিক্রয় করার জন্য দুটি চলমান গড়ের ক্রস ব্যবহার করে। দীর্ঘমেয়াদী গড়ের উপরে দীর্ঘমেয়াদী গড়ের উপরে বেশি করা এবং দীর্ঘমেয়াদী গড়ের নীচে দীর্ঘমেয়াদী গড়ের নীচে খালি করা, ট্রেডিংয়ের দিকটি অনুসরণ করার জন্য।
এই কৌশলটির কেন্দ্রবিন্দু হল দুটি চলমান গড়ঃ একটি দ্রুত গড় ((ডিফল্ট চক্রটি ৩২) এবং একটি ধীর গড় ((ডিফল্ট চক্রটিও ৩২, প্যারামিটার দ্বারা সামঞ্জস্য করা যায়) । যখন সমাপ্তির দামের উপরে / নীচে এই দুটি সমান্তরাল গঠিত হয়, তখন প্রবণতা বিপরীত হয় এবং কৌশলটি একটি বিক্রয়-বিক্রয় সংকেত তৈরি করেঃ
এই সমান্তরাল ক্রসিং পদ্ধতির মাধ্যমে, কৌশলটি প্রবণতা অনুসরণ করতে পারে, একটি উত্থান প্রবণতা এবং একটি খালি প্রবণতা একটি খালি প্রবণতা ধরে রাখতে পারে, যতক্ষণ না প্রবণতা একটি বিপরীত সংকেত পায়।
উপরোক্ত ঝুঁকির জন্য, যথাযথ ফিল্টার যুক্ত করার কথা বিবেচনা করা যেতে পারে, যেমন এটিআর বা গড় বাস্তব তরঙ্গের ফিল্টার, অস্থির বাজারে অত্যধিক লেনদেন হ্রাস করা; যুক্তিসঙ্গত স্টপ লস সেট করুন, একক ক্ষতি নিয়ন্ত্রণ করুন; বাজারকে খাপ খাইয়ে নেওয়ার জন্য প্যারামিটারগুলি ক্রমাগত অপ্টিমাইজ করুন। তবে কৌশলটির সীমাবদ্ধতাগুলি সম্পূর্ণরূপে এড়ানো কঠিন।
উপরোক্ত অপ্টিমাইজেশানগুলি জটিল বাজারগুলির সাথে মোকাবিলা করার জন্য কৌশলগুলির দক্ষতা বাড়িয়ে তুলতে পারে, তবে সতর্কতা অবলম্বন করা উচিত যে অতিরিক্ত অপ্টিমাইজেশানগুলি ভবিষ্যতে দুর্বল পারফরম্যান্সের জন্য কার্ভ ফিট হতে পারে।
ডাবল-ইউনিওলাইন ট্রেন্ড ট্র্যাকিং কৌশলটি সহজেই ব্যবহারযোগ্য, প্রয়োগযোগ্যতার বৈশিষ্ট্যযুক্ত, প্রবণতাকে ক্রস-ইউনিওলাইনের মাধ্যমে ক্যাপচার করে। তবে এটি অস্থির বাজারে দুর্বল পারফরম্যান্স করে, চরম পরিস্থিতির প্রতিক্রিয়া যথেষ্ট নয় এবং প্যারামিটার অপ্টিমাইজ করা আরও কঠিন। আরও ফিল্টারিং সূচক, গতিশীল স্টপ লস, পজিশন ম্যানেজমেন্ট, বহু-চক্রের সমন্বয় এবং প্যারামিটার স্ব-অনুকূলিতকরণের মতো পদ্ধতিগুলি প্রবর্তন করে কৌশলটি অপ্টিমাইজ করা যেতে পারে। তবে, ইউনিওলাইন কৌশলটির সীমাবদ্ধতা সম্পূর্ণরূপে নিয়ন্ত্রণ করা, রিয়েল অ্যাকাউন্টগুলিতে এখনও সতর্কতা অবলম্বন করা এবং বাজারের বৈশিষ্ট্য অনুসারে নমনীয়ভাবে সামঞ্জস্য করা। সামগ্রিকভাবে, এই কৌশলটি ট্রেন্ড ট্র্যাকিংয়ের ভিত্তি হিসাবে কাজ করতে পারে, তবে এটি স্বতন্ত্রভাবে যথেষ্ট নয়, বরং সমন্বয় কৌশলটির অংশ হিসাবে আরও উপযুক্ত।
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)
// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true
// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)
// Calc MA for SSL Channel
calc_ma(close, len, type) =>
float result = 0
if type == 'SMA' // Simple
result := ta.sma(close, len)
result
if type == 'EMA' // Exponential
result := ta.ema(close, len)
result
if type == 'WMA' // Weighted
result := ta.wma(close, len)
result
result
// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)
// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)
// Strategy
if shortCondition
strategy.close('Long', comment='Long Exit', alert_message='JSON')
if longCondition
strategy.close('Short', comment='Short Exit', alert_message='JSON')
if backtest_range and longCondition
strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')
if backtest_range and shortCondition
strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')
// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')