
यह रणनीति वर्तमान प्रवृत्ति की दिशा का आकलन करने के लिए तीन तकनीकी संकेतकों का उपयोग करती है, जिसमें ब्रिन बैंड, केंटना चैनल और अनुकूलन के लिए अपेक्षाकृत मजबूत संकेतक शामिल हैं, और समांतर रेखा एसएआर संकेतक के साथ प्रवेश किया जाता है। जब तीनों संकेतक निर्णय के परिणाम समान होते हैं, तो एक व्यापार संकेत उत्पन्न होता है। रणनीति मुख्य रूप से प्रवृत्ति की दिशा का आकलन करती है, जब प्रवृत्ति बदलती है, तो समय पर प्रवेश करती है, और लक्ष्य लाभप्रद होता है।
यह रणनीति तीन तकनीकी संकेतकों के संयोजन का उपयोग करके वर्तमान रुझानों को मापती हैः
SQUEEZE MOMENTUM INDICATOR: यह ब्रुइन बैंड और केंटना चैनल की गणना करता है, जब दोनों ओवरलैप होते हैं तो एक संपीड़न उत्पन्न होता है, जो प्रवृत्ति में बदलाव के बारे में संकेत देता है। यह संपीड़न की स्थिति और रैखिक वापसी वक्र की ढलान पर लौटता है।
RSI VOLUME WEIGHTED: लेनदेन भारित RSI की गणना करें, मध्य रेखा का उपयोग करके ओवरबॉट और ओवरसोल का न्याय करें। यह संकेतक लेनदेन में बदलाव पर जोर देता है।
PARALY LINE STOPPING (SAR): वर्तमान मूल्य को PARALY LINE SAR के स्थान के संबंध में निर्धारित किया गया है, SAR कीमत के ऊपर नीचे है, और SAR कीमत के नीचे ऊपर है।
रणनीति ब्रिन बैंड का उपयोग प्रवृत्ति की दिशा का निर्धारण करने के लिए करती है, केंटना चैनल को परिष्कृत करती है, आरएसआई ओवरबॉट को ओवरसोल्ड को उलटने का अवसर देती है, और एसएआर प्रवेश के समय को इंगित करती है। विशिष्ट तर्क इस प्रकार हैः
ब्रिन बैंड, केंटना चैनल, स्क्वीज़ सूचक की गणना करें। स्क्वीज़ संपीड़न के लिए तैयार चरण में प्रवेश करता है।
आरएसआई को लेनदेन भारित किया गया। आरएसआई मध्य रेखा के ऊपर है और मध्य रेखा के नीचे है।
SAR की गणना करें। SAR मूल्य के नीचे ऊपर जाता है और मूल्य के ऊपर नीचे जाता है।
इन तीन सूचकांकों का संयोजन करेंः जब स्क्वैज संकुचित होता है, तो आरएसआई मध्य रेखा से ऊपर होता है, एसएआर मूल्य के नीचे होता है, और जब स्क्वैज संकुचित होता है, तो आरएसआई मध्य रेखा से नीचे होता है, और एसएआर मूल्य के ऊपर होता है।
जब संकेत उत्पन्न होता है, तो पूर्ववर्ती K लाइन के तीन सूचक निर्णय के परिणाम का न्याय करें, यदि वर्तमान संकेत निर्णय के विपरीत है, तो प्रवेश संकेत उत्पन्न करें।
प्रवेश के बाद स्टॉप लॉस स्टॉप सेट करें, स्टॉप लॉस को ट्रैक करें।
इस रणनीति के निम्नलिखित फायदे हैं:
बहु सूचकांक पोर्टफोलियो में तेजी या गिरावट, निर्णय सटीक। स्क्वीज सूचक ट्रेंड में बदलाव की पहचान करने के लिए सटीक है, आरएसआई निर्णय ओवरबॉट ओवरबॉट स्पष्ट है, एसएआर प्रवेश के समय को इंगित करता है।
सूचकांक तर्क सरल और स्पष्ट है, और इसे लागू करना आसान है।
मल्टी इंडिकेटर कन्फर्मेशन का उपयोग करके फ़िल्टर किया जा सकता है।
स्टॉपलॉस और स्टॉपबॉक्स की व्यवस्था, लाभ को लॉक करने और जोखिम को नियंत्रित करने के लिए।
यह बहुत विश्वसनीय है।
इस रणनीति के कुछ जोखिम भी हैं:
मल्टीहेड और रिक्त हेड प्रवेश तर्क समान है, एक साथ रिवर्स सिग्नल जारी कर सकते हैं, फ़िल्टरिंग की आवश्यकता होती है।
तीनों सूचकांकों में पैरामीटर अनुकूलन का उपयोग किया गया है, जो ओवरफिट हो सकता है।
ट्रेडों की संख्या बहुत अधिक हो सकती है, इसलिए स्थिति को उचित रूप से नियंत्रित किया जाना चाहिए।
स्टॉप-डैमेज सेटिंग्स बहुत करीब हो सकती हैं और आसानी से पार की जा सकती हैं।
समाधान के लिएः
सिग्नल के उतार-चढ़ाव से बचने के लिए लगातार चक्र निर्धारण को बढ़ाएं।
वॉक फॉरवर्ड विश्लेषण विधि का उपयोग करें, पैरामीटर को समायोजित करें, ओवरफिट को रोकें।
पिरामिड आकार सेट करें और एक-तरफ़ा होल्डिंग की संख्या को नियंत्रित करें
विभिन्न स्टॉप स्पेस का परीक्षण करें, स्टॉप पोजीशन का अनुकूलन करें।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
पैरामीटर को अनुकूलित करने के लिए, पैरामीटर की स्थिरता में सुधार करें। गतिशील अनुकूलन पैरामीटर पर विचार किया जा सकता है।
स्थिति नियंत्रण तर्क को जोड़ें, जैसे कि बड़ा, छोटा, औसत, आदि।
विभिन्न प्रकार के नुकसान को रोकने के लिए परीक्षण करें, जैसे कि अस्थिरता रोकना, रैखिक रोकना, शून्य स्थिति आदि।
धन प्रबंधन सुविधाओं को जोड़ना, जैसे कि निश्चित स्थिति, निश्चित धन उपयोगिता, आदि।
मशीन लर्निंग एल्गोरिदम के साथ गतिशील प्रवेश और निकास को लागू करना।
अधिक से अधिक जोखिमों को कम करने के लिए, अधिक से अधिक जोखिमों को कम करने के लिए, अधिक से अधिक जोखिमों को कम करने के लिए।
इस तरह से, हम अपने देश के लोगों के लिए एक आदर्श उदाहरण पेश कर सकते हैं।
इस रणनीति की समग्र सोच स्पष्ट है, प्रवृत्ति दिशा का आकलन करने के लिए कई संकेतकों का उपयोग करें, बुरिन बैंड चैनल संपीड़न में समय पर सक्रिय रूप से प्रवेश करें, रोकथाम रोकथाम तंत्र के नियंत्रण जोखिम को रोकें, यह एक अधिक स्थिर प्रवृत्ति ट्रैकिंग रणनीति है। पैरामीटर अनुकूलन, जोखिम नियंत्रण तंत्र में सुधार के माध्यम से, बेहतर रिटारगेट और फिक्स्ड-डिस्क प्रभाव प्राप्त किया जा सकता है। यह रणनीति प्रवृत्ति अधिक स्पष्ट है कि किस्मों के लिए उपयुक्त है, और यह भी विचार किया जा सकता है कि यह अपेक्षाकृत स्थिर अवधि जैसे कि सूर्य की रेखा पर संचालित हो। कुल मिलाकर, इस रणनीति में मजबूत व्यावहारिक मूल्य है।
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © XaviZ
//#####©ÉÉÉɶN###############################################
//####*..´´´´´´,,,»ëN########################################
//###ë..´´´´´´,,,,,,''%©#####################################
//###'´´´´´´,,,,,,,'''''?¶###################################
//##o´´´´´´,,,,,,,''''''''*©#################################
//##'´´´´´,,,,,,,'''''''^^^~±################################
//#±´´´´´,,,,,,,''''''''^í/;~*©####æ%;í»~~~~;==I±N###########
//#»´´´´,,,,,,'''''''''^;////;»¶X/í~~/~~~;=~~~~~~~~*¶########
//#'´´´,,,,,,''''''''^^;////;%I^~/~~/~~~=~~~;=?;~~~~;?ë######
//©´´,,,,,,,''''''''^^~/////X~/~~/~~/~~»í~~=~~~~~~~~~~^;É####
//¶´,,,,,,,''''''''^^^;///;%;~/~~;í~~»~í?~?~~~?I/~~~~?*=íÑ###
//N,,,,,,,'''''''^^^^^///;;o/~~;;~~;£=»í»;IX/=~~~~~~^^^^'*æ##
//#í,,,,,''''''''^^^^^;;;;;o~»~~~~íX//~/»~;í?IíI»~~^/*?'''=N#
//#%,,,'''''''''^^^^^^í;;;;£;~~~//»I»/£X/X/»í*&~~~^^^^'^*~'É#
//#©,,''''''''^^^^^^^^~;;;;&/~/////*X;í;o*í»~=*?*===^'''''*£#
//##&''''''''^^^^^^^^^^~;;;;X=í~~~»;;;/~;í»~»±;^^^^^';=''''É#
//##N^''''''^^^^^^^^^^~~~;;;;/£;~~/»~~»~~///o~~^^^^''''?^',æ#
//###Ñ''''^^^^^^^^^^^~~~~~;;;;;í*X*í»;~~IX?~~^^^^/?'''''=,=##
//####X'''^^^^^^^^^^~~~~~~~~;;íííííí~~í*=~~~~Ií^'''=''''^»©##
//#####£^^^^^^^^^^^~~~~~~~~~~~íííííí~~~~~*~^^^;/''''='',,N###
//######æ~^^^^^^^^~~~~~~~~~~~~~~íííí~~~~~^*^^^'=''''?',,§####
//########&^^^^^^~~~~~~~~~~~~~~~~~~~~~~~^^=^^''=''''?,íN#####
//#########N?^^~~~~~~~~~~~~~~~~~~~~~~~~^^^=^''^?''';í@#######
//###########N*~~~~~~~~~~~~~~~~~~~~~~~^^^*'''^='''/É#########
//##############@;~~~~~~~~~~~~~~~~~~~^^~='''~?'';É###########
//#################É=~~~~~~~~~~~~~~^^^*~'''*~?§##############
//#####################N§£I/~~~~~~»*?~»o§æN##################
//@version=4
strategy(title="M-SQUEEZE", overlay = true)
//study(title="M-SQUEEZE", overlay = true)
src = input(close, "SOURCE", type = input.source)
// ███▓▒░░ VARIABLES ░░▒▓███
var bool longCond = na, var bool shortCond = na
var int CondIni_long0 = 0, var int CondIni_short0 = 0
var int CondIni_long = 0, var int CondIni_short = 0
var float last_open_longCondition = na, var float last_open_shortCondition = na
var int last_longCondition0 = na, var int last_shortCondition0 = na
var int last_longCondition = na, var int last_shortCondition = na
var bool long_tp = na, var bool short_tp = na
var int last_long_tp = na, var int last_short_tp = na
var bool Final_Long_tp = na, var bool Final_Short_tp = na
var bool SMI_longCond = na, var bool SMI_shortCond = na
var bool RSI_longCond = na, var bool RSI_shortCond = na
var bool ADX_longCond = na, var bool ADX_shortCond = na
var bool SAR_longCond = na, var bool SAR_shortCond = na
var bool Final_longCondition0 = na, var bool Final_shortCondition0 = na
var bool Final_longCondition = na, var bool Final_shortCondition = na
// ███▓▒░░ SQUEEZE MOMENTUM INDICATOR ░░▒▓███
Act_SMI = input(true, "SQUEEZE MOMENTUM INDICATOR")
BB_length = input(85, title="BOLLINGER BANDS LENGTH", minval = 1)
BB_mult = input(2.1, title="BOLLINGER BANDS MULTI-FACTOR", minval = 0.1, step = 0.1)
KC_length = input(38, title="KELTNER CHANNEL LENGTH", minval = 1)
KC_mult = input(2.0, title="KELTNER CHANNEL MULTI-FACTOR", minval = 0.1, step = 0.1)
SQUEEZE_M(_src,_BB_length,_BB_mult,_KC_length,_KC_mult)=>
// Calculate BB
basis = sma(_src, _BB_length)
dev = _BB_mult * stdev(_src, _BB_length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(src, _KC_length)
rangema = sma(tr, _KC_length)
upperKC = ma + rangema * _KC_mult
lowerKC = ma - rangema * _KC_mult
// Squeeze
sqzOn = lowerBB > lowerKC and upperBB < upperKC
sqzOff = lowerBB < lowerKC and upperBB > upperKC
nosqz = sqzOn == false and sqzOff == false
// Linear Regression curve
val = linreg(_src - avg(avg(highest(high, _KC_length), lowest(low, _KC_length)), sma(close, _KC_length)), _KC_length, 0)
[nosqz,val]
[NOSQZ,VAL] = SQUEEZE_M(src,BB_length,BB_mult,KC_length,KC_mult)
barcolor(iff(VAL > 0, iff(VAL > nz(VAL[1]), color.lime, color.green), iff(VAL < nz(VAL[1]), color.red, color.maroon)))
// ███▓▒░░ SAR ░░▒▓███
Act_SAR = input(true, "PARABOLIC SAR")
Sst = input (0.73, "SAR STAR", step=0.01, minval = 0.01)
Sinc = input (0.5, "SAR INC", step=0.01, minval = 0.01)
Smax = input (0.06, "SAR MAX", step=0.01, minval = 0.01)
SAR = sar(Sst, Sinc, Smax)
plot(SAR, style = plot.style_cross, title = "SAR")
// ███▓▒░░ RSI VOLUME WEIGHTED ░░▒▓███
Act_RSI = input(true, "RSI VOLUME WEIGHTED")
RSI_len = input(22, "RSI LENGHT", minval = 1)
RSI_obos = input(45,title="RSI CENTER LINE", type=input.integer, minval = 1)
WiMA(_src, _length)=>
var float MA_s=0.0
MA_s:=(_src + nz(MA_s[1] * (_length-1)))/_length
MA_s
RSI_Volume(fv, length)=>
up=iff(fv>fv[1],abs(fv-fv[1])*volume,0)
dn=iff(fv<fv[1],abs(fv-fv[1])*volume,0)
upt=WiMA(up,length)
dnt=WiMA(dn,length)
100*(upt/(upt+dnt))
RSI_V = RSI_Volume(src, RSI_len)
// ███▓▒░░ STRATEGY ░░▒▓███
SMI_longCond := (Act_SMI ? (VAL > 0 and (VAL > nz(VAL[1])) and not NOSQZ) : RSI_longCond)
RSI_longCond := (Act_RSI ? (RSI_V > RSI_obos) : SAR_longCond)
SAR_longCond := (Act_SAR ? (SAR < close) : SMI_longCond)
SMI_shortCond := (Act_SMI ? (VAL < 0 and (VAL < nz(VAL[1])) and not NOSQZ) : RSI_shortCond)
RSI_shortCond := (Act_RSI ? (RSI_V < RSI_obos) : SAR_shortCond)
SAR_shortCond := (Act_SAR ? (SAR > close) : SMI_shortCond)
longCond := SMI_longCond and RSI_longCond and SAR_longCond
shortCond := SMI_shortCond and RSI_shortCond and SAR_shortCond
CondIni_long0 := longCond ? 1 : shortCond ? -1 : CondIni_long0[1]
CondIni_short0 := longCond ? 1 : shortCond ? -1 : CondIni_short0[1]
longCondition0 = (longCond and CondIni_long0[1] == -1)
shortCondition0 = (shortCond and CondIni_short0[1] == 1)
CondIni_long := longCond[1] ? 1 : shortCond[1] ? -1 : CondIni_long[1]
CondIni_short := longCond[1] ? 1 : shortCond[1] ? -1 : CondIni_short[1]
longCondition = (longCond[1] and CondIni_long[1] == -1)
shortCondition = (shortCond[1] and CondIni_short[1] == 1)
// ███▓▒░░ ALERTS & SIGNALS ░░▒▓███
plotshape(longCondition, title = "Long Signal", style = shape.triangleup, location = location.belowbar, color = color.blue, transp = 0, size = size.tiny)
plotshape(shortCondition, title = "Short Signal", style = shape.triangledown, location = location.abovebar, color = #FF0000, transp = 0, size = size.tiny)
//alertcondition(longCondition, title="Long Alert", message = "LONG")
//alertcondition(shortCondition, title="Short Alert", message = "SHORT")
// ███▓▒░░ BACKTESTING ░░▒▓███
testStartYear = input(2018, "BACKTEST START YEAR", minval = 1980, maxval = 2222)
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
strategy.entry("Long", strategy.long, when = longCondition0 and testPeriod)
strategy.entry("Short", strategy.short, when = shortCondition0 and testPeriod)