
এই কৌশলটি দামের ব্রেকআউটের দিকনির্দেশনা এবং শক্তি নির্ধারণের জন্য হ্যাংলাইট সূচক ব্যবহার করে, যার ফলে ক্রয় এবং বিক্রয় সংকেত তৈরি হয়। এটি কেবল ক্রয়-বিক্রয় কার্যক্রম করে।
এই কৌশলটি হ্যান্ডলাইটের উপর ভিত্তি করে, হ্যান্ডলাইটটি দামের সর্বোচ্চ, সর্বনিম্ন এবং গড় বাস্তব ওঠানামা অনুসারে একটি স্টপ লিন্ড সেট করে। বিশেষত, কৌশলটি 22 দিনের গড় বাস্তব ওঠানামা গণনা করে এবং একটি সহগ দ্বারা গুণিত হয় (ডিফল্ট 3) । তারপরে এই মানের উপর ভিত্তি করে দীর্ঘ লাইন স্টপ লিন্ড এবং সংক্ষিপ্ত লাইন স্টপ লিন্ড সেট করুন। কৌশলটি যখন একাধিক অবস্থান রাখে, যদি দাম দীর্ঘ লাইন স্টপ লিন্ড অতিক্রম করে তবে এটি একটি বিক্রয় সংকেত উত্পন্ন করে; যদি শূন্য অবস্থানের দাম সংক্ষিপ্ত লাইন স্টপ লিন্ড অতিক্রম করে তবে এটি একটি ক্রয় সংকেত উত্পন্ন করে।
এই কৌশলটি কেবলমাত্র ক্রয়-বিক্রয় ক্রিয়াকলাপ পরিচালনা করে। বিশেষত, এটি যখন দামটি শেষ দীর্ঘ লাইন স্টপ লিনিয়ারকে অতিক্রম করে তখন এটি একটি ক্রয় সংকেত তৈরি করে। তারপরে যখন দামটি সংক্ষিপ্ত লাইন স্টপ লিনিয়ারকে অতিক্রম করে তখন এটি একটি বিক্রয় সংকেত তৈরি করে এবং পজিশনটি সরিয়ে দেয়।
ঝুঁকি মোকাবিলার উপায়ঃ
এই কৌশলটি দামের বিপরীতমুখী সুযোগগুলি সনাক্ত করার জন্য ল্যাম্প লাইনের গতিশীল স্টপ লিনার ব্যবহার করে। এটি কেবলমাত্র যখন দাম দীর্ঘ স্টপ লাইনটি অতিক্রম করে তখনই কেনা হয় এবং যখন দাম সংক্ষিপ্ত স্টপ লাইনটি অতিক্রম করে তখনই বিক্রি হয়। এটি একটি একতরফা অপারেশন এবং উভয় দিকের বিপর্যয় এড়ানোর একটি সহজ কৌশল। এই কৌশলটি কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে, তবে কোনও স্টপ লস এবং স্টপ সেট নেই। আমরা অন্যান্য সূচক ফিল্টার এবং স্টপ লস সেট করে এই কৌশলটি আরও স্থিতিশীল করতে পারি।
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit Strategy", overlay=true)
length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
var color longColor = color.green
var color shortColor = color.red
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))
changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')
// Define initial capital
initial_capital =25
// Trigger buy order and close buy order on sell signal
if buySignal
strategy.entry("Buy", strategy.long, qty = initial_capital / close)
if sellSignal
strategy.close("Buy")