
یہ حکمت عملی ایک بہت ہی مستحکم اور موثر ٹرینڈ ٹریکنگ حکمت عملی بنانے کے لئے ایک انڈیکس فلیٹ موونگ اوسط ((SESMA) اور اس کے ساتھ منسلک ٹانگچی سیڑھی کے ارد گرد کے طریقہ کار کا استعمال کرتی ہے۔ قیمتوں کے رجحانات کی سمت کی نشاندہی کرنے کے لئے SESMA مرکزی لائن کی حیثیت سے کام کرتی ہے۔ ٹریلنگ اسٹاپس حکمت عملی کو مؤثر طریقے سے حکمت عملی کے خطرات کو کم کرنے کے ساتھ ساتھ حکمت عملی کے منافع کی حفاظت کرتی ہیں۔
اس حکمت عملی میں دو اہم نکات شامل ہیں:
سنگل انڈیکس ہموار حرکت پذیر اوسط ((SESMA): ایس ای ایس ایم اے نے ای ایم اے کے خیالات کو اپنایا ، جبکہ پیرامیٹرز میں بہتری لائی ، جس سے منحنی خطوط زیادہ ہموار اور تاخیر کم ہوگئی۔ SESMA کی سمت اور قیمت کے تعلقات کے ذریعہ قیمتوں کے رجحانات کا فیصلہ کریں۔
ٹریلنگ اسٹاپ میکانیزم: اعلی ترین ، کم ترین قیمتوں اور اے ٹی آر اشارے کے ساتھ مل کر ، کثیر سر اور خالی سر کی روک تھام کی اصل وقت میں حساب کی جاتی ہے۔ یہ ایک متحرک ایڈجسٹمنٹ اسٹاپ میکانیزم ہے ، جس میں مارکیٹ میں اتار چڑھاؤ اور رجحانات کے مطابق اسٹاپ نقصان کی حد کو ایڈجسٹ کیا جاسکتا ہے۔ اسٹاپ لائن اور قیمت کے مابین تعلقات کا اندازہ لگانے کے لئے استعمال کیا جاتا ہے۔
اس حکمت عملی کی انٹری کی بنیاد قیمتوں کے SESMA کو توڑنے پر ہے۔ جبکہ آؤٹ سگنل اسٹاپ نقصان کی لائن سے ٹرگر کیا جاتا ہے۔ آپ مقرر کرسکتے ہیں کہ آیا نشان دکھایا جائے گا۔
اس حکمت عملی میں رجحانات کا فیصلہ کرنے اور خطرے کو کنٹرول کرنے کے اشارے کو مربوط کیا گیا ہے ، جس سے ایک زیادہ مضبوط رجحانات کی پیروی کرنے والی حکمت عملی تشکیل دی گئی ہے۔ یہ حکمت عملی رجحانات کو زیادہ لچکدار طریقے سے پکڑ سکتی ہے ، جبکہ واپسی کو کم سے کم کرتی ہے۔ پیرامیٹرز کی اصلاح سے حکمت عملی مختلف مارکیٹوں میں بہتر کارکردگی کا مظاہرہ کرسکتی ہے۔
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © simwai
strategy('Chandelier Exit ZLSMA Strategy', shorttitle='CE_ZLSMA', overlay = true, initial_capital = 1000, default_qty_value = 10, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = false, process_orders_on_close = true, commission_value = 0.075)
// -- Colors --
color maximumYellowRed = color.rgb(255, 203, 98) // yellow
color rajah = color.rgb(242, 166, 84) // orange
color magicMint = color.rgb(171, 237, 198)
color languidLavender = color.rgb(232, 215, 255)
color maximumBluePurple = color.rgb(181, 161, 226)
color skyBlue = color.rgb(144, 226, 244)
color lightGray = color.rgb(214, 214, 214)
color quickSilver = color.rgb(163, 163, 163)
color mediumAquamarine = color.rgb(104, 223, 153)
color carrotOrange = color.rgb(239, 146, 46)
// -- Inputs --
length = input(title='ATR Period', defval=1)
mult = input.float(title='ATR Multiplier', step=0.1, defval=2)
showLabels = input(title='Show Buy/Sell Labels ?', tooltip='Created by Chandelier Exit (CE)', defval=false)
isSignalLabelEnabled = input(title='Show Signal Labels ?', defval=true)
useClose = input(title='Use Close Price for Extrema ?', defval=true)
zcolorchange = input(title='Enable Rising/Decreasing Highlightning', defval=false)
zlsmaLength = input(title='ZLSMA Length', defval=50)
offset = input(title='Offset', defval=0)
// -- CE - Credits to @everget --
float haClose = float(1) / 4 * (open[1] + high[1] + low[1] + close[1])
atr = mult * ta.atr(length)[1]
longStop = (useClose ? ta.highest(haClose, length) : ta.highest(haClose, length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := haClose > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(haClose, length) : ta.lowest(haClose, length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := haClose < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := haClose > shortStopPrev ? 1 : haClose < longStopPrev ? -1 : dir
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=mediumAquamarine, textcolor=color.white)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=carrotOrange, textcolor=color.white)
changeCond = dir != dir[1]
// -- ZLSMA - Credits to @netweaver2011 --
lsma = ta.linreg(haClose, zlsmaLength, offset)
lsma2 = ta.linreg(lsma, zlsmaLength, offset)
eq = lsma - lsma2
zlsma = lsma + eq
zColor = zcolorchange ? zlsma > zlsma[1] ? magicMint : rajah : languidLavender
plot(zlsma, title='ZLSMA', linewidth=2, color=zColor)
// -- Signals --
var string isTradeOpen = ''
var string signalCache = ''
bool enterLong = buySignal and ta.crossover(haClose, zlsma)
bool exitLong = ta.crossunder(haClose, zlsma)
bool enterShort = sellSignal and ta.crossunder(haClose, zlsma)
bool exitShort = ta.crossover(haClose, zlsma)
if (signalCache == 'long entry')
signalCache := ''
enterLong := true
else if (signalCache == 'short entry')
signalCache := ''
enterShort := true
if (isTradeOpen == '')
if (exitShort and (not enterLong))
exitShort := false
if (exitLong and (not enterShort))
exitLong := false
if (enterLong and exitShort)
isTradeOpen := 'long'
exitShort := false
else if (enterShort and exitLong)
isTradeOpen := 'short'
exitLong := false
else if (enterLong)
isTradeOpen := 'long'
else if (enterShort)
isTradeOpen := 'short'
else if (isTradeOpen == 'long')
if (exitShort)
exitShort := false
if (enterLong)
enterLong := false
if (enterShort and exitLong)
enterShort := false
signalCache := 'short entry'
if (exitLong)
isTradeOpen := ''
else if (isTradeOpen == 'short')
if (exitLong)
exitLong := false
if (enterShort)
enterShort := false
if (enterLong and exitShort)
enterLong := false
signalCache := 'long entry'
if (exitShort)
isTradeOpen := ''
plotshape((isSignalLabelEnabled and enterLong) ? zlsma : na, title='LONG', text='L', style=shape.labelup, color=mediumAquamarine, textcolor=color.white, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and enterShort) ? zlsma : na, title='SHORT', text='S', style=shape.labeldown, color=carrotOrange, textcolor=color.white, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and exitLong) ? zlsma : na, title='LONG EXIT', style=shape.circle, color=magicMint, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and exitShort) ? zlsma : na, title='SHORT EXIT', style=shape.circle, color=rajah, size=size.tiny, location=location.absolute)
barcolor(color=isTradeOpen == 'long' ? mediumAquamarine : isTradeOpen == 'short' ? carrotOrange : na)
// -- Long Exits --
if (exitLong and strategy.position_size > 0)
strategy.close('long', comment='EXIT_LONG')
// -- Short Exits --
if (exitShort and strategy.position_size < 0)
strategy.close('short', comment='EXIT_SHORT')
// -- Long Entries --
if (enterLong)
strategy.entry('long', strategy.long, comment='ENTER_LONG')
// -- Short Entries --
if (enterShort)
strategy.entry('short', strategy.short, comment='ENTER_SHORT')