
এই কৌশলটি একটি সম্পূর্ণ ট্রেডিং সিস্টেম তৈরি করার জন্য হ্যাঙ্গার এক্সটেনশন (Chandelier Exit), জিরো লেগার্ড মুভিং এভারেজ (ZLSMA) এবং আপেক্ষিক লেনদেনের পরিমাণ (RVOL) এর পালস সনাক্তকরণের সাথে মিলিত হয়েছে। হ্যাঙ্গার এক্সটেনশন (Chandelier Exit) গতিশীলভাবে স্টপ লস অবস্থানগুলিকে বাস্তব ওঠানামা (ATR) এর মাধ্যমে সামঞ্জস্য করে, যা বাজারের পরিবর্তনের সাথে আরও ভালভাবে খাপ খাইয়ে নিতে পারে। ZLSMA মূল্যের প্রবণতাকে সঠিকভাবে ধরতে এবং ট্রেডিংয়ের দিকনির্দেশনা দিতে পারে।
ZLSMA-Enhanced Pendant Exit Strategy and Transaction Pulse Detection একটি ট্রেন্ড ট্র্যাকিং কৌশল যা ট্রেডিংয়ের ঝুঁকি নিয়ন্ত্রণের জন্য গতিশীল স্টপ লস, ট্রেন্ড বিচার এবং ট্রেডিংয়ের পলস সনাক্তকরণের মাধ্যমে ট্রেন্ডিংয়ের সুযোগগুলিকে কাজে লাগায়। কৌশলটির যুক্তি স্পষ্ট, সহজেই বোঝা যায় এবং বাস্তবায়িত হয়, তবে বাস্তব প্রয়োগে নির্দিষ্ট বাজারের বৈশিষ্ট্য এবং ট্রেডিংয়ের জাতের সাথে মিলিত হওয়ার জন্য এখনও অপ্টিমাইজ করা এবং পরিমার্জন করা প্রয়োজন। আরও সংকেত নিশ্চিতকরণ সূচক প্রবর্তন, প্রস্থান শর্তাদির অপ্টিমাইজেশন, যুক্তিসঙ্গত প্যারামিটার সেটআপ এবং কঠোর অবস্থান পরিচালনা এবং ঝুঁকি নিয়ন্ত্রণের মাধ্যমে এই কৌশলটি একটি স্থিতিশীল এবং দক্ষ ট্রেডিং সরঞ্জাম হওয়ার সম্ভাবনা রয়েছে।
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit Strategy with ZLSMA and Volume Spike Detection", shorttitle="CES with ZLSMA and Volume", overlay=true, process_orders_on_close=true, calc_on_every_tick=false)
// Chandelier Exit Inputs
lengthAtr = input.int(title='ATR Period', defval=1)
mult = input.float(title='ATR Multiplier', step=0.1, defval=2.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)
// Calculate ATR
atr = mult * ta.atr(lengthAtr)
// Calculate Long and Short Stops
longStop = (useClose ? ta.highest(close, lengthAtr) : ta.highest(high, lengthAtr)) - atr
shortStop = (useClose ? ta.lowest(close, lengthAtr) : ta.lowest(low, lengthAtr)) + atr
// Update stops based on previous values
longStop := na(longStop[1]) ? longStop : close[1] > longStop[1] ? math.max(longStop, longStop[1]) : longStop
shortStop := na(shortStop[1]) ? shortStop : close[1] < shortStop[1] ? math.min(shortStop, shortStop[1]) : shortStop
// Determine Direction
var int dir = na
dir := na(dir[1]) ? (close > shortStop ? 1 : close < longStop ? -1 : na) : close > shortStop[1] ? 1 : close < longStop[1] ? -1 : dir[1]
// ZLSMA Inputs
lengthZLSMA = input.int(title="ZLSMA Length", defval=50)
offsetZLSMA = input.int(title="ZLSMA Offset", defval=0)
srcZLSMA = input.source(close, title="ZLSMA Source")
// ZLSMA Calculation
lsma = ta.linreg(srcZLSMA, lengthZLSMA, offsetZLSMA)
lsma2 = ta.linreg(lsma, lengthZLSMA, offsetZLSMA)
eq = lsma - lsma2
zlsma = lsma + eq
// Plot ZLSMA
plot(zlsma, title="ZLSMA", color=color.purple, linewidth=3)
// Swing High/Low Calculation
swingHigh = ta.highest(high, 5)
swingLow = ta.lowest(low, 5)
// Relative Volume (RVOL) Calculation
rvolLength = input.int(20, title="RVOL Length")
rvolThreshold = input.float(1.5, title="RVOL Threshold")
avgVolume = ta.sma(volume, rvolLength)
rvol = volume / avgVolume
// Define buy and sell signals based on ZLSMA and Volume Spike
buySignal = (dir == 1 and dir[1] == -1 and close > zlsma and rvol > rvolThreshold)
sellSignal = (dir == -1 and dir[1] == 1 and close < zlsma and rvol > rvolThreshold)
// Define exit conditions based on ZLSMA
exitLongSignal = (close < zlsma)
exitShortSignal = (close > zlsma)
// Strategy Entries and Exits
if (buySignal)
strategy.entry("Long", strategy.long, stop=swingLow)
if (sellSignal)
strategy.entry("Short", strategy.short, stop=swingHigh)
if (exitLongSignal)
strategy.close("Long")
if (exitShortSignal)
strategy.close("Short")
// Alerts
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')