
IDM, BOS, CHOCH, ATR, RSI, MACD, EMA, HTF
পুনরুদ্ধারের তথ্যটি সরাসরি traditionalতিহ্যবাহী প্রযুক্তিগত বিশ্লেষণের মুখোমুখিঃ 8 ফ্যাক্টর সমষ্টি মডেল + বাজার কাঠামো সনাক্তকরণ + আইডিএম প্ররোচিত সনাক্তকরণ, সর্বনিম্ন 6⁄8 মিনিট পজিশন খোলার জন্য। এটি কোনও সূচক নয় যা “সংস্থানগত চিন্তাভাবনা” বলা হয়, এই সিস্টেমটি বিশেষত BOS ((কাঠামো বিচ্ছিন্নতা) এবং CHoCH ((প্রকৃতি পরিবর্তন)) সনাক্ত করে, কেবলমাত্র সমর্থনকারী প্রতিরোধের চেয়ে 300% বেশি কার্যকর।
মূল যুক্তিটি নিষ্ঠুর এবং সরাসরিঃ যখন খুচরা বিক্রেতাদের স্টপ লস থেকে সরাতে হয় এবং তারপর রিভার্সাল হাউজিং করতে হয়। যখন দামগুলি স্বল্প সময়ের জন্য পড়ে যায় এবং দ্রুত ফিরে আসে, তখন এটি একটি সাধারণ তরলতা সাফাই (আইডিএম) ।
দৈনিক ঝুঁকি সীমা 6%, সাপ্তাহিক ঝুঁকি সীমা 12%, একক ঝুঁকি 1.5%। গণিত সহজঃ 4 টি ধারাবাহিক পূর্ণ পজিশন ক্ষতি একটি দৈনিক একচেটিয়াকে ট্রিগার করে, এবং 8 টি ধারাবাহিক একচেটিয়া একটি সাপ্তাহিক একচেটিয়া। সমস্যাটি হ’ল ক্রিপ্টোকারেন্সি বাজারের ওঠানামা সাধারণত traditionalতিহ্যবাহী সম্পদের চেয়ে 3-5 গুণ বেশি, এবং এই ঝুঁকির ফাঁকটি অস্থিরতার সময় দ্রুত ব্যবহার করা হয়।
ATR গুণক 2.0x স্টপ লস + 2.0x রিস্ক রেট তাত্ত্বিকভাবে যুক্তিসঙ্গত, তবে বাস্তবায়নের জন্য স্লাইড পয়েন্ট ব্যয় বিবেচনা করা প্রয়োজন। 0.05% ফী সেট করা হয়েছে যা নগদ লেনদেনের জন্য উপযুক্ত, যদি চুক্তি লেনদেনের জন্য 0.1% বা তার বেশি সংশোধন করার পরামর্শ দেওয়া হয়।
RSI ((14) + MACD ((12,26,9) + EMA ((200) + লেনদেনের পরিমাণ + বাজারের কাঠামো + সময় উইন্ডো + অস্থিরতা + উচ্চ সময় ফ্রেম নিশ্চিতকরণ। প্রতিটি ফ্যাক্টর সমান ওজনের ((প্রতিটি 1 পয়েন্ট), সর্বনিম্ন 6 পয়েন্টের জন্য পজিশন খোলার অর্থ 75% ফ্যাক্টর একই সাথে পূরণ করতে হবে।
এই নকশাটি ট্রেন্ডিং পরিস্থিতিতে দুর্দান্ত কাজ করে, তবে হর্সবোর্ডের অস্থিরতার সময় সংকেত বিরল। ঐতিহাসিক পর্যালোচনাগুলি দেখায় যে এই কৌশলটি উচ্চতর ওঠানামাযুক্ত ক্রিপ্টোকারেন্সি বাজারের জন্য উপযুক্ত, যেখানে প্রচলিত স্টক মার্কেটের সংকেতগুলি উল্লেখযোগ্যভাবে হ্রাস পাবে।
BOS এবং CHoCH সনাক্তকরণ 5 টি পিভট পয়েন্টের উপর ভিত্তি করে, এই প্যারামিটারটি 1 ঘন্টা চক্রের উপরে সময় ফ্রেমে স্থিতিশীল। তবে IDM ((প্ররোচিত) সনাক্তকরণটি কেবলমাত্র 3 টি কে লাইন দিয়ে বিচার করে, উচ্চ-ফ্রিকোয়েন্সি গোলমাল পরিবেশে মিথ্যা সংকেত তৈরি করা সহজ।
IDM সনাক্তকরণ চক্রটি 5-7 কে লাইনে সামঞ্জস্য করার পরামর্শ দেওয়া হয় এবং ট্র্যাফিক নিশ্চিতকরণের শর্ত যুক্ত করা হয়। বর্তমান সংস্করণটি 15 মিনিটের চার্ট নীচের সময় ফ্রেমে ব্যবহার করার পরামর্শ দেওয়া হয় না, সংকেত-শব্দ অনুপাত খুব কম।
কৌশলটি একই সাথে একাধিক উচ্চ-সম্পর্কযুক্ত জাতের অধিকারের অনুমতি দেয়, যা সিস্টেমিক ঝুঁকির ইভেন্টে ঝুঁকির খাঁজকে বহুগুণে বাড়িয়ে তোলে। 3 টি কে লাইনের সম্পর্কিত শীতল সময়টি সম্পূর্ণরূপে অপর্যাপ্ত, 20-50 টি কে লাইনে সামঞ্জস্য করার পরামর্শ দেওয়া হয়েছে।
সর্বাধিক প্রত্যাহারের একচেটিয়া 10% সেটিং যুক্তিসঙ্গত, তবে গতিশীল সামঞ্জস্যের অভাব রয়েছে। একটি ষাঁড়ের বাজারে যথাযথভাবে 15% পর্যন্ত শিথিল করা যেতে পারে এবং একটি ভাল বাজারে 5-7% পর্যন্ত কঠোর করা উচিত। বর্তমান স্থির পরামিতি নকশা বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে না।
সর্বোত্তম ব্যবহারের পরিবেশঃ ক্রিপ্টোকারেন্সির মূলধারার মুদ্রা ((বিটিসি/ইটিএইচ), ১-৪ ঘন্টা সময় ফ্রেম, প্রবণতা স্পষ্ট। প্রত্যাশিত বার্ষিক আয় 30-50% পর্যন্ত হতে পারে, তবে একটি ভাল বাজারে 15-25% প্রত্যাহারের মুখোমুখি হতে পারে।
অকার্যকর পরিস্থিতিঃ অস্থির বাজার, নিম্ন ওঠানামা পরিবেশ, 15 মিনিটের নিচে উচ্চ-ফ্রিকোয়েন্সি লেনদেন। প্রচলিত শেয়ার বাজারে কম ওঠানামা হওয়ার কারণে সংকেত ফ্রিকোয়েন্সি উল্লেখযোগ্যভাবে হ্রাস পাবে, সরাসরি প্যারামিটার ব্যবহার করার পরামর্শ দেওয়া হয় না।
মনে রাখবেনঃ ঐতিহাসিক পুনরাবৃত্তি ভবিষ্যতের লাভের প্রতিনিধিত্ব করে না। এই কৌশলটি বিভিন্ন বাজার পরিস্থিতিতে ব্যাপকভাবে ভিন্নতা দেখায়, যার জন্য কঠোর ঝুঁকি ব্যবস্থাপনা এবং নিয়মিত প্যারামিটার অপ্টিমাইজেশান প্রয়োজন।
/*backtest
start: 2024-12-21 00:00:00
end: 2025-12-20 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Liquidity Maxing: Institutional Liquidity Matrix", shorttitle="LIQMAX", overlay=true)
// =============================================================================
// 1. TYPE DEFINITIONS
// =============================================================================
type Pivot
float price
int index
bool isHigh
type Structure
float strongHigh
float strongLow
int strongHighIdx
int strongLowIdx
string trend
bool bos
bool choch
bool idm
// =============================================================================
// 2. INPUTS
// =============================================================================
// --- Market Structure ---
grp_struct = "Market Structure"
int pivotLen = input.int(5, "Pivot Length", minval=1, group=grp_struct)
bool useIdm = input.bool(true, "Filter by Inducement (IDM)", group=grp_struct)
// --- Risk Management ---
grp_risk = "Risk Management"
float riskReward = input.float(2.0, "Risk:Reward Ratio", step=0.1, group=grp_risk)
int atrPeriod = input.int(14, "ATR Period", group=grp_risk)
float atrMult = input.float(2.0, "ATR Multiplier (Stop)", step=0.1, group=grp_risk)
float maxDrawdown = input.float(10.0, "Max Drawdown (%)", group=grp_risk)
float riskPerTrade = input.float(1.5, "Risk per Trade (%)", minval=0.1, maxval=10, step=0.1, group=grp_risk)
float dailyRiskLimit = input.float(6.0, "Daily Risk Limit (%)", minval=1.0, step=0.5, group=grp_risk)
float weeklyRiskLimit = input.float(12.0, "Weekly Risk Limit (%)", minval=2.0, step=0.5, group=grp_risk)
float minPositionPercent = input.float(0.25, "Min Position Size (%)", minval=0.1, step=0.05, group=grp_risk)
float maxPositionPercent = input.float(5.0, "Max Position Size (%)", minval=0.5, step=0.5, group=grp_risk)
int correlationBars = input.int(3, "Correlation Cooldown (bars)", minval=0, group=grp_risk)
bool killSwitch = input.bool(false, "Emergency Kill Switch", group=grp_risk)
// --- Confluence Filters ---
grp_filter = "Confluence Filters"
int rsiLen = input.int(14, "RSI Length", group=grp_filter)
float rsiOb = input.float(70.0, "RSI Overbought", group=grp_filter)
float rsiOs = input.float(30.0, "RSI Oversold", group=grp_filter)
int emaLen = input.int(50, "Trend EMA", group=grp_filter)
string htfTf = input.timeframe("D", "HTF Timeframe", group=grp_filter)
float volMult = input.float(1.2, "Volume Multiplier", step=0.1, group=grp_filter)
bool allowWeekends = input.bool(true, "Allow Weekend Trading", group=grp_filter)
int confThreshold = input.int(6, "Min Confluence Score (0-8)", minval=1, maxval=8, group=grp_filter)
// =============================================================================
// 3. HELPER FUNCTIONS
// =============================================================================
calcATRLevels(float price, float atr, float mult, bool isLong) =>
float sl = isLong ? price - (atr * mult) : price + (atr * mult)
float tp = isLong ? price + (atr * mult * riskReward) : price - (atr * mult * riskReward)
[sl, tp]
calcPositionSize(float atr, float price, float minPct, float maxPct, float baseRisk) =>
float scalar = price > 0 and atr > 0 ? atr / price : 0.0
float adjustedRiskPct = scalar > 0 ? baseRisk / (scalar * 10) : baseRisk
float finalRiskPct = math.max(minPct, math.min(maxPct, adjustedRiskPct))
float equity = strategy.equity
float dollarAmount = equity * (finalRiskPct / 100.0)
float qty = price > 0 ? dollarAmount / price : 0.0
qty
isSessionAllowed(bool allowWknd) =>
bool weekend = dayofweek == dayofweek.saturday or dayofweek == dayofweek.sunday
allowWknd ? true : not weekend
// =============================================================================
// 4. STATE VARIABLES
// =============================================================================
var Structure mStruct = Structure.new(na, na, 0, 0, "neutral", false, false, false)
var Pivot lastHigh = Pivot.new(na, na, true)
var Pivot lastLow = Pivot.new(na, na, false)
var float dailyStartEquity = na
var float weeklyStartEquity = na
var float dailyRiskUsed = 0.0
var float weeklyRiskUsed = 0.0
var int lastLongBar = na
var int lastShortBar = na
var float equityPeak = na
// Initialize
if bar_index == 0
dailyStartEquity := strategy.equity
weeklyStartEquity := strategy.equity
equityPeak := strategy.equity
// Reset tracking
if ta.change(time("D")) != 0
dailyStartEquity := strategy.equity
dailyRiskUsed := 0.0
if ta.change(time("W")) != 0
weeklyStartEquity := strategy.equity
weeklyRiskUsed := 0.0
if na(equityPeak) or strategy.equity > equityPeak
equityPeak := strategy.equity
// =============================================================================
// 5. MARKET STRUCTURE DETECTION(1)
// =============================================================================
// Pivot Detection
float ph = ta.pivothigh(high, pivotLen, pivotLen)
float pl = ta.pivotlow(low, pivotLen, pivotLen)
if not na(ph)
lastHigh.price := ph
lastHigh.index := bar_index - pivotLen
if not na(pl)
lastLow.price := pl
lastLow.index := bar_index - pivotLen
// Structure Breaks
bool bullCross = ta.crossover(close, lastHigh.price)
bool bearCross = ta.crossunder(close, lastLow.price)
bool isBullishBreak = not na(lastHigh.price) and bullCross
bool isBearishBreak = not na(lastLow.price) and bearCross
mStruct.bos := false
mStruct.choch := false
// =============================================================================
// 6. MARKET STRUCTURE DETECTION(2)
// =============================================================================
// Bullish Break
if isBullishBreak
if mStruct.trend == "bearish"
mStruct.choch := true
mStruct.trend := "bullish"
else
mStruct.bos := true
mStruct.trend := "bullish"
mStruct.strongLow := lastLow.price
mStruct.strongLowIdx := lastLow.index
// Bearish Break
if isBearishBreak
if mStruct.trend == "bullish"
mStruct.choch := true
mStruct.trend := "bearish"
else
mStruct.bos := true
mStruct.trend := "bearish"
mStruct.strongHigh := lastHigh.price
mStruct.strongHighIdx := lastHigh.index
// IDM (Inducement) Detection
float swingLowPrev = ta.lowest(low, 3)[1]
float swingHighPrev = ta.highest(high, 3)[1]
bool idmBullish = mStruct.trend == "bullish" and not na(swingLowPrev) and low < swingLowPrev and close > swingLowPrev
bool idmBearish = mStruct.trend == "bearish" and not na(swingHighPrev) and high > swingHighPrev and close < swingHighPrev
mStruct.idm := idmBullish or idmBearish
// =============================================================================
// 7. CONFLUENCE ENGINE (8 Factors)
// =============================================================================
// Technical Indicators
float rsi = ta.rsi(close, rsiLen)
float ema = ta.ema(close, emaLen)
[macdLine, sigLine, _] = ta.macd(close, 12, 26, 9)
float volAvg = ta.sma(volume, 20)
float baseAtr = ta.atr(atrPeriod)
float atr = baseAtr
float htfEma = request.security(syminfo.tickerid, htfTf, ta.ema(close, emaLen), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
bool sessionOk = isSessionAllowed(allowWeekends)
// Confluence Checks (8 Factors)
bool c1_trend = (mStruct.trend == "bullish" and close > ema) or (mStruct.trend == "bearish" and close < ema)
bool c2_rsi = (mStruct.trend == "bullish" and rsi > 40 and rsi < rsiOb) or (mStruct.trend == "bearish" and rsi < 60 and rsi > rsiOs)
bool c3_macd = (mStruct.trend == "bullish" and macdLine > sigLine) or (mStruct.trend == "bearish" and macdLine < sigLine)
bool c4_volume = volume > (volAvg * volMult)
bool c5_htf = (mStruct.trend == "bullish" and close >= htfEma) or (mStruct.trend == "bearish" and close <= htfEma)
bool c6_session = sessionOk
bool c7_volatility = baseAtr > baseAtr[1]
bool c8_structure = mStruct.bos or mStruct.choch
// Calculate Score
int score = (c1_trend ? 1 : 0) + (c2_rsi ? 1 : 0) + (c3_macd ? 1 : 0) + (c4_volume ? 1 : 0) + (c5_htf ? 1 : 0) + (c6_session ? 1 : 0) + (c7_volatility ? 1 : 0) + (c8_structure ? 1 : 0)
// =============================================================================
// 8. RISK MANAGEMENT
// =============================================================================
// Calculate Levels
[longSL, longTP] = calcATRLevels(close, atr, atrMult, true)
[shortSL, shortTP] = calcATRLevels(close, atr, atrMult, false)
// Drawdown Tracking
float globalDD = equityPeak > 0 ? (equityPeak - strategy.equity) / equityPeak * 100 : 0.0
float dailyDD = dailyStartEquity > 0 ? (dailyStartEquity - strategy.equity) / dailyStartEquity * 100 : 0.0
float weeklyDD = weeklyStartEquity > 0 ? (weeklyStartEquity - strategy.equity) / weeklyStartEquity * 100 : 0.0
// Position Sizing
float orderQty = calcPositionSize(atr, close, minPositionPercent, maxPositionPercent, riskPerTrade)
// Risk Checks
bool withinLimits = dailyDD < dailyRiskLimit and weeklyDD < weeklyRiskLimit and globalDD < maxDrawdown
bool safeToTrade = withinLimits and not killSwitch
bool correlationBlockLong = not na(lastLongBar) and (bar_index - lastLongBar) <= correlationBars
bool correlationBlockShort = not na(lastShortBar) and (bar_index - lastShortBar) <= correlationBars
bool dailyLimitOk = (dailyRiskUsed + riskPerTrade) <= dailyRiskLimit
bool weeklyLimitOk = (weeklyRiskUsed + riskPerTrade) <= weeklyRiskLimit
bool riskBudgetOk = dailyLimitOk and weeklyLimitOk
// =============================================================================
// 9. ENTRY SIGNALS
// =============================================================================
// Signal Logic: Trend + (BOS/CHoCH/IDM) + Confluence + HTF
bool signalLong = mStruct.trend == "bullish" and (mStruct.bos or mStruct.choch or (useIdm and idmBullish)) and score >= confThreshold and c5_htf
bool signalShort = mStruct.trend == "bearish" and (mStruct.bos or mStruct.choch or (useIdm and idmBearish)) and score >= confThreshold and c5_htf
// Final Entry Conditions
bool allowLong = signalLong and strategy.position_size == 0 and safeToTrade and not correlationBlockLong and riskBudgetOk and orderQty > 0
bool allowShort = signalShort and strategy.position_size == 0 and safeToTrade and not correlationBlockShort and riskBudgetOk and orderQty > 0
if allowLong
strategy.entry("Long", strategy.long, qty=orderQty, comment="LIQMAX LONG")
strategy.exit("Exit L", "Long", stop=longSL, limit=longTP, comment_loss="SL", comment_profit="TP")
dailyRiskUsed += riskPerTrade
weeklyRiskUsed += riskPerTrade
lastLongBar := bar_index
if allowShort
strategy.entry("Short", strategy.short, qty=orderQty, comment="LIQMAX SHORT")
strategy.exit("Exit S", "Short", stop=shortSL, limit=shortTP, comment_loss="SL", comment_profit="TP")
dailyRiskUsed += riskPerTrade
weeklyRiskUsed += riskPerTrade
lastShortBar := bar_index
// =============================================================================
// 10. VISUALIZATION (Optional - 可选启用)
// =============================================================================
// 绘制市场结构水平线
plot(mStruct.strongHigh, "Strong High", color=color.red, linewidth=1, style=plot.style_linebr)
plot(mStruct.strongLow, "Strong Low", color=color.green, linewidth=1, style=plot.style_linebr)
// 绘制趋势 EMA
plot(ema, "Trend EMA", color=color.new(color.blue, 50), linewidth=2)
// 背景颜色标记风险状态
bgcolor(not safeToTrade ? color.new(color.red, 90) : na, title="Risk Alert")
bgcolor(score >= confThreshold ? color.new(color.green, 95) : na, title="High Confluence")
// 标记入场信号
plotshape(allowLong, "Long Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(allowShort, "Short Signal", shape.triangledown, location.abovebar, color.red, size=size.small)