انتہائی زیادہ فٹ ٹرینڈ بریک آؤٹ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-28 15:54:32
ٹیگز:

خلاصہ

اس حکمت عملی کا مقصد رجحان سگنل کی نشاندہی کرنے کے لئے متعدد چینلز اور چلتی اوسط کا استعمال کرکے کریپٹوکرنسی مارکیٹوں میں مضبوط رجحانات کو پکڑنا ہے ، اور غلط بریک آؤٹ کو فلٹر کرنے کے لئے حجم کے اشارے کو یکجا کرتا ہے جبکہ منافع میں مقفل ہونے کے ل losses نقصانات کو موافقت پذیر طور پر روکتا ہے ، جس سے رجحانات کی منڈیوں میں منافع حاصل کیا جاسکتا ہے۔

حکمت عملی کا اصول

یہ حکمت عملی رجحانات کی نشاندہی کرنے کے لئے تیز چینل ، سست چینل اور تیز حرکت پذیر اوسط کے امتزاج کا استعمال کرتی ہے۔ تیز چینل پیرامیٹرز قلیل مدتی قیمتوں میں اتار چڑھاؤ کو پکڑنے کے لئے زیادہ حساس ہیں۔ سست چینل پیرامیٹرز بڑے رجحان کا فیصلہ کرنے کے لئے زیادہ اعتدال پسند ہیں۔ تیز حرکت پذیر اوسط پیرامیٹرز اس کے درمیان ہیں ، جب یہ چینل سے ٹوٹ جاتا ہے تو تجارتی سگنل تیار کرتے ہیں۔

خاص طور پر ، یہ پہلے تیز چینل کی اوپری اور نچلی ریلوں اور چلتی اوسط کا حساب لگاتا ہے۔ جب قیمت اوپری ریل سے گزرتی ہے ، اگر سست چینل کی نچلی ریل بھی چلتی اوسط سے اوپر ہے تو ، ایک لمبا سگنل تیار کیا جاتا ہے۔ اس کے برعکس ، جب یہ نچلی ریل سے گزرتا ہے تو ، یہ چیک کرتا ہے کہ کیا سست چینل کی اوپری ریل چلتی اوسط سے نیچے ہے ، جس سے ایک مختصر سگنل پیدا ہوتا ہے۔

اس کے علاوہ، یہ K لائن پیٹرن کا پتہ لگاتا ہے، جس میں جھوٹے بریک آؤٹ کو فلٹر کرنے کے لئے متعدد K لائنوں کو ترتیب دینے کی ضرورت ہوتی ہے؛ اور اس بات کا تعین کرنے کے لئے قیمت کی تبدیلی کی شرح اشارے کا حساب لگاتا ہے کہ آیا اس نے واپسی کے مواقع سے بچنے کے لئے ایک مضبوطی میں داخل کیا ہے؛ اور اس بات کو یقینی بنانے کے لئے حجم کے اشارے شامل ہیں کہ حجم بریک آؤٹ پر قیمت کی پیروی کرتا ہے.

اسٹاپ نقصان کے ل the ، حکمت عملی موافقت پذیر اسٹاپ نقصان کا استعمال کرتی ہے۔ حالیہ اتار چڑھاؤ کی بنیاد پر ، یہ اسٹاپ نقصان کا فیصد متحرک طور پر ایڈجسٹ کرتی ہے۔ اس سے مؤثر اسٹاپ نقصان کو یقینی بناتے ہوئے زیادہ سے زیادہ رجحان منافع میں مقفل ہونے کی اجازت ملتی ہے۔

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ تجارتی سگنل تیار کرنے کے معیار نسبتا strict سخت ہیں ، جو غیر رجحان جھوٹے بریکآؤٹس کو مؤثر طریقے سے فلٹر کرسکتے ہیں اور مارکیٹ کے رجحانات میں واقعی موڑ کے مقامات کو پکڑ سکتے ہیں۔ خاص طور پر ، کئی اہم پہلو ہیں:

  1. متعدد چینلز اور چلتی اوسط کے امتزاج میں سخت ترین معیار ہیں اور غلط فیصلے کا امکان کم ہوسکتا ہے۔

  2. K- لائن ترتیب کی توثیق ایک واحد aberrant 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)












مزید