
यह रणनीति दो चलती औसत के क्रॉसिंग का उपयोग करती है ताकि बाजार में रुझानों के परिवर्तन का आकलन किया जा सके और रुझानों के आधार पर खरीदारी और बिक्री की जा सके। ट्रेडों को ट्रेंड की दिशा में रखने के लिए, लंबी अवधि की औसत रेखा को पार करने पर अधिक करें और लंबी अवधि की औसत रेखा को पार करने पर कम करें।
इस रणनीति के केंद्र में दो चलती औसत हैं: एक तेज औसत (डिफ़ॉल्ट चक्र 32 है) और एक धीमी औसत (डिफ़ॉल्ट चक्र 32 है, जिसे पैरामीटर के माध्यम से समायोजित किया जा सकता है) । जब समापन मूल्य ऊपर / नीचे इन दो समानताओं को पार करता है, तो यह संकेत देता है कि प्रवृत्ति में उलट है, इसलिए रणनीति एक खरीद और बिक्री संकेत उत्पन्न करती हैः
इस तरह के समानांतर क्रॉसिंग के माध्यम से, रणनीति एक प्रवृत्ति का पालन कर सकती है, एक उछाल प्रवृत्ति में एक अतिरिक्त आदेश रखती है, और एक गिरावट प्रवृत्ति में एक खाली आदेश रखती है, जब तक कि प्रवृत्ति में एक उलट संकेत नहीं होता है।
उपरोक्त जोखिमों के लिए, एक उचित फ़िल्टर को जोड़ने पर विचार किया जा सकता है, जैसे कि एटीआर या औसत वास्तविक तरंग दैर्ध्य फ़िल्टर, जो अस्थिर बाजारों में अत्यधिक व्यापार को कम करता है; उचित स्टॉप लॉस सेट करें, एकमुश्त नुकसान को नियंत्रित करें; बाजार के अनुकूल पैरामीटर को अनुकूलित करने के लिए निरंतर अनुकूलन करें। लेकिन रणनीति की सीमाओं को पूरी तरह से टालना मुश्किल है।
उपरोक्त अनुकूलन जटिल बाजारों के लिए रणनीति की क्षमता में सुधार कर सकता है, लेकिन यह ध्यान रखना चाहिए कि अति-अनुकूलन भविष्य में खराब प्रदर्शन के लिए वक्र-फिट का कारण बन सकता है।
द्वि-समान प्रवृत्ति ट्रैकिंग रणनीति सरल, आसान उपयोग, और व्यापक रूप से लागू करने के लिए प्रवृत्ति को समानांतर रूप से पकड़ने की विशेषता है। हालांकि, यह अस्थिर बाजार में अच्छा प्रदर्शन नहीं करता है, चरम परिस्थितियों के लिए अपर्याप्त प्रतिक्रिया करता है, और पैरामीटर अनुकूलन की कठिनाई अधिक है। रणनीति को अधिक फ़िल्टरिंग सूचकांक, गतिशील स्टॉपलॉस, स्थिति प्रबंधन, बहु-चक्र संयोजन, पैरामीटर आत्म-अनुकूलन और अन्य तरीकों को पेश करके अनुकूलित किया जा सकता है। हालांकि, समानांतर रणनीति की सीमाएं पूरी तरह से विनियमित हैं, वास्तविक स्टॉक में अभी भी सावधानी बरतने की आवश्यकता है, बाजार की विशेषताओं के अनुसार लचीले समायोजन। कुल मिलाकर, यह रणनीति प्रवृत्ति ट्रैकिंग के लिए एक आधार के रूप में काम कर सकती है, लेकिन यह स्वतंत्र रूप से पर्याप्त नहीं है, यह एक सहयोगी रणनीति के हिस्से के रूप में अधिक उपयुक्त है।
/*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')