ورود/ثبت‌نام

در حال بارگذاری...

Bobs_trade

Bobs_trade

@t_Bobs_trade

تعداد دنبال کننده:0
تاریخ عضویت :۱۴۰۴/۷/۲۶
شبکه اجتماعی تریدر :refrence
ارزدیجیتال
رتبه بین 51820 تریدر
0%
بازدهی 6 ماه اخیر تریدر
(میانگین بازدهی 6 ماه اخیر 100 تریدر برتر :21.2%)
(بازدهی 6 ماه اخیر BTC :-14.8%)
قدرت تحلیل
0
1تعداد پیام

تریدر چه نمادی را توصیه به خرید کرده؟

سابقه خرید

فیلتر:
معامله سودآور
معامله ضررده

تخمین بازدهی ماه به ماه تریدر

سال:

پیام های تریدر

فیلتر

نوع پیام

مناطق واکنش قدرتمند SMC: کشف بلاک‌های سفارش کلیدی با جزئیات دقیق

نوع پیامخنثی
قیمت لحظه انتشار:
‎$۴٬۲۴۷٫۲۷
PAXG،تکنیکال،Bobs_trade

// version =5 indicator("SMC Reaction Zones — Order Blocks (Strong / Weak)", overlay=true, max_boxes_count=200) // -------------------- User inputs -------------------- obConfirmCandles = input.int(3, "Confirming candles after OB (min consecutive move)", minval=1) // N consecutive candles to define move lookbackOB = input.int(100, "Lookback for detecting OBs", minval=20) zonePadding = input.float(0.0, "Zone padding (pips/points)", step=0.1) // padding to expand zone useVolume = input.bool(true, "Use volume as part of strength decision (if available)") volMultiplier = input.float(1.5, "Volume threshold multiplier (avg)", minval=0.1) avgRangeLen = input.int(20, "Average range length for normalization", minval=5) wickToRangeStrong = input.float(1.0, "Wick-to-average-range ratio for STRONG reaction", minval=0.1) wickToRangeWeak = input.float(0.4, "Wick-to-average-range ratio for WEAK reaction", minval=0.0) maxZoneAge = input.int(1000, "Remove zones older than (bars)", minval=50) showLabels = input.bool(true, "Show reaction labels on chart") // Colors bullOBColorStrong = color.new(color.green, 0) bullOBColorWeak = color.new(color.green, 70) bearOBColorStrong = color.new(color.red, 0) bearOBColorWeak = color.new(color.red, 70) reactionStrongColor = color.new(color.yellow, 0) reactionWeakColor = color.new(color.silver, 70) // -------------------- helpers -------------------- avgRange() => ta.sma(high - low, avgRangeLen) isBullish(c) => c.close > c.open isBearish(c) => c.close < c.open // detect last bullish candle before a consecutive bearish move (bearish order block) isBearishOrderBlockAt(barIndex) => // bar at barIndex must be bullish bullish = close [barIndex] > open [barIndex] // subsequent obConfirmCandles candles must be bearish (strict) seqBear = true for i = 1 to obConfirmCandles seqBear := seqBear and (close [barIndex - i] < open [barIndex - i]) bullish and seqBear // detect last bearish candle before a consecutive bullish move (bullish order block) isBullishOrderBlockAt(barIndex) => bearish = close [barIndex] < open [barIndex] seqBull = true for i = 1 to obConfirmCandles seqBull := seqBull and (close [barIndex - i] > open [barIndex - i]) bearish and seqBull // -------------------- scanning for order blocks -------------------- var box [] ob_boxes = array.new_box() var string [] ob_meta = array.new_string() // meta format: "type|high|low|created_bar|reacted" where type=BULL/BEAR // function to create an order block box and store meta f_create_ob(_type, _top, _bottom, _created_bar) => b = box.new(left = bar_index - _created_bar, top = _top, right = bar_index, bottom = _bottom, border_width = 1) array.push(ob_boxes, b) array.push(ob_meta, str.format("{0}|{1}|{2}|{3}|{4}", _type, str.tostring(_top), str.tostring(_bottom), str.tostring(bar_index), "0")) // iterate lookback to find OBs at most once per bar (detect only new OBs at current bar) if barstate.isconfirmed // look only at the candle that is 'obConfirmCandles' bars back as potential OB origin originBar = obConfirmCandles if originBar <= lookbackOB // check current origin if isBullishOrderBlockAt(originBar) // bullish order block (price moved up after a bearish candle) top = high [originBar] bottom = low [originBar] // add padding top := top + zonePadding * syminfo.mintick bottom := bottom - zonePadding * syminfo.mintick f_create_ob("BULL", top, bottom, originBar) if isBearishOrderBlockAt(originBar) top = high [originBar] bottom = low [originBar] top := top + zonePadding * syminfo.mintick bottom := bottom - zonePadding * syminfo.mintick f_create_ob("BEAR", top, bottom, originBar) // -------------------- check retests & classify strength -------------------- avgR = avgRange() volAvg = useVolume ? ta.sma(volume, avgRangeLen) : na // utility to update meta entry f_update_meta(idx, newMeta) => array.set(ob_meta, idx, newMeta) // loop through boxes and examine reaction when price touches the zone for i = 0 to array.size(ob_boxes) - 1 boxRef = array.get(ob_boxes, i) meta = array.get(ob_meta, i) parts = str.split(meta, "|") typ = parts [0] top_s = str.tonumber(parts [1]) bot_s = str.tonumber(parts [2]) created_at = str.tonumber(parts [3]) reacted_flag = parts [4] == "1" // remove very old boxes if bar_index - created_at > maxZoneAge box.delete(boxRef) // mark as removed by overwriting (can't remove array entries easily) — set to null like box with width 0 array.set(ob_boxes, i, boxRef) array.set(ob_meta, i, str.format("{0}|{1}|{2}|{3}|{4}", typ, str.tostring(top_s), str.tostring(bot_s), str.tostring(created_at), "removed")) continue // convert to numbers top = top_s bot = bot_s // check if current candle touches the zone (price enters zone) touched = (low <= top and low >= bot) or (high <= top and high >= bot) or (close <= top and close >= bot) or (open <= top and open >= bot) if not reacted_flag and touched // measure rejection wick AFTER touch; examine the candles for N bars after touch (we'll use 3 bars) postBars = 3 // compute average wick size vs average range // define for BEAR OB: we expect price to return up into a BEAR zone and then get bearish rejection (upper wick) // for BULL OB: expect price to return down into a BULL zone and get bullish rejection (lower wick) maxWickRatio = 0.0 totalVol = 0.0 for j = 0 to postBars - 1 bOpen = open [j] bClose = close [j] bHigh = high [j] bLow = low [j] // wick opposite to direction if typ == "BEAR" // bearish rejection = long upper wick relative to candle range wick = bHigh - math.max(bOpen, bClose) else // BULL wick = math.min(bOpen, bClose) - bLow // normalize by avgR wickRatio = avgR > 0 ? wick / avgR : 0.0 if wickRatio > maxWickRatio maxWickRatio := wickRatio if useVolume totalVol += volume [j] avgVolPost = useVolume ? totalVol / postBars : na // Decide strength volCondition = true if useVolume volCondition := avgVolPost >= volAvg * volMultiplier strongCondition = (maxWickRatio >= wickToRangeStrong) and volCondition weakCondition = (maxWickRatio >= wickToRangeWeak) // color & styling if strongCondition // strong reaction — color bright and thicker border box.set_border_width(boxRef, 3) box.set_bgcolor(boxRef, typ == "BEAR" ? bearOBColorStrong : bullOBColorStrong) // place a label if showLabels label.new(bar_index, typ == "BEAR" ? high : low, text = "STRONG REACTION", style = label.style_label_down, color = reactionStrongColor, textcolor = color.black, yloc = yloc.abovebar) // mark in meta f_update_meta(i, str.format("{0}|{1}|{2}|{3}|{4}", typ, str.tostring(top), str.tostring(bot), str.tostring(created_at), "1")) else if weakCondition box.set_border_width(boxRef, 1) box.set_bgcolor(boxRef, typ == "BEAR" ? bearOBColorWeak : bullOBColorWeak) if showLabels label.new(bar_index, typ == "BEAR" ? high : low, text = "WEAK REACTION", style = label.style_label_down, color = reactionWeakColor, textcolor = color.black, yloc = yloc.abovebar) f_update_meta(i, str.format("{0}|{1}|{2}|{3}|{4}", typ, str.tostring(top), str.tostring(bot), str.tostring(created_at), "1")) else // no clear reaction, keep zone as-is (faded) box.set_bgcolor(boxRef, typ == "BEAR" ? bearOBColorWeak : bullOBColorWeak) // -------------------- initial painting style for boxes -------------------- // ensure newly created boxes get an initial style for i = 0 to array.size(ob_boxes) - 1 b = array.get(ob_boxes, i) if na(b) continue // read meta meta = array.get(ob_meta, i) parts = str.split(meta, "|") typ = parts [0] reacted_flag = parts [4] // style if not reacted if reacted_flag == "0" box.set_bgcolor(b, typ == "BEAR" ? color.new(color.red, 90) : color.new(color.green, 90)) box.set_border_color(b, typ == "BEAR" ? color.new(color.red, 60) : color.new(color.green, 60)) box.set_border_width(b, 1) // -------------------- optional: cleanup null boxes -------------------- /* Note: TradingView limits arrays and doesn't let us splice easily; boxes exceeding maxZoneAge are visually deleted above. If you'd like full removal from array, more bookkeeping with parallel arrays / indexes is needed. */ // -------------------- user info on chart -------------------- var label info = na if barstate.islastconfirmedhistory if not na(info) label.delete(info) infoText = "SMC Reaction Zones\nOrder Blocks detected: " + str.tostring(array.size(ob_boxes)) info := label.new(bar_index, high, infoText, yloc=yloc.abovebar, style=label.style_label_left, textcolor=color.white, color=color.new(color.blue, 80), size=size.small)

منبع پیام: تریدینگ ویو
سلب مسئولیت

هر محتوا و مطالب مندرج در سایت و کانال‌های رسمی ارتباطی سهمتو، جمع‌بندی نظرات و تحلیل‌های شخصی و غیر تعهد آور بوده و هیچگونه توصیه‌ای مبنی بر خرید، فروش، ورود و یا خروج از بازار‌های مالی نمی باشد. همچنین کلیه اخبار و تحلیل‌های مندرج در سایت و کانال‌ها، صرفا بازنشر اطلاعات از منابع رسمی و غیر رسمی داخلی و خارجی است و بدیهی است استفاده کنندگان محتوای مذکور، مسئول پیگیری و حصول اطمینان از اصالت و درستی مطالب هستند. از این رو ضمن سلب مسئولیت اعلام می‌دارد مسئولیت هرنوع تصمیم گیری و اقدام و سود و زیان احتمالی در بازار سرمایه و ارز دیجیتال، با شخص معامله گر است.

نماد برگزیده
برترین تریدر‌
دنبال شده
هشدار