
এটি কোন সাধারণ মাল্টি-ইনডিকেটর কৌশল নয়। ওয়েভট্রেন্ড + কনর্স আরএসআই + লিনিয়ার রিটার্নাল ডাইভারজেন্সের সমন্বয়, উইন্ডো সিঙ্ক্রোনাইজেশনের জন্য গুরুত্বপূর্ণঃ সমস্ত ক্রয় সংকেত অবশ্যই 2 কে লাইনের মধ্যে উপস্থিত হতে হবে, পৃথক সংকেতগুলি সরাসরি উপেক্ষা করা হবে। এই নকশাটি সরাসরি 90% মিথ্যা সংকেতগুলি ফিল্টার করে।
ঐতিহ্যগত কৌশলগুলি হয় প্রতিটি সূচককে স্বতন্ত্রভাবে বিচার করতে পারে যা গোলমাল সৃষ্টি করতে পারে, অথবা একই সময়ে প্রচুর সুযোগ মিস করার জন্য অনুরোধ করা হয়। এই কৌশলটি একটি ভারসাম্য খুঁজে পেয়েছেঃ ২ টি মূল K- লাইনের ত্রুটি-সহনশীল উইন্ডো উভয়ই সংকেতের প্রাসঙ্গিকতা নিশ্চিত করে এবং অত্যধিক কঠোর সিঙ্ক্রোনাইজেশন প্রয়োজনীয়তা এড়ায়।
WT দৈর্ঘ্য 10 চক্র, ওভার-বিক্রয় লাইন -48 এবং ওভার-ক্রয় লাইন -48। এই প্যারামিটার সমন্বয়টি প্রচলিত RSI এর 30⁄70 এর চেয়ে বেশি আগ্রাসী এবং দামের বিপরীত সিগন্যালকে আরও তাড়াতাড়ি ধরতে পারে। WT এর সুবিধা হল যে এটি মূল্যের অবস্থান এবং অস্থিরতার সমন্বয় করে, যা চঞ্চলতার পরিস্থিতিতে কেবলমাত্র RSI এর চেয়ে বেশি নির্ভরযোগ্য।
WT এর গণনা পদ্ধতিটি হলঃ*এই সূত্রটি স্বাভাবিকভাবে ওঠানামা হারের সমন্বয় করে। যখন বাজার ওঠানামা বৃদ্ধি পায়, তখন বিভাজকটি বড় হয়, ডাব্লুটি মানগুলি তুলনামূলকভাবে স্থিতিশীল থাকে, উচ্চ ওঠানামা চলাকালীন সাধারণ আরএসআইয়ের অযৌক্তিকতা এড়ানো হয়।
সিআরএসআই সাধারণ আরএসআই নয়, এটি মূল্য আরএসআই, ধারাবাহিক পতন আরএসআই এবং মূল্য পরিবর্তনের শতাংশের র্যাঙ্কিংয়ের সমন্বয় করে। ২০ এর ওভারসোল্ড থ্রেশহোল্ডটি প্রচলিত ৩০ এর চেয়ে আরও তীব্র, তবে সিআরএসআইয়ের ট্রিপল যাচাইকরণ প্রক্রিয়াটি মিথ্যা সংকেতের সম্ভাবনা হ্রাস করে।
৬টি চক্রের আরএসআই দৈর্ঘ্য সংক্ষিপ্তভাবে সেট করা হয়েছে যাতে সংকেতের সংবেদনশীলতা বাড়ানো যায়। ১৫ মিনিটের স্তরে, ৬টি চক্র ১.৫ ঘন্টার মূল্য স্মৃতির সমান, যা স্বল্পমেয়াদী ওভারসোল্ডগুলিকে ধরা দেয় এবং অত্যধিক পিছিয়ে না পড়ে। এই প্যারামিটারটি বিটিসির মতো ২৪ ঘন্টা লেনদেনের জাতের ক্ষেত্রে বিশেষভাবে কার্যকর।
LSDD = বর্তমান মূল্য - লিনিয়ার রিগ্রেশন, যখন LSDD 0-অক্ষের উপর দিয়ে যায় তখন দামটি নিম্নমুখী প্রবণতা লাইন থেকে বিচ্যুত হতে শুরু করে। 20 চক্রের সেটটি 15 মিনিটের চার্টে 5 ঘন্টা আচ্ছাদিত করে, যা স্বল্পমেয়াদী প্রবণতা পরিবর্তনকে কার্যকরভাবে সনাক্ত করতে পারে।
এই সূচকের চমৎকার দিকটি হল যে এটি কেবল প্রবণতা অনুসরণ করে না, বরং প্রবণতা বিচ্যুতি পরিমাপ করে। যখন দাম ক্রমাগত পতনের পরে রিটার্ন লাইন থেকে উপরে সরে যায়, তখন প্রায়শই একটি বিপর্যয়ের সূচনা হয়। ডাব্লুটি এবং সিআরএসআইয়ের ওভারসোল্ড সংকেতগুলির সাথে মিলিত হয়ে “ওভারসোল্ড + ট্রেন্ড রিভার্স” এর দ্বৈত নিশ্চিতকরণ গঠন করে।
কৌশলটি খাঁটি মাল্টি-হেড হিসাবে ডিজাইন করা হয়েছে, প্রতিটি পজিশনে ৩০% তহবিল এবং একটি অতিরিক্ত পজিশনের অনুমতি দেওয়া হয়েছে। এই সেটিংটি ক্রিপ্টোকারেন্সির দীর্ঘমেয়াদী উত্থানের প্রবণতার জন্য উপযুক্ত, এবং পজিশন নিয়ন্ত্রণের মাধ্যমে ঝুঁকি পরিচালনা করে। ৩০% একক পজিশনের জন্য পর্যাপ্ত রিটার্ন পাওয়া যায় এবং একক লেনদেনের অত্যধিক ঝুঁকি এড়ানো যায়।
প্রবণতা ট্রেডিংয়ের সম্পূর্ণতা নিশ্চিত করার জন্য এই নকশাটি তৈরি করা হয়েছে যাতে প্রবণতা ট্রেডিংয়ের অকাল প্রস্থান এড়ানো যায়।
এই কৌশলটি বিটিসির ১৫ মিনিটের স্তরে ভাল কাজ করেছে, তবে এটি সমস্ত বাজারের পরিস্থিতিতে কার্যকর নয়। ঊর্ধ্বমুখী বাজারে, এমনকি ট্রিপল কনফার্মেশনের ফলে আরও বেশি মিথ্যা সংকেত তৈরি হতে পারে। এই কৌশলটি স্পষ্ট প্রবণতাযুক্ত বাজারের পরিস্থিতিতে সবচেয়ে উপযুক্ত।
ঝুঁকিপূর্ণ পরামর্শঃ ঐতিহাসিক পুনরাবৃত্তি ভবিষ্যতের উপার্জনের প্রতিনিধিত্ব করে না, ক্রিপ্টোকারেন্সির বাজারটি অত্যন্ত অস্থির, মূলধন হ্রাসের ঝুঁকি রয়েছে। শারীরিক ব্যবসায়ের আগে পর্যাপ্ত কাগজপত্রের লেনদেনের যাচাইকরণ এবং সামগ্রিক অবস্থানকে কঠোরভাবে নিয়ন্ত্রণ করার পরামর্শ দেওয়া হয়।
/*backtest
start: 2024-10-09 00:00:00
end: 2025-10-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":500000}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alescha13
// WT + CRSI + Linear Regression Long-only Strategy
// Description:
// This long-only trading strategy combines WaveTrend (WT),
// Connors RSI (CRSI), and a Linear Regression Slope (LSDD) trend filter.
// Signals are generated only when all three indicators align within a defined window.
// Exits occur when all indicators turn bearish.
// Backtested on BTC with 15-minute timeframe.
strategy("WT + CRSI + Linear Regression Long-only © alescha13",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=30,
pyramiding=1,
calc_on_every_tick=false,
process_orders_on_close=true)
// =====================
// Inputs
// =====================
wtLength = input.int(10, "WT Length")
wtOversold = input.int(-48, "WT Oversold Level")
wtOverbought = input.int(48, "WT Overbought Level")
crsiRSILength = input.int(6, "CRSI RSI Length")
crsiOversold = input.int(20, "CRSI Oversold Level")
crsiOverbought = input.int(80, "CRSI Overbought Level")
lsddLen = input.int(20, "Linear Regression Length")
windowSize = input.int(2, "Window size (bars) for all signals", minval=1)
// =====================
// Helper: CRSI Function
// =====================
updown(s) =>
isEqual = s == s[1]
isGrowing = s > s[1]
ud = 0.0
ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1)
ud
crsiFunc(src, lenrsi) =>
lenupdown = 2
lenroc = 100
rsi = ta.rsi(src, lenrsi)
updownrsi = ta.rsi(updown(src), lenupdown)
percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
math.avg(rsi, updownrsi, percentrank)
// =====================
// WaveTrend (WT) Calculation
// =====================
ap = (high + low + close) / 3.0
esa = ta.ema(ap, wtLength)
d = ta.ema(math.abs(ap - esa), wtLength)
ci = (ap - esa) / (0.015 * d)
wt = ta.ema(ci, 3)
wtBull = ta.crossover(wt, wtOversold)
wtBear = wt > wtOverbought
// =====================
// CRSI Calculation
// =====================
crsiValue = crsiFunc(close, crsiRSILength)
crsiBull = crsiValue < crsiOversold
crsiBear = crsiValue > crsiOverbought
// =====================
// Linear Regression LSDD Calculation
// =====================
slope = ta.linreg(close, lsddLen, 0)
lsdd = close - slope
lsddBull = ta.crossover(lsdd, 0)
lsddBear = lsdd < 0
// =====================
// Window Logic (Synchronize Signals)
// =====================
var int wtBarIndex = na
var int crsiBarIndex = na
var int lsddBarIndex = na
if wtBull
wtBarIndex := bar_index
if crsiBull
crsiBarIndex := bar_index
if lsddBull
lsddBarIndex := bar_index
buySignal = false
if not na(wtBarIndex) and not na(crsiBarIndex) and not na(lsddBarIndex)
maxBar = math.max(wtBarIndex, crsiBarIndex, lsddBarIndex)
minBar = math.min(wtBarIndex, crsiBarIndex, lsddBarIndex)
if (maxBar - minBar) <= windowSize
buySignal := true
wtBarIndex := na
crsiBarIndex := na
lsddBarIndex := na
finalLong = buySignal
// =====================
// Exit Logic
// =====================
sellSignal = wtBear and crsiBear and lsddBear
// =====================
// Entries / Exits
// =====================
if finalLong
strategy.entry("Long", strategy.long, comment="Long Entry")
if sellSignal
strategy.close("Long", comment="Long Exit")
// =====================
// Background Color for Signals
// =====================
bgcolor(finalLong ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)
// =====================
// Plots
// =====================
plot(wt, color=color.new(color.blue, 0), title="WT")
plot(crsiValue, color=color.new(color.purple, 0), title="CRSI")
plot(lsdd, color=color.new(color.orange, 0), title="LSDD")
plotshape(finalLong, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// =====================
// Alerts
// =====================
alertcondition(finalLong, title="Long Alert", message="WT + CRSI + LSDD Long Signal")
alertcondition(sellSignal, title="Exit Alert", message="WT + CRSI + LSDD Exit Signal")