
यह रणनीति एक मूल्य चैनल आधारित ब्रेकआउट रणनीति है, जिसमें प्रवेश और बाहर निकलने के लिए सम-रेखा सूचक और स्टॉप/स्टॉप ट्रैक शामिल हैं। यह उच्च और निम्न कीमतों की सम-रेखा का उपयोग करके मूल्य चैनल का निर्माण करता है, जब कीमत चैनल को तोड़ती है तो ओवर / खाली हो जाती है, और जोखिम को नियंत्रित करने के लिए एक निश्चित स्टॉप या ट्रेलिंग स्टॉप का उपयोग करती है।
यह रणनीति उच्च और निम्न कीमतों की औसत रेखाओं की गणना करके एक मूल्य चैनल बनाती है। विशेष रूप से, यह 10 की लंबाई के उच्च और निम्न कीमतों की SMA औसत रेखाओं की गणना करके चैनल के ऊपरी और निचले ट्रेल का निर्माण करती है। जब कीमतें निचले ट्रेल से ऊपरी ट्रेल तक पहुंचती हैं, तो अधिक प्रवेश करें; जब कीमतें ऊपरी ट्रेल से नीचे की ओर पहुंचती हैं, तो खाली प्रवेश करें।
प्रविष्टि के बाद, रणनीति एक निश्चित स्टॉप या ट्रेलिंग स्टॉप का उपयोग करके स्थिति से बाहर निकलने के लिए करती है। ट्रेलिंग स्टॉप में दो पैरामीटर शामिल हैंः एक निश्चित स्टॉप और एक सक्रिय ऑफसेट। जब कीमत सक्रिय विचलन तक पहुंचती है, तो स्टॉप को ट्रेल किया जाता है। यह लाभ को लॉक कर सकता है, जबकि लाभ के लिए जगह बनाए रखता है।
इस रणनीति में समय अवधि फ़िल्टरिंग को शामिल किया गया है और केवल निर्दिष्ट ऐतिहासिक तिथियों के भीतर वापस परीक्षण किया गया है ताकि विभिन्न बाजार चरणों में प्रदर्शन का परीक्षण किया जा सके।
यह रणनीति मूल्य चैनल और प्रवृत्ति ट्रैकिंग स्टॉप का उपयोग करती है, जो मध्य और लंबी रेखा प्रवृत्ति की दिशा को पकड़ सकती है। यह केवल एक चलती औसत रणनीति की तुलना में मूल्य उतार-चढ़ाव के कारण निष्क्रिय व्यापार को कम करती है। ट्रेलिंग स्टॉप के माध्यम से, कीमतों को गतिशील रूप से ट्रेल करके लाभ को लॉक किया जा सकता है।
कुल मिलाकर, यह रणनीति स्पष्ट रूप से तर्कसंगत है, कम संकेतकों और मापदंडों का उपयोग करता है, वापस लेना आसान है, मध्यम और लंबी रेखा प्रवृत्ति व्यापार के लिए उपयुक्त है, और मजबूत स्थिति में लाभ उठा सकता है।
इस रणनीति को उतार-चढ़ाव की स्थिति में बाहर निकालने के लिए तैयार किया जाता है, जो स्थायी लाभ के लिए नहीं है। इसके अलावा, चरम स्थितियों में, कीमतें सीधे स्टॉप लॉस को तोड़ सकती हैं, जिससे भारी नुकसान हो सकता है।
पैरामीटर सेट करना काफी व्यक्तिपरक है, विभिन्न बाजार चरणों में पैरामीटर को समायोजित करने की आवश्यकता होती है। निश्चित स्टॉप और सक्रिय पलायन, बाजार में उतार-चढ़ाव के आधार पर समायोजन नहीं किया जा सकता।
प्रवेश संकेतों को फ़िल्टर करने के लिए अन्य संकेतकों के साथ संयोजन पर विचार किया जा सकता है, जैसे कि लेनदेन की मात्रा, ब्रीनिंग बैंड, आदि, ताकि रोक से बचा जा सके। या गतिशील स्टॉप का उपयोग करके एटीआर या मूल्य उतार-चढ़ाव के आधार पर स्टॉप लॉस सेट करें।
बाहर निकलने के नियम को एक चलती रोक या एक Chandelier Exit के रूप में अनुकूलित किया जा सकता है। एक आंशिक बाहर निकलने पर भी विचार किया जा सकता है जब कीमत चैनल में फिर से प्रवेश करती है। प्रवेश फ़िल्टर और बाहर निकलने के नियमों का अनुकूलन रणनीति की स्थिरता को काफी बढ़ा सकता है।
इस रणनीति के पूरे एक मूल्य चैनल, प्रवृत्ति का पालन, रोक / रोक प्रबंधन के आधार पर एक मात्रात्मक रणनीति है. यह स्पष्ट तर्क संरचना, सरल पैरामीटर संरचना, आसान समझने के लिए और वापस लेने के लिए उपयुक्त है, यह रणनीतियों के कई तरीकों से अनुकूलित किया जा सकता है, स्थिरता और लाभप्रदता में सुधार. इसकी केंद्रीय विचारधारा मूल्य प्रवृत्ति की दिशा को पकड़ने के लिए है, और रोक और रोक के माध्यम से जोखिम को नियंत्रित करने के लिए, कई प्रकार के समय और अवधि के लिए लागू किया जा सकता है.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-21 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Generalized SSL Backtest w/ TSSL", shorttitle="GSSL Backtest", overlay=true )
// Generalized SSL:
// This is the very first time the SSL indicator, whose acronym I ignore, is on Tradingview.
// It is based on moving averages of the highs and lows.
// Similar channel indicators can be found, whereas
// this one implements the persistency inside the channel, which is rather tricky.
// The green line is the base line which decides entries and exits, possibly with trailing stops.
// With respect to the original version, here one can play with different moving averages.
// The default settings are (10,SMA)
//
// Vitelot/Yanez/Vts March 2019
lb = input(10, title="Lb", minval=1)
maType = input( defval="SMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA","Tenkan"])
fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=150)
trailTP = input(title="TP Trigger", defval=1)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 19, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2020, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
startTimeOk() => true // create function "within window of time" if statement true
// QUANDL:BCHAIN/ETRVU is USD-denominated daily transaction value on BTC blockchain
// QUANDL:BCHAIN/MKTCP is USD-denominated Bitcoin marketcap
hma(sig, n) => // Hull moving average definition
wma( 2*wma(sig,round(n/2))-wma(sig,n), round(sqrt(n)))
mcg(sig,length) => // Mc Ginley MA definition
mg = 0.0
mg := na(mg[1]) ? ema(sig, length) : mg[1] + (sig - mg[1]) / (length * pow(sig/mg[1], 4))
tenkan(sig,len) =>
0.5*(highest(sig,len)+lowest(sig,len))
ma(t,sig,len) =>
sss=na
if t =="SMA"
sss := sma(sig,len)
if t == "EMA"
sss := ema(sig,len)
if t == "HMA"
sss := hma(sig,len)
if t == "McG" // Mc Ginley
sss := mcg(sig,len)
if t == "Tenkan"
sss := tenkan(sig,len)
if t == "WMA"
sss := wma(sig,len)
sss
base(mah, mal) =>
bbb = na
inChannel = close<mah and close>mal
belowChannel = close<mah and close<mal
bbb := inChannel? bbb[1]: belowChannel? -1: 1
uuu = bbb==1? mal: mah
ddd = bbb==1? mah: mal
[uuu, ddd]
maH = ma(maType, high, lb)
maL = ma(maType, low, lb)
[up, dn] = base(maH,maL)
plot(up, title="High MA", color=lime, linewidth=3)
plot(dn, title="Low MA", color=orange, linewidth=3)
long = crossover(dn,up)
short = crossover(up,dn)
// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry("Long", strategy.long, when= long and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry("Short", strategy.short, when= short and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= long)