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