PulseHub
OPEN-SOURCE SCRIPT

Triple Bottom/Top Patterns [The_lurker]

701
╔═══════════════════════════════════════════════════════╗
Triple Bottom/Top Patterns [The_lurker]
╚═══════════════════════════════════════════════════════╝

An indicator that detects Triple Bottom and Triple Top patterns and tracks every pattern from the moment its structure completes until its final resolution — with no repainting, and with symmetry limits that adapt to market volatility instead of fixed numbers.

The core idea: a pattern is not a shape you draw and abandon. It is an event with a beginning, a path, and an end — and this indicator tracks all three.

╔═══════════════════════════════════════════════════════╗
◆ WHAT SETS THIS INDICATOR APART
╚═══════════════════════════════════════════════════════╝

snapshot

▌ 1 ─ No repainting, by structure rather than by promise

✕ Common: an "in progress" mode draws an unconfirmed third leg, so the shape shifts and is redrawn every time price moves. The pattern you see in history is not what was displayed at the time.

✓ Here: all seven points are confirmed price pivots, and every state change occurs on confirmed bar close. What you see today on an old bar is literally what was displayed when it appeared.

There is no "in progress" mode in this indicator — a deliberate choice, not a missing feature.


▌ 2 ─ Symmetry limits that adapt to volatility

✕ Common: a fixed percentage for the allowed difference between the ends.

The problem is that one percentage means radically different things:

▸ 1% on the 15-minute chart ≈ 3.6 volatility units ← far too loose
▸ 1% on the daily chart ≈ 0.26 volatility units ← far too strict

The same number delivers completely different precision depending on timeframe, while the user believes a single standard has been set.

✓ Here: the difference is measured in units of Average True Range at the moment of formation.

One number means the same thing on every timeframe, every instrument, and every market condition — from Bitcoin to low-priced altcoins, from the 1-minute to the weekly.

▌ 3 ─ A complete eight-state machine

✕ Common: the pattern is drawn, the breakout is announced, and its role ends.

✓ Here: every pattern travels a defined and declared path:

⏳ Awaiting breakout
✓ Pattern complete
🎯 Target reached
✕ Pattern failed
🔄 Reverse target reached
⌛ Waiting period expired
⌛ Complete, no target reached
⌛ Failed, no reverse target reached

▌ 4 ─ The two states you will not find elsewhere

✕ Common: the target line extends indefinitely. A pattern that broke out a year ago still has its line crawling across your chart today, with no answer to the question: was it reached or not?

✓ Here: every pattern has a defined time window to reach its target. If the window closes without a hit, the state is declared "Complete, no target" and the line freezes.

This prevents dead lines from accumulating, and gives an explicit answer instead of open silence.

snapshot

▌ 5 ─ No resolution within the event bar itself

✕ Common: a pattern breaks out and the target is counted as reached in that same bar if price touched it.

The problem: the order of high, low, and close inside a single bar is unknown to any indicator. Price may have reached the target before closing above the neckline — that is, before the entry signal existed at all.

✓ Here: resolution is deferred by a full bar. A target can never be reached on the completion bar itself.

A small detail that separates honest tracking from optimistic tracking.

▌ 6 ─ Every point is a pivot, including the turning point and both mids

✕ Common: the intermediate points and the trend origin are taken as the raw highest or lowest value within a window.

The problem: a single stray wick can become a point in the pattern — and if it defines the neckline, the entire decisive level rests on noise.

✓ Here: all seven points are confirmed pivots. One wick cannot define a neckline.

▌ 7 ─ Tracking continues after failure

✕ Common: the pattern breaks down and is erased from the chart.

✓ Here: it breaks down and is fully recoloured — lines, fill, and labels — and a reverse target is computed and tracked with the same precision and the same time window.

Pattern failure is tradeable information, not the end of tracking.

snapshot

▌ 8 ─ One pattern per zone

✕ Common: several overlapping patterns draw on top of one another, turning the chart into a tangled mesh.

✓ Here: when patterns overlap in time, only the one with the tightest symmetry remains. And a pattern that has completed or failed is never erased retroactively — it blocks a newcomer instead of being replaced by it.

The result: a clean chart, and a history that is not rewritten.

▌ 9 ─ Prior trend gate

A reversal pattern without a prior trend is not a reversal.

✓ The indicator requires the leg from the turning point to the first end to reach a defined multiple of the pattern's own height — and this requirement is what determines which pivot is selected as the turning point, so no arbitrary peak preceding the pattern gets picked up.


╔═══════════════════════════════════════════════════════╗
📐 PATTERN STRUCTURE: SEVEN POINTS
╚═══════════════════════════════════════════════════════╝

① Turning point ─ the last opposite pivot before the first end, where the prior trend reversed

②④⑥ The three ends ─ B1 · B2 · B3 or T1 · T2 · T3
confirmed pivots, aligned within a limit measured in volatility units

③⑤ The two mids ─ the separating highs in a Triple Bottom, or the separating lows in a Triple Top

▬▬ Neckline ─ the higher of the two mids in a Triple Bottom, the lower in a Triple Top
this is the level that defines pattern completion

⑦ Crossing point ─ where the final leg intersects the neckline on completion

Path: ① → ② → ③ → ④ → ⑤ → ⑥ → ⑦

snapshot

snapshot

╔═══════════════════════════════════════════════════════╗
🎯 TARGETS
╚═══════════════════════════════════════════════════════╝

The target is purely geometric: the pattern height — the distance between the neckline and the furthest end — projected from the breakout point.

▸ Conservative 0.618 of pattern height
▸ Balanced full pattern height
▸ Aggressive 1.618 of pattern height

An independent mode for each case: Bottom bullish target · Bottom bearish target on failure · Top bearish target · Top bullish target on failure.

The fill criterion is selectable:
▸ Touch ─ matches a limit order resting at the target
▸ Close ─ more conservative

╔═══════════════════════════════════════════════════════╗
⚙️ SETTINGS
╚═══════════════════════════════════════════════════════╝

▌ Pattern Detection

▸ Pivots left and right ─ pivot confirmation sensitivity
▸ Min arm length ─ minimum bars between each consecutive pair of points
▸ Ends symmetry ×ATR ─ the single most influential parameter
▸ Mids symmetry ×ATR ─ same unit, applied to the two intermediate points
▸ Min depth ×ATR ─ excludes shallow sideways chop
▸ Prior leg ×Pattern height ─ required strength of the preceding trend
▸ Trend length and lookback ─ search range for the turning point
▸ Extension multiplier ─ breakout waiting period, relative to pattern width

▌ Targets

▸ Target window ×Width ─ time allowed to reach the target. Zero = no expiry

▌ Visual

▸ Max live patterns per side ─ raise it on lower timeframes
▸ Independent colours per side: pattern · fill · text · label background
Transparency is set from the colour picker itself

╔═══════════════════════════════════════════════════════╗
🔔 ALERT
╚═══════════════════════════════════════════════════════╝

A single alert: Triple Pattern Complete.

▸ Fires when the neckline is broken on confirmed bar close
▸ Covers both bottoms and tops
▸ Once per pattern
▸ The message includes ticker, timeframe, and close price automatically

To create: alarm icon → select the indicator as source → choose the condition → set frequency to "Once Per Bar Close".

⚠ PulseWire freezes the indicator settings at the moment the alert is created. If you change any setting afterwards, delete the alert and create it again.

╔═══════════════════════════════════════════════════════╗
📊 PRACTICAL USE
╚═══════════════════════════════════════════════════════╝

▸ The neckline is the decisive level. Before it is broken: a candidate structure. After: a completed event.

▸ The furthest end defines the invalidation point — a close below the lowest of the three bottoms, or above the highest of the three tops.

▸ The info table shows, for each side: target mode · target price · current state · pattern age in bars.

▸ The age field matters: a pattern fifty bars old is not the same as one five hundred bars old.

▸ Triple patterns are inherently rarer than double ones. If nothing appears on a higher timeframe, that is expected behaviour rather than a fault — raise the ends symmetry limit first, then review the prior trend gate.

╔═══════════════════════════════════════════════════════╗
⚠ DISCLOSURE AND LIMITATIONS
╚═══════════════════════════════════════════════════════╝

▸ This indicator is a visual analysis tool that organises how you read the market. It does not provide buy or sell recommendations, and it promises no results.

▸ Drawing correctness is one thing; pattern performance is another. The indicator draws patterns and tracks their events precisely, but the predictive ability of the pattern itself has not been tested statistically here and is not claimed.

▸ The search scope is limited to the last fifty pivots per side, so a very old pattern may not be detected.

▸ When the tracked-pattern budget fills, a live pattern may be replaced by a newer one. Raising "Max live patterns" reduces this.

▸ Use it within a complete trading approach that includes risk management, not as a sole source of decisions.

╔═══════════════════════════════════════════════════════╗
Triple Bottom/Top Patterns نماذج القيعان والقمم الثلاثية
╚═══════════════════════════════════════════════════════╝

مؤشر يكتشف نماذج القاع الثلاثي والقمة الثلاثية، ويتابع كل نموذج من لحظة اكتمال بنيته حتى حسمه النهائي — بلا إعادة رسم، وبحدود تماثل تتكيف مع تقلب السوق بدل أرقام ثابتة.

الفكرة المركزية: النموذج ليس شكلًا يُرسم ثم يُترك. هو حدث له بداية ومسار ونهاية، والمؤشر يتتبع الثلاثة.

╔═══════════════════════════════════════════════════════╗
◆ ما الذي يميز هذا المؤشر
╚═══════════════════════════════════════════════════════╝

snapshot

▌ ١ ─ لا إعادة رسم، بضمانة بنيوية لا بوعد نصي

✕ الشائع: وضع "قيد التكوين" يرسم طرفًا ثالثًا غير مؤكد، فيتحرك الشكل ويُعاد رسمه كلما تحرك السعر. النموذج الذي تراه في التاريخ ليس ما كان معروضًا لحظتها.

✓ هنا: النقاط السبع كلها محاور سعرية مؤكدة، وكل تغييرات الحالة تقع تحت إغلاق الشمعة المؤكد. ما تراه اليوم على شمعة قديمة هو حرفيًا ما كان معروضًا وقت ظهوره.

لا يوجد وضع "قيد التكوين" في هذا المؤشر — وهذا اختيار مقصود، لا نقص.

▌ ٢ ─ حدود التماثل تتكيف مع التقلب

✕ الشائع: نسبة مئوية ثابتة للفارق المسموح بين الأطراف.

المشكلة أن النسبة الواحدة تعني أشياء مختلفة جذريًا:

▸ 1٪ على فريم 15 دقيقة ≈ 3.6 من وحدات التقلب ← متساهل جدًا
▸ 1٪ على الفريم اليومي ≈ 0.26 من وحدات التقلب ← صارم جدًا

أي أن نفس الرقم يعطي دقة مختلفة تمامًا حسب الفريم، والمستخدم يظن أنه ثبّت معيارًا واحدًا.

✓ هنا: الفارق يُقاس بوحدات المدى الحقيقي المتوسط عند لحظة التكوين.

الرقم الواحد يعني الشيء نفسه على كل فريم، وكل أصل، وكل حالة سوق — من البيتكوين إلى العملات منخفضة السعر، ومن الدقيقة إلى الأسبوعي.

▌ ٣ ─ آلة حالة كاملة من ثماني حالات

✕ الشائع: يرسم النموذج، يعلن الاختراق، وينتهي دوره.

✓ هنا: كل نموذج يمر بمسار محدد ومعلن:

⏳ انتظار الاختراق
✓ اكتمال النموذج
🎯 بلوغ الهدف
✕ فشل النموذج
🔄 بلوغ الهدف العكسي
⌛ انتهاء مدة الانتظار
⌛ اكتمال بلا بلوغ هدف
⌛ فشل بلا بلوغ هدف عكسي

▌ ٤ ─ الحالتان اللتان لا تجدهما في غيره

✕ الشائع: خط الهدف يمتد إلى ما لا نهاية. نموذج اخترق قبل سنة وما زال خطه يزحف على شارتك اليوم، بلا إجابة عن سؤال: هل وصل أم لا؟

✓ هنا: لكل نموذج نافذة زمنية محددة لبلوغ هدفه. إن انقضت بلا وصول، تُعلن الحالة "اكتمال بلا بلوغ هدف" ويتجمد الخط.

هذا يمنع تراكم خطوط ميتة، ويعطي إجابة صريحة بدل صمت مفتوح.

snapshot

▌ ٥ ─ لا حسم في شمعة الحدث نفسها

✕ الشائع: النموذج يخترق ويُحسب الهدف متحققًا في نفس الشمعة إن لامسه السعر.

المشكلة: ترتيب الأعلى والأدنى والإغلاق داخل الشمعة الواحدة غير معلوم لأي مؤشر. ربما بلغ السعر الهدف قبل أن يغلق فوق العنق، أي قبل وجود إشارة الدخول أصلًا.

✓ هنا: الحسم يُؤجَّل شمعة كاملة. لا يمكن أن يتحقق هدف في شمعة الاكتمال نفسها.

تفصيل صغير يفصل بين متابعة صادقة وأخرى متفائلة.

▌ ٦ ─ كل النقاط محاور، بما فيها نقطة التحول والوسيطتان

✕ الشائع: النقاط الوسيطة ونقطة بداية الاتجاه تُؤخذ كأعلى أو أدنى قيمة خام في نافذة.

المشكلة: ذيل شمعة شارد قد يصبح نقطة في النموذج — وإن كان هو خط العنق، فالمستوى الحاسم كله مبني على ضجيج.

✓ هنا: النقاط السبع محاور مؤكدة. ذيل واحد لا يمكن أن يحدد خط عنق.

▌ ٧ ─ متابعة ما بعد الفشل

✕ الشائع: النموذج ينكسر فيُشطب من الشارت.

✓ هنا: ينكسر فيُعاد تلوينه بالكامل — الخطوط والتضليل والعلامات — ويُحسب له هدف عكسي يُتابع بنفس الدقة والنافذة الزمنية.

فشل النموذج معلومة تداولية، لا نهاية المتابعة.

snapshot

▌ ٨ ─ نموذج واحد لكل منطقة

✕ الشائع: عدة نماذج متداخلة ترسم فوق بعضها فيتحول الشارت إلى شبكة متشابكة.

✓ هنا: عند تداخل زمني، يبقى الأدقّ تماثلًا فقط. والنموذج الذي اكتمل أو فشل لا يُمحى بأثر رجعي — يمنع ظهور نموذج جديد فوقه بدل أن يُستبدل به.

النتيجة: شارت نظيف، وتاريخ لا يُزوَّر.

▌ ٩ ─ بوابة الاتجاه السابق

النموذج الانعكاسي بلا اتجاه سابق ليس انعكاسًا.

✓ المؤشر يشترط أن يبلغ المسار من نقطة التحول إلى الطرف الأول مضاعفًا محددًا من ارتفاع النموذج نفسه — وهذا الشرط هو ما يحدد أي محور يُختار كنقطة تحول، فلا تُلتقط قمة عشوائية سبقت النموذج.


╔═══════════════════════════════════════════════════════╗
📐 بنية النموذج: سبع نقاط
╚═══════════════════════════════════════════════════════╝

① نقطة التحول ─ آخر محور مقابل قبل الطرف الأول، حيث انقلب الاتجاه السابق

②④⑥ الأطراف الثلاثة ─ B1 · B2 · B3 أو T1 · T2 · T3
محاور مؤكدة، متقاربة ضمن حد يُقاس بوحدات التقلب

③⑤ الوسيطتان ─ القمتان الفاصلتان في القاع الثلاثي، أو القاعان في القمة الثلاثية

▬▬ خط العنق ─ أعلى الوسيطتين في القاع الثلاثي، وأدناهما في القمة الثلاثية
هو المستوى الذي يحدد اكتمال النموذج

⑦ نقطة العبور ─ تقاطع الساق الأخيرة مع خط العنق عند الاكتمال

المسار: ① → ② → ③ → ④ → ⑤ → ⑥ → ⑦

snapshot

snapshot

╔═══════════════════════════════════════════════════════╗
🎯 الأهداف
╚═══════════════════════════════════════════════════════╝

الهدف هندسي بحت: ارتفاع النموذج — المسافة بين خط العنق وأبعد الأطراف — يُسقط من نقطة الاختراق.

▸ محافظ 0.618 من ارتفاع النموذج
▸ متوازن ارتفاع النموذج كاملًا
▸ عدواني 1.618 من ارتفاع النموذج

نمط مستقل لكل حالة: هدف القاع الصاعد · هدف القاع الهابط عند الفشل · هدف القمة الهابط · هدف القمة الصاعد عند الفشل.

معيار التحقق قابل للاختيار:
▸ لمسة السعر ─ يطابق تنفيذ أمر معلق عند الهدف
▸ إغلاق الشمعة ─ أكثر تحفظًا

╔═══════════════════════════════════════════════════════╗
⚙️ الإعدادات
╚═══════════════════════════════════════════════════════╝

▌ كشف النموذج

▸ شموع اليسار واليمين ─ حساسية تأكيد المحاور
▸ الحد الأدنى للذراع ─ أقل عدد شموع بين كل نقطتين متتاليتين
▸ تماثل الأطراف الثلاثة ×ATR ─ المعامل الأهم في المؤشر
▸ تماثل الوسيطين ×ATR ─ نفس الوحدة، للنقطتين الوسيطتين
▸ أدنى عمق للنموذج ×ATR ─ يستبعد التذبذبات الجانبية الضحلة
▸ ارتفاع الاتجاه ×ارتفاع النموذج ─ قوة المسار السابق المطلوبة
▸ طول المسار ومدى البحث ─ نطاق البحث عن نقطة التحول
▸ معامل التمدد ─ مدة انتظار الاختراق بدلالة عرض النموذج

▌ الأهداف

▸ نافذة الهدف ×العرض ─ المدة المسموحة لبلوغ الهدف. صفر = بلا انتهاء

▌ العرض

▸ أقصى نماذج متتبعة لكل جانب ─ ارفعه على الفريمات المنخفضة
▸ ألوان مستقلة لكل جانب: النموذج · التضليل · النص · خلفية العلامة
الشفافية تُضبط من منتقي اللون نفسه

╔═══════════════════════════════════════════════════════╗
🔔 التنبيه
╚═══════════════════════════════════════════════════════╝

تنبيه واحد فقط: اكتمال النموذج الثلاثي.

▸ يُطلق عند كسر خط العنق بإغلاق شمعة مؤكد
▸ للقاع والقمة معًا
▸ مرة واحدة لكل نموذج
▸ الرسالة تتضمن الرمز والفريم وسعر الإغلاق تلقائيًا

الإنشاء: أيقونة المنبه → المؤشر كمصدر → الشرط → التكرار "مرة عند إغلاق الشمعة".

⚠ PulseWire يحفظ إعدادات المؤشر لحظة إنشاء التنبيه. إن غيّرت أي إعداد بعدها، احذف التنبيه وأنشئه من جديد.

╔═══════════════════════════════════════════════════════╗
📊 الاستخدام العملي
╚═══════════════════════════════════════════════════════╝

▸ خط العنق هو المستوى الحاسم. قبل اختراقه: بنية محتملة. بعده: حدث مكتمل.

▸ الطرف الأبعد يحدد نقطة إبطال النموذج — إغلاق تحت أدنى القيعان الثلاثة، أو فوق أعلى القمم الثلاث.

▸ جدول المعلومات يعرض لكل جانب: نمط الهدف · سعر الهدف · الحالة الراهنة · عمر النموذج بالشموع.

▸ حقل العمر مهم: نموذج عمره خمسون شمعة ليس كنموذج عمره خمسمئة.

▸ النماذج الثلاثية أندر بطبيعتها من الثنائية. إن لم يظهر شيء على فريم مرتفع فهذا سلوك متوقع لا خلل — ارفع حد تماثل الأطراف أولًا، ثم راجع بوابة ارتفاع الاتجاه.

╔═══════════════════════════════════════════════════════╗
⚠ الإفصاح والقيود
╚═══════════════════════════════════════════════════════╝

▸ هذا المؤشر أداة تحليل بصري وتنظيم لرؤية السوق. لا يقدم توصيات شراء أو بيع، ولا يَعِد بنتائج.

▸ صحة الرسم شيء وأداء النموذج شيء آخر. المؤشر يرسم النماذج ويتتبع أحداثها بدقة، لكن قدرة النموذج نفسه على التنبؤ لم تُختبر إحصائيًا هنا ولا يُدعى بها.

▸ نطاق البحث محدود بآخر خمسين محورًا لكل جانب، فقد لا يُكتشف نموذج قديم جدًا.

▸ عند امتلاء ميزانية النماذج المتتبعة، قد يُستبدل نموذج حي بآخر أحدث. رفع "أقصى نماذج متتبعة" يقلل ذلك.

▸ استخدمه ضمن منهج تداول متكامل يشمل إدارة المخاطر، لا كمصدر قرار وحيد.

─────────────────────────────────────────────
The_lurker — Fawaz Al-Enezi | فواز العنزي
─────────────────────────────────────────────

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by PulseWire. Read more in the Terms of Use.