
এই কৌশলটি একক সূচক সমতল চলমান গড় (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')