
এই কৌশলটির কেন্দ্রীয় যুক্তিটি সহজ এবং রুক্ষঃ জিরো ল্যাগ ইএমএ প্রচলিত চলমান গড়ের পিছনে থাকা দূর করে এবং সুপারট্রেন্ড ট্রেন্ডের দিকনির্দেশ নিশ্চিত করে। দুটি সূচককে একই সাথে পজিশন নেওয়ার জন্য বাজি ধরতে হবে। এই দ্বৈত ফিল্টারিং প্রক্রিয়াটি ব্যাক-টেস্টিংয়ে মিথ্যা বিরতির প্রভাবকে উল্লেখযোগ্যভাবে হ্রাস করে। 70 চক্রের জিরো ল্যাগ সেটিংটি 1.2 গুণ ওঠানামা সহকারে কার্যকরভাবে বাজার শব্দকে ফিল্টার করতে সক্ষম, কেবলমাত্র সত্যিকারের প্রবণতা বিপরীত পয়েন্টগুলিকে ক্যাপচার করে।
এবং এর মূল কারণ হলো ভোল্যাটিলিটি হিসাব করাঃ*3) * mult, এই সূত্রটি 210 চক্রের মধ্যে সর্বোচ্চ ATR মানকে 1.2 দ্বারা গুণ করে, এটি নিশ্চিত করে যে কেবলমাত্র একটি যথেষ্ট বড় অস্থিরতার থ্রেশহোল্ডটি অতিক্রম করলে একটি সংকেত ট্রিগার করা হবে। পরীক্ষামূলক ডেটা দেখায় যে এটি কেবলমাত্র স্থির থ্রেশহোল্ড ব্যবহার করে কৌশলগুলির তুলনায় প্রায় 40% অবৈধ লেনদেনের হ্রাস করে।
সুপারট্রেন্ডের অংশটি 14 পিরিয়ডের এটিআর ব্যবহার করে 3.0 গুণিতক সহ, এই প্যারামিটার সমন্বয়টি বেশিরভাগ বাজারের পরিবেশে স্থিতিশীল। বাজারে প্রচলিত ২.০-২.৫ গুণিতক সেটিংয়ের তুলনায়, যদিও কিছু স্বল্পমেয়াদী রিবাউন্ডের সুযোগগুলি মিস করা হবে, তবে ঘন ঘন স্টপ লসটি উল্লেখযোগ্যভাবে হ্রাস করা হবে।
স্টপ-স্টপ-লস সেটিংটি একটি নির্দিষ্ট শতাংশঃ ১.০% স্টপ-স্টপ, ০.৫% স্টপ-লস, ঝুঁকি-লাভের অনুপাত ২:১। এই সেটিংটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিংয়ের পরিবেশের জন্য উপযুক্ত, তবে নিম্ন ওঠানামা বাজারে স্টপ-লস হতে পারে এমন খুব সংবেদনশীল সমস্যা সম্পর্কে সতর্কতা অবলম্বন করা দরকার। ভিআইএক্স ১৫ এর নীচে যখন স্টপ-লস প্রস্থটি 0.8% এ ছাড়িয়ে যাওয়ার পরামর্শ দেওয়া হয়।
বিশেষভাবে উল্লেখযোগ্য হল প্রস্থান সতর্কতার নকশাঃ longTP_hit এবং longSL_hit কৌশল.পজিশন_আকারের মাধ্যমে পজিশন স্থিতি নির্ধারণ করে, পুনরাবৃত্তি সংকেতগুলির হস্তক্ষেপ এড়ানো যায়। এই নকশাটি রিয়েল-টাইম ট্রেডিংয়ের জন্য গুরুত্বপূর্ণ, যা নেটওয়ার্ক বিলম্বের কারণে পুনরাবৃত্তি খোলার পজিশনগুলি প্রতিরোধ করতে পারে।
প্রবণতা বাজার: দৈর্ঘ্য 50 এ সামঞ্জস্য করা যায়, মাল্টটি 1.0 এ হ্রাস করা হয়, সংকেত সংবেদনশীলতা বাড়ায় বাজারের ধাক্কা: দৈর্ঘ্য বৃদ্ধি ৯০, ফ্যাক্টর বৃদ্ধি ৩.৫, মিথ্যা ব্রেকডাউন হ্রাস উচ্চ অস্থিরতা: স্টপ লস 1.0% পর্যন্ত প্রসারিত, স্টপ রিডিং 2.0% পর্যন্ত, বৃহত্তর মূল্যের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ
Zero Lag EMA-র লেগ গণনা সূত্র math.floor (((length - 1) / 2) সূচকটির প্রতিক্রিয়া গতি নিশ্চিত করে, তবে চরম পরিস্থিতিতে এখনও বিলম্ব হতে পারে। যৌগিক লেনদেনের সূচকটি দ্বিতীয় নিশ্চিতকরণের জন্য সুপারিশ করা হয়, যখন লেনদেনের পরিমাণ 20 চক্রের গড়ের চেয়ে কম হয় তখন ট্রেডিং সংকেত স্থগিত করা হয়।
ঐতিহাসিক পর্যালোচনা অনুসারে, এই কৌশলটি একটি স্পষ্ট প্রবণতাযুক্ত বাজার পরিবেশে ভাল কাজ করে, তবে এটি একটি ক্ষুদ্র ক্ষয়ক্ষতির জন্য প্রবণতা সৃষ্টি করে। ঝুঁকি-সংশোধিত রিটার্ন বেশিরভাগ পরীক্ষার সময়কালে বেসফোর্সের চেয়ে ভাল, তবে সর্বোচ্চ প্রত্যাহারের ঝুঁকি 15% এর বেশি।
গুরুত্বপূর্ণ সতর্কতা:
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-18 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy("Zero Lag + ML SuperTrend Strategy (Multi-Symbol)", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
length = input.int(70, "Zero Lag Length")
mult = input.float(1.2, "Band Multiplier")
atrPeriod = input.int(14, "ATR Period (SuperTrend)")
factor = input.float(3.0, "ATR Multiplier (SuperTrend)")
tpPerc = input.float(1.0, "Take Profit %")
slPerc = input.float(0.5, "Stop Loss %")
// === Symbol Info ===
sym = syminfo.ticker
// === Zero Lag Trend ===
src = close
lag = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult
bullZL = close > zlema + volatility
bearZL = close < zlema - volatility
// === ML SuperTrend ===
atr = ta.atr(atrPeriod)
upperband = hl2 + factor * atr
lowerband = hl2 - factor * atr
var float trend = na
if close > nz(trend[1], hl2)
trend := math.max(lowerband, nz(trend[1], hl2))
else
trend := math.min(upperband, nz(trend[1], hl2))
bullST = close > trend
bearST = close < trend
// === Combined Signals ===
longEntry = bullZL and bullST
shortEntry = bearZL and bearST
// === Strategy Execution ===
if (longEntry)
strategy.entry("Long", strategy.long)
if (shortEntry)
strategy.entry("Short", strategy.short)
// Exit conditions (fixed SL & TP)
longSL = strategy.position_avg_price * (1 - slPerc/100)
longTP = strategy.position_avg_price * (1 + tpPerc/100)
shortSL = strategy.position_avg_price * (1 + slPerc/100)
shortTP = strategy.position_avg_price * (1 - tpPerc/100)
strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)
// === Plotting ===
plot(zlema, "ZeroLagEMA", color=color.yellow)
plot(trend, "SuperTrend", color=color.blue)
// === Alerts for Webhook ===
// Entry alerts
alertcondition(longEntry, title="Long Entry",
message='{"action":"long","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortEntry, title="Short Entry",
message='{"action":"short","symbol":"{{ticker}}","price":{{close}}}')
// Exit alerts (triggered only on TP/SL)
longTP_hit = strategy.position_size <= 0 and close >= longTP
longSL_hit = strategy.position_size <= 0 and close <= longSL
shortTP_hit = strategy.position_size >= 0 and close <= shortTP
shortSL_hit = strategy.position_size >= 0 and close >= shortSL
alertcondition(longTP_hit, title="Long TP Hit",
message='{"action":"close_long","type":"tp","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(longSL_hit, title="Long SL Hit",
message='{"action":"close_long","type":"sl","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortTP_hit, title="Short TP Hit",
message='{"action":"close_short","type":"tp","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortSL_hit, title="Short SL Hit",
message='{"action":"close_short","type":"sl","symbol":"{{ticker}}","price":{{close}}}')