ट्रेंड ब्रेकआउट रणनीतियाँ


निर्माण तिथि: 2023-09-28 15:54:32 अंत में संशोधित करें: 2023-09-28 15:54:32
कॉपी: 1 क्लिक्स: 701
1
ध्यान केंद्रित करना
1617
समर्थक

अवलोकन

इस रणनीति का उद्देश्य क्रिप्टोक्यूरेंसी बाजारों में मजबूत रुझानों को पकड़ना है, ट्रेंडिंग सिग्नल की पहचान करने के लिए मल्टी-चैनल और मूविंग एवरेज का उपयोग करना है, और नकली ब्रेकडाउन को फ़िल्टर करने के लिए क्वांटिटेटिव इंडिकेटर को जोड़ना है, जबकि लाभप्रदता को लॉक करने के लिए अनुकूली स्टॉप-लॉस का उपयोग करना है, जो ट्रेंडिंग बाजारों में मुनाफे के लिए संभव है।

रणनीति सिद्धांत

यह रणनीति तेजी से चैनल, धीमी गति से चैनल और तेजी से चलती औसत तीनों के संयोजन का उपयोग करती है। तेजी से चैनल पैरामीटर की सेटिंग अधिक संवेदनशील है, जो अल्पकालिक मूल्य उतार-चढ़ाव को पकड़ने के लिए है; धीमी गति से चैनल पैरामीटर धीमा है, जो बड़े रुझानों का न्याय करने के लिए है; तेजी से चलती औसत पैरामीटर दोनों के बीच है, जो चैनल को तोड़ने पर एक व्यापार संकेत उत्पन्न करता है।

विशेष रूप से, यह सबसे पहले तेजी से चैनल के ऊपर और नीचे की ओर और चलती औसत की गणना करता है। जब कीमत ऊपर की ओर बढ़ जाती है, तो यह एक संकेत देता है कि धीमी गति से चैनल का निचला भाग भी चलती औसत से ऊपर है। इसके विपरीत, यह निर्धारित करने के लिए कि धीमी गति से चैनल का ऊपर का हिस्सा चलती औसत से नीचे है या नहीं, यह एक शून्य संकेत देता है।

इसके अलावा, यह के-लाइन पैटर्न का भी पता लगाता है, जिसमें कई के-लाइनों को क्रमबद्ध रूप से क्रमबद्ध करने की आवश्यकता होती है ताकि वे झूठे टूटने को फ़िल्टर कर सकें; और मूल्य परिवर्तनशीलता सूचकांक की गणना करें, ताकि बाजार के भीतर फंसे उतार-चढ़ाव से बचा जा सके; ट्रेड वॉल्यूम सूचकांक को जोड़ने के लिए सुनिश्चित करें कि ब्रेकडाउन समय का पालन किया जा सके।

रुकावट के लिए, यह रणनीति एक अनुकूलन रुकावट का उपयोग करती है। हाल के समय के उतार-चढ़ाव के आधार पर रुकावट की सीमा को गतिशील रूप से समायोजित करें। यह रुकावट को रोकने की गारंटी देते हुए, जितना संभव हो उतना ट्रेंड ट्रेंड का अनुसरण कर सकता है।

श्रेष्ठता विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि ट्रेडिंग सिग्नल के निर्माण के लिए निर्णय के नियम अधिक सख्त हैं, जो गैर-प्रवृत्ति झूठे ब्रेकआउट को प्रभावी ढंग से फ़िल्टर कर सकते हैं, और वास्तव में बाजार में प्रवृत्ति के मोड़ को पकड़ सकते हैं। विशेष रूप से, मुख्य रूप से निम्नलिखित पहलू हैंः

  1. मल्टी-चैनल और मूविंग एवरेज संयोजन के साथ, निर्णय मानदंड अधिक कठोर होते हैं, जिससे गलत निर्णय की संभावना कम हो जाती है।

  2. K लाइनों को अनुक्रमिक रूप से क्रमबद्ध करें, ताकि एक एकल अस्थिर K लाइन गलत संकेत उत्पन्न न करे।

  3. मूल्य परिवर्तन दर के संकेतकों के साथ, यह निर्धारित किया जा सकता है कि क्या यह पुनर्गठन में प्रवेश कर रहा है, ताकि पलटाव के अवसरों को याद न किया जा सके।

  4. मात्रा के साथ ऊर्जा के संकेतक को जोड़ने के लिए, केवल मात्रा के साथ मूल्य के साथ एक संकेत उत्पन्न होता है, जिससे अप्रभावी ब्रेकडाउन से बचा जा सकता है।

  5. स्व-अनुकूली रोकथाम तंत्र, जो रुझान मुनाफे को अधिकतम करने की अनुमति देता है, जबकि रोकथाम की गारंटी दी जाती है।

इसलिए, यह रणनीति समग्र रूप से विन्यास अनुकूलन, निर्णय की कठोरता, और आत्म-अनुकूलन को रोकने जैसी विशेषताओं के साथ है, जो प्रवृत्ति की स्थिति को पकड़ने के लिए बहुत उपयुक्त है।

जोखिम विश्लेषण

हालांकि इस रणनीति में फ़िल्टरिंग के लिए कई सुधार किए गए हैं, लेकिन कुछ जोखिमों के बारे में पता होना चाहिएः

  1. पैरामीटर सेट करना बहुत जटिल है, विभिन्न पैरामीटर संयोजनों के प्रभाव में अंतर बहुत अधिक है, बहुत सारे परीक्षणों के बाद इष्टतम पैरामीटर खोजने की आवश्यकता है, गलत सेटिंग से बहुत अधिक गलत संकेत उत्पन्न हो सकते हैं।

  2. तेजी से औसत और चैनल अंतराल घंटे से अधिक, जो लगातार खुले और बंद होने के लिए प्रवण हैं, जो एक स्थायी ट्रेंड को ट्रैक करने के लिए प्रतिकूल हैं।

  3. स्व-अनुकूली रोकथाम तंत्र की रोकथाम की गणना सरल मानक विचलन पर निर्भर करती है, जो चरम स्थितियों के लिए बहुत कम हो सकती है।

  4. तकनीकी मापदंडों पर अत्यधिक निर्भरता, बुनियादी ढांचे में अचानक बड़े बदलावों पर प्रतिक्रिया देना मुश्किल है।

  5. यह रणनीति एक प्रवृत्ति-अनुसरण रणनीति है, जो कि अस्थिर बाजारों में खराब प्रदर्शन करती है।

इन जोखिमों को नियंत्रित करने के लिए, निम्नलिखित उपायों की सिफारिश की जाती हैः

  1. पर्याप्त रूप से परीक्षण करने के लिए, सबसे अच्छा पैरामीटर संयोजन निर्धारित करें, और पैरामीटर अनुकूलन के लिए मशीन सीखने जैसे तरीकों का उपयोग करने पर विचार करें।

  2. उचित चैनल अंतराल को ढीला करने के साथ, स्थानांतरित औसत चक्र को भी उचित रूप से बढ़ाया जा सकता है, जिससे अनावश्यक भंडारण की आवृत्ति कम हो जाती है।

  3. अधिक उन्नत अस्थिरता दर गणना मॉडल जैसे कि हेज फंड को शामिल करने पर विचार किया जा सकता है।

  4. तकनीकी संकेतकों के आधार पर व्यापार करने से बचें।

  5. बाजार की स्थिति के बारे में अधिक निर्णय लेने के लिए, अस्थिर बाजारों में व्यापार को रोकें।

अनुकूलन दिशा

इस रणनीति को और भी बेहतर बनाया जा सकता हैः

  1. मशीन सीखने के एल्गोरिदम को जोड़ना, पैरामीटर स्वचालित अनुकूलन को लागू करना। विभिन्न बाजार स्थितियों में पैरामीटर प्रदर्शन को रिकॉर्ड करना, क्वेरी टेबल बनाना, गतिशील अनुकूलन को लागू करना।

  2. बाजार की स्थिति के बारे में निर्णय बढ़ाने के लिए, जैसे कि यह निर्धारित करने के लिए कि क्या यह एक प्रवृत्ति है या एक अस्थिर मॉड्यूल है, अस्थिर बाजार में व्यापार को रोकना, अनावश्यक नुकसान से बचना।

  3. स्टॉप लॉस को अनुकूलित करने के लिए, स्टॉप लॉस को ट्रैक करने, स्टॉप लॉस को अनुपात में रखने और अन्य स्टॉप लॉस के तरीकों पर विचार करें।

  4. मूलभूत तत्वों को जोड़ना, जब कोई महत्वपूर्ण मूलभूत घटना होती है, तो चेतावनी देना, केवल तकनीकी संकेतकों के आधार पर नुकसान से बचने के लिए।

  5. इस रणनीति को अन्य गैर-संबंधित रणनीतियों के साथ संयोजन के रूप में अनुकूलित करें, जो जोखिम को और अधिक फैलाने में मदद कर सकता है।

  6. क्वांटिटेबल ट्रेडिंग फ्रेमवर्क में शामिल होना, सिग्नल को स्वचालित रूप से निष्पादित करना और सख्त जोखिम नियंत्रण को लागू करना।

संक्षेप

कुल मिलाकर, यह रणनीति क्रिप्टोक्यूरेंसी बाजार में रुझान के अवसरों को पकड़ने के लिए समग्र रूप से बहुत उपयुक्त है। यह मल्टी-चैनल और मूविंग एवरेज का उपयोग करके ट्रेडिंग सिग्नल उत्पन्न करता है, और झूठे ब्रेकडाउन के शोर को प्रभावी ढंग से फ़िल्टर करता है, सफलतापूर्वक रुझान मुनाफे को बंद कर देता है। हालांकि, पैरामीटर अनुकूलन, स्टॉप-लॉस मोड और बाजार की स्थिति के बारे में निर्णय लेने के लिए सावधानी बरतने की आवश्यकता है। यदि इसे लगातार सुधार किया जा सकता है, तो निवेश पर स्थिर रिटर्न प्राप्त करने की उम्मीद है।

रणनीति स्रोत कोड
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Extremely Overfit", overlay=true, commission_type=strategy.commission.percent, commission_value=.16, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding = 1)
price = close

goLong = input(title="go long?", type=input.bool, defval=true)
goShort = input(title="go short?", type=input.bool, defval=true)
//trendRestrict = input(title="basic trend restriction?", type=input.bool, defval=false)
dynamicRestrict = true //input(title="dynamic trend restriction?", type=input.bool, defval=true)
longtrendimpt = true //input(title="additional weight on long-term trends?", type=input.bool, defval=true)
volRestrict = true //input(title="volume restriction?", type=input.bool, defval=true)
conservativeClose = false //input(title="conservative order closing?", type=input.bool, defval=false)

Restrictiveness = input ( -40,step=10,title ="Restrictiveness (higher = make fewer trades)")
volatilityImportance = 3.2 //input( 3.2, step = 0.1, minval = 0)
fastChannelLength = input( 6 )
fastChannelMargin = input ( 3.2, step = 0.1, minval = 0)
slowChannelLength = input ( 6, step = 1, minval = 0)
slowChannelMargin = input ( 1.5, step = 0.1, minval = 0)
fastHMAlength = input (4, step = 1, minval = 0)
stopLoss = input( 3, step = 0.1, minval = 0)
//altClosePeriod = input( 27, step = 1, minval = 1)
//altCloseFactor = input( 4.9, step = 0.1)
stopLossFlexibility = 50 //input(50, step=10, title="effect of volatility on SL?")
volumeMAlength = 14 //input ( 14, step = 1, minval = 1)
volumeVolatilityCutoff = 3.8 // ( 3.8, step = 1, minval = 0)
trendSensitivity = 3.8 //input ( 3.8, step = 0.1)
obvLookback = 10 //input(10, step = 10, minval = 10)
obvCorrThreshold = 0.89 //input(0.89, step = 0.01)
ROClength = 80 //input( 80, step = 10)
ROCcutoff = 5.6 //input( 5.6, step=0.1)

trendRestrict = false
//trendLookback = input ( 360, step = 10, minval = 10)
//longTrendLookback = input(720, step = 10, minval = 10)
//longTrendImportance = input(1.5, step = 0.05)
trendLookback = 360
longTrendLookback = 720
longTrendImportance = 1.5

//conservativeness = input( 2.4, step = 0.1)
conservativeness = 0
//trendPower = input( 0, step=1)
trendPower = 0
//conservativenessLookback = input( 650, step = 10, minval = 0)
conservativenessLookback = 10
//consAffectFactor = input( 0.85,step=0.01)
consAffectFactor = 0.85
//volatilityLookback = input(50, step=1, minval=2)
volatilityLookback = int(50)
recentVol = stdev(price,volatilityLookback)/sqrt(volatilityLookback)

//price channel

fastChannel = ema(price, fastChannelLength)
fastChannelUB = fastChannel * (1 + (float(fastChannelMargin) / 1000)) + (recentVol * (float(volatilityImportance) * (1 + (Restrictiveness/100))))
fastChannelLB = fastChannel * (1 - (float(fastChannelMargin) / 1000)) - (recentVol * (float(volatilityImportance) * (1 + (Restrictiveness/100))))
fchU = ((fastChannelUB < open) and (fastChannelUB < close))
fchL = ((fastChannelLB > open) and (fastChannelLB > close))
//plot(fastChannelUB)
//plot(fastChannelLB)

//slow channel
//slowChannelLBmargin = input ( 2, step = 0.1, minval = 0 )
slowChannel = ema(ema(price,slowChannelLength),slowChannelLength)
slowChannelUB = slowChannel * (1 + (float(slowChannelMargin) / 2000)) + (recentVol * (float(volatilityImportance) * (1 + (Restrictiveness/100))))
slowChannelLB = slowChannel * (1 - (float(slowChannelMargin) / 2000)) - (recentVol * (float(volatilityImportance) * (1 + (Restrictiveness/100))))
schU = ((slowChannelUB < close))
schL = ((slowChannelLB > close))
cschU = (((slowChannelUB * (1 + conservativeness)) < close))
cschL = (((slowChannelUB * (1 - conservativeness)) > close))
//plot(slowChannel,color = #00FF00)
//plot(slowChannelUB,color = #00FF00)
//plot(slowChannelLB,color = #00FF00)


fastHMA = hma(price,fastHMAlength)
fastAboveUB = (fastHMA > slowChannelUB)
fastBelowLB = (fastHMA < slowChannelLB)
//plot(fastHMA, color = 	#FF0000, linewidth = 2)

//consecutive candles
//consecutiveCandlesReq = input(1, step = 1, minval = 1, maxval = 4)
consecutiveCandlesReq = 1
consecutiveBullReq = float(consecutiveCandlesReq)
consecutiveBearReq = float(consecutiveCandlesReq)
cbull = ((close[0] > close[1]) and (consecutiveBullReq == 1)) or (((close[0] > close[1]) and (close[1] > close[2])) and consecutiveBullReq == 2) or (((close[0] > close[1]) and (close[1] > close[2]) and (close[2] > close[3])) and consecutiveBullReq == 3) or (((close[0] > close[1]) and (close[1] > close[2]) and (close[2] > close[3]) and (close[3] > close[4])) and consecutiveBullReq == 4)
cbear = ((close[0] < close[1]) and (consecutiveBearReq == 1)) or (((close[0] < close[1]) and (close[1] < close[2])) and consecutiveBearReq == 2) or (((close[0] < close[1]) and (close[1] < close[2]) and (close[2] < close[3])) and consecutiveBearReq == 3) or (((close[0] < close[1]) and (close[1] < close[2]) and (close[2] < close[3]) and (close[3] < close[4])) and consecutiveBearReq == 4)

//trend detection
//trendCutoff = input(0, step = 0.1)
trendCutoff = 0
trendDetectionPct = float(trendCutoff/100)
trendVal = float((close[0] - close[trendLookback])/close[0])
trendUp = (trendVal > (0 + trendDetectionPct))
trendDown = (trendVal < (0 - trendDetectionPct))
//plot(trendVal+36.5,linewidth=2)

// peak indicators
peakHigh = ((fastHMA > fastChannelUB) and (fastChannelLB > slowChannelUB))
peakLow = ((fastHMA < fastChannelLB) and (fastChannelUB < slowChannelLB))
TpeakHigh = (fastHMA > fastChannelUB) and (fastChannelUB > slowChannelUB)
TpeakLow = (fastHMA < fastChannelUB) and (fastChannelLB < slowChannelLB)
//TpeakHigh = (fastHMA > fastChannelUB) and (fastChannelLB > avg(slowChannelUB,slowChannelLB))
//TpeakLow = (fastHMA < fastChannelUB) and (fastChannelUB < avg(slowChannelLB,slowChannelUB))
//TpeakHigh = ((crossover(fastHMA,fastChannelUB)) and (fastChannelLB > slowChannelUB))
//TpeakLow = ((crossover(fastChannelLB,fastHMA)) and (fastChannelUB < slowChannelLB))
//TpeakHigh = (fastHMA > (fastChannelUB * (1 + (trendPower/800)))) and (fastChannelUB > (slowChannelUB * (1 + (trendPower/800))))
//TpeakLow = (fastHMA < (fastChannelUB * (1 - (trendPower/800)))) and (fastChannelLB < (slowChannelLB * (1 - (trendPower/800))))
//TpeakHigh = (fastHMA > (fastChannelUB * (1 + (trendPower/800)))) and (avg(fastChannelUB,fastChannelLB) > (slowChannelUB * (1 + (trendPower/800))))
//TpeakLow = (fastHMA < (fastChannelUB * (1 - (trendPower/800)))) and (avg(fastChannelLB,fastChannelUB) < (slowChannelLB * (1 - (trendPower/800))))
//plot(fastChannelUB * (1 + (trendPower/700)), color=#FF69B4)

// and for closing...
closeLong = (crossover(fastHMA,fastChannelUB) and (fastChannelLB > slowChannelUB))
closeShort = (crossover(fastChannelLB,fastHMA) and (fastChannelUB < slowChannelLB))
//closeLong = (crossover(fastHMA,fastChannelUB) and (fastChannelLB > slowChannelUB)) or (roc(price,altClosePeriod) > altCloseFactor)
//closeShort = (crossover(fastChannelLB,fastHMA) and (fastChannelUB < slowChannelLB))  or (roc(price,altClosePeriod) < (altCloseFactor) * -1)
//closeLong = (crossover(fastHMA,fastChannelUB) and (fastChannelLB > slowChannelUB)) or (((price - fastChannelUB) > (altCloseFactor * abs(((fastChannelUB - fastChannelLB)/2) - ((slowChannelUB - slowChannelLB)/2)))) and (fastChannelLB > slowChannelUB))
//closeShort = (crossover(fastChannelLB,fastHMA) and (fastChannelUB < slowChannelLB)) or (((fastChannelLB - price) > (altCloseFactor * abs(((fastChannelUB - fastChannelLB)/2) - ((slowChannelUB - slowChannelLB)/2)))) and (fastChannelUB < slowChannelLB))
//closeLong = crossover(fastHMA,fastChannelUB) and ((fastChannelLB[0] - fastChannelLB[1]) < (slowChannelUB[0] - slowChannelUB[1]))
//closeShort = crossover(fastChannelLB,fastHMA) and ((fastChannelUB[0] - fastChannelUB[1]) > (slowChannelLB[0] - slowChannelLB[1]))


//stop-loss
priceDev = stdev(price,trendLookback) * (1 + stopLossFlexibility/5)
stopLossMod = stopLoss * (1 + (priceDev/price))
//longStopPrice  = strategy.position_avg_price * (1 - (stopLoss/100))
//shortStopPrice = strategy.position_avg_price * (1 + (stopLoss/100))
longStopPrice  = strategy.position_avg_price * (1 - (stopLossMod/100))
shortStopPrice = strategy.position_avg_price * (1 + (stopLossMod/100))


// volume
volumeMA = ema(volume,volumeMAlength)
volumeDecrease = ((not volRestrict ) or (volumeMA[0] < ema(volumeMA[1] * (1 - (volumeVolatilityCutoff/100)),5)))
volumeCutoff = ema(volumeMA[1] * (1 - (volumeVolatilityCutoff/100)),5)
//plot(volumeMA)
//plot(volumeCutoff)

// detect volatility
//trendinessLookback = input ( 600, step = 10, minval = 0)
trendinessLookback = trendLookback
trendiness = (stdev(price,trendinessLookback)/price) * (1 - (Restrictiveness/100))
longtermTrend = ((price - price[longTrendLookback])/price)
//dynamicTrendDetected = (dynamicRestrict and (abs(trendiness * 100) < trendSensitivity))
dynamicTrendDetected = (longtrendimpt and (dynamicRestrict and (abs(trendiness * 100) < (trendSensitivity+(longtermTrend * longTrendImportance))))) or (not longtrendimpt and ((dynamicRestrict and (abs(trendiness * 100) < trendSensitivity))))

// adapt conservativeness to volatility

//consVal = sma(((stdev(price,conservativenessLookback))/price)*100,25)
consVal = sma(((stdev(price,conservativenessLookback))/price)*100,25)
cVnorm = sma(avg(consVal,3),60)
cVal = consVal - cVnorm

//conservativenessMod = conservativeness * (cVal * consAffectFactor)
conservativenessMod = conservativeness * (consVal * consAffectFactor)
//plot(consVal,linewidth=4)
//plot(cVnorm,color = #00FF00)
//plot(cVal,linewidth=2)

// ROC cutoff (for CLOSING)
//rocCloseLong = (ema(roc(price,ROClength),10) > ROCcutoff)
//rocCloseShort = (ema(roc(price,ROClength),10) < (ROCcutoff * -1))
ROCval = roc(price,ROClength)
ROCema = ema(ROCval,30)
ROCabs = abs(ROCema)
ROCallow = ROCabs < ROCcutoff
ROCallowLong = (ROCabs < ROCcutoff)  or ((ROCabs >= ROCcutoff) and ((fastChannelLB < slowChannelLB) and (fastHMA < fastChannelLB)))
ROCallowShort = (ROCabs < ROCcutoff) or ((ROCabs >= ROCcutoff) and ((fastChannelUB > slowChannelUB) and (fastHMA > fastChannelUB)))
//plot(ROCallow)

// obv
evidence_obv = (correlation(price,obv[0],obvLookback))
obvAllow = evidence_obv > obvCorrThreshold


//if (not na(vrsi))
if trendRestrict or dynamicTrendDetected
    //if (strategy.position_size == 0)
    if not (strategy.position_size < 0)
        if trendUp
        	//if cbear and schL and fchL and trendUp and goLong
        	if cbear and TpeakLow and volumeDecrease and ROCallow and goLong and obvAllow
        	//if cbear and peakLow and rocHigh and volumeDecrease and goLong
        		strategy.entry("Long", strategy.long, comment="Long")
    if not (strategy.position_size > 0)
        if trendDown
        	//if cbull and schU and fchU and trendDown and goShort
        	if cbull and TpeakHigh and volumeDecrease and ROCallow and goShort and obvAllow
        	//if cbull and peakHigh and rocLow and volumeDecrease and goShort
        		strategy.entry("Short", strategy.short, comment="Short")
else
    //if (strategy.position_size == 0)
    if not (strategy.position_size < 0)
        //if cbear and peakLow and goLong
    	//if cbear and peakLow and volumeDecrease and ROCallow and goLong
    	if TpeakLow and goLong and obvAllow
    		strategy.entry("Long", strategy.long, comment="Long")
    if not (strategy.position_size > 0)
        //if cbull and peakHigh and goShort
    	//if cbull and peakHigh and volumeDecrease and ROCallow and goShort
    	if TpeakHigh and goShort and obvAllow
    		strategy.entry("Short", strategy.short, comment="Short")

if conservativeClose
    //pkHigh = ((fastHMA > fastChannelUB) and (fastChannelUB > (slowChannelUB * (1 + conservativeness/1000))))
    //pkLow = ((fastHMA < fastChannelLB) and (fastChannelLB < (slowChannelLB * (1 - conservativeness/1000))))
    //pkHigh = ((fastHMA > fastChannelUB) and (fastChannelUB > (slowChannelUB * (1 + conservativenessMod/1000))))
    //pkLow = ((fastHMA < fastChannelLB) and (fastChannelLB < (slowChannelLB * (1 - conservativenessMod/1000))))
    pkHigh = ((fastHMA > fastChannelUB) and (fastChannelUB > (slowChannelUB * (1 + ((conservativenessMod/1000) * (1 - Restrictiveness/100))))))
    pkLow = ((fastHMA < fastChannelLB) and (fastChannelLB < (slowChannelLB * (1 - ((conservativenessMod/1000) * (1 - Restrictiveness/100))))))
    
    if (strategy.position_size > 0)
        //if fastAboveUB
        //if pkHigh and closeLong
        if closeLong
    		strategy.close("Long", comment="closeLong")
    if (strategy.position_size < 0)
        //if fastBelowLB
        //if pkLow and closeShort
        if closeShort
    		strategy.close("Short", comment="closeShort")
else
    if (strategy.position_size > 0)
        //if fastAboveUB
        if peakHigh
    		strategy.close("Long", comment="closeLong")
    if (strategy.position_size < 0)
        //if fastBelowLB
        if peakLow
    		strategy.close("Short", comment="closeShort")

if (strategy.position_size > 0)
    strategy.exit(id="Long", stop=longStopPrice, comment="stopLong")

if (strategy.position_size < 0)
    strategy.exit(id="Short", stop=shortStopPrice, comment="stopShort")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)