سرفصل ها

محتوای هر موضوع را با کلیک بر روی آن بخوانید

فهرست مطالب

دسته بندی ها
مدرسه فارکس
167
اخبار فارکس
146
آموزش معامله در بازار فارکس
112
آموزش سرمایه‌گذاری
23
آرشیو بولتن
17
مطالب مرتبط

بولتن شماره 36 - از پاریس تا وال استریت

6 خرداد 1403

ترید یا سرمایه گذاری؟ کدام پر سودتر است؟

17 اردیبهشت 1393

پیوت پوینت چیست؟ آموزش ورود به معامله با پیوت پوینت

27 خرداد 1400

آموزش 0 تا 100 تشخیص و رسم خطوط حمایت و مقاومت در فارکس

30 خرداد 1400

استراتژی معاملاتی پول هوشمند Smart Money Concept Lux Algo

پول هوشمند

فهرست مطالب

استراتژی معاملاتی پول هوشمند Smart Money Concept Lux Algo یک استراتژی فوق العاده قوی برای ترید با شناخت اسمارت مانی است که در این مقاله از دلتا کالج به بررسی آن خواهیم پرداخت.

Smart Money در فارکس چیست؟

برای استفاده از استراتژی معاملاتی اسمارت مانی ابتدا باید با مفهوم آن آشنا شوید. در سال‌های گذشته با پیدایش ابزارها و پلتفرم‌های معاملاتی جدید، توجه به بازارهای مالی و سرمایه‌گذاری در این بازارها افزایش یافته است همچنین حجم معاملات و سرمایه‌گذاری بازیگران اصلی بازارهای مالی مانند بانک‌ها و مؤسسات مالی نیز  به نوسانات بازار دامن زده است.

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

استراتژی پول هوشمند

اسمارت مانی حجم سرمایه‌گذاری با قدرت است که معمولاً در اختیار سرمایه گزاران و بازیگران اصلی بازار است. به عبارت دیگر این سرمایه‌گذاران بازارهای مالی با شناسایی موقعیت‌های مناسب با حجم سرمایه زیاد باعث ایجاد روندهای بزرگ در بازار خواهند شد.

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

مراحل اصلی رفتار سرمایه‌گذاران اصلی بازار

نظریه پول هوشمند (Smart Money) را بر اساس رفتار سرمایه‌گذران و بازیگران بزرگ به چهار مرحله تقسیم می‌کنیم. این چهار مرحله عبارتند از مرحله خاموشی، مرحله آگاهی، مرحله بی‌قراری و خروج از بازار و افزایش قیمت، مرحله توزیع و کاهش قیمت.

1- مرحله خاموشی

در مرحله اول، سرمایه گزاران بزرگ در زمان پایین بودن قیمت‌ها و با توجه به اخبار بنیادی پیش رو در بازار شروع به خرید خواهند کرد، اما نکته اینجاست که حجم بالایی از سرمایه خود را وارد بازار نمی‌کنند. چرا که می‌دانند با ورود حجم بالای نقدینگی باعث افزایش شدید قیمت خواهند شد و نمی‌توانند تمامی حجم معاملات خود را با قیمت پایین خرید کنند.

به همین دلیل سرمایه خود را طی دوره زمانی چند روزه یا چند هفته‌ای وارد بازار می‌کنند تا باعث نوسان یکباره قیمت نشوند و همیشه در این بازه زمانی، شیب حجم معاملات خرید را نسبت به حجم معاملات فروش مدیریت می‌کنند تا همیشه نسبت خرید به فروش بیشتر باشد، اما اختلاف آن زیاد نشود.

در این روش، قیمت تقریباً ثابت و یا با شیب کمی رو به بالا خواهد بود. در این زمان یک معامله گر باهوش و موفق با توجه به داده‌های بازار می‌داند که زمان خرید فرا رسیده است.

2- مرحله آگاهی

در مرحله دوم بازیگران اصلی بازار، با توجه به نزدیک شدن به زمان اخبار بنیادی، خریدهای خود را تکمیل کرده و به دنبال راه‌حل افزایش قیمت برای فروش در آینده‌ای نزدیک هستند.

در این زمان آن‌ها با واردکردن حجم سرمایه‌های بالا و دامن زدن به میزان تقاضا، از طریق خریدهای مستمر (به دلیل کمبود عرضه) یک موج صعودی قیمت را ایجاد می‌کنند.

در این مرحله با هیجان ایجاد شده در بازار، معامله گران خرد و تا حدی نادان به افزایش قیمت‌ها به بازیگران اصلی بازار کمک می‌کنند. این در حالی است که معامله‌گرانی که در مرحله قبل رفتار بزرگان را تشخیص داده‌اند معاملاتشان وارد سود خواهد شد.

3- مرحله بی‌قراری و خروج از بازار و افزایش قیمت

در مرحله سوم با توجه به این که معامله‌گران خُرد به دنبال خرید بیشتر و کسب سود از این روند ایجاد شده توسط اسمارت مانی هستند، معامله گران بزرگ به دنبال نقاط مناسب برای تارگت‌های سود خود می‌باشند و پس از آنکه به تارگت‌های قیمتی مد نظر خود رسیدند اقدام به خروج از بازار می‌کنند.

اما همانند زمانی که اقدام به خریدهای مرحله‌ای با حجم کم داشتند، به همین شکل عمل کرده تا بازار متوجه خروج آن‌ها نشود و قیمت‌ها به یکباره افت شدیدی را تجربه نکنند تا آن‌ها بتوانند معاملات خود را در قیمت‌های بالاتری به فروش برسانند.

در این مرحله معامله‌گران هوشمند با توجه به افزایش حجم فروش نسبت به  حجم خرید، سیگنال خروج را دریافت می‌کنند. اما معامله گران نادان همچنان به افزایش قیمت‌ها توجه دارند و همچنان به دنبال خرید در قیمت‌های بالا هستند.

4- مرحله توزیع و کاهش قیمت

در مرحله چهارم که بزرگان بازار حجم قابل توجهی از سرمایه خود را در قیمت‌های بالا از بازار خارج کرده‌اند و سود اصلی خود را از بازار کسب نموده‌اند، برای کاهش شدید قیمت و آماده شدن برای خریدهای آینده خود، اقدام به فروش گسترده با حجم‌های بالا می‌نمایند.

در این مرحله است که شاهد افزایش حجم عرضه نسبت به تقاضا در بازار خواهیم بود و معامله‌گران نادان در این مرحله همچنان امید به برگشت قیمت‌ها دارند و همچنان در بازار خواهند بود.
این چرخه در بازار ادامه خواهد داشت و معامله‌گران کم تجربه سرمایه خود را به معامله‌گران باتجربه و باهوش می‌دهند.

اکنون مفهوم ساز و کار اسمارت مانی را فهمیدیم. سؤال مهم این است که چگونه می‌توانیم رد پای آن را شناسایی کنیم تا کنار آن‌ها از سود خوبی بهره‌مند شویم و همچنین در تله ایجاد شده آن‌ها گرفتار نشویم.

لوکس آلگو با طراحی یک اندیکاتور به اسم اندیکاتور smart money concept توانسته به این سؤال پاسخ دهد تا ما بتوانیم با شناسایی این چهار مرحله در بازار کسب سود داشته باشیم و نقاط ورود و خروج مناسبی را در بازار شناسایی کنیم.

در ادامه این مقاله شما می‌توانید همراه با ما با اندیکاتور اسمارت مانی بیشتر آشنا شوید.

اندیکاتور اسمارت مانی لوکس آلگو (smart money concepts lux algo)

در این بخش از مقاله به معرفی و آموزش اندیکاتور اسمارت مانی خواهیم پرداخت. این اندیکاتور همه کاره، بازار را در مواردی که برای شناسایی ورود و خروج پول هوشمند نیاز است، به صورت دقیق و محاسبه شده نشان می دهد. این موارد عبارتند از:

  • زمان‌های واقعی بلوک های سفارش (نوسانات BOS و CHoCH)
  • نقاط و محدوده‌های پرمیوم (Premium)
  • دیسکانت (Discount)
  • بیشترین قیمت (high price) و کمترین قیمت (Low Price)
  • و…

این سطوح برای معامله‌گرانی که از استراتژی‌های متداول پرایس اکشن استفاده می‌کنند نیز دارای اهمیت بسیاری است.

در بسیاری از مقالات منتشر شده، اندیکاتور اسمارت مانی را یک اندیکاتور پرایس اکشن معرفی کرده‌اند، همچنین این اندیکاتور به شما ساختارهای سویینگ را نیز نمایش می‌دهد.

نحوه استفاده و فعال کردن اندیکاتور smart money در تریدینگ ویو

برای این که شما بتوانید اندیکاتور lux algo را فعال کنید، ابتدا باید در وب‌سایت Trading View به آدرس https://www.tradingview.com ثبت نام کنید. راهنمایی مربوط به نحوه ثبت نام در این وب‌سایت در  مقاله آموزش مقدماتی استفاده از وب‌سایت trading View قرار گرفته است.

تنظیمات در تریدینگ ویو
  • همانند تصویر موارد زیر را به ترتیب انجام دهید:
  • پس از ورود به وب‌سایت تریدینگ ویو در بخش چارت بر روی گزینه Indicators کلیک نمایید.
  • در قسمت سرچ اندیکاتورها Smart money concepts را سرچ کنید.
  • اندیکاتور smart money concepts [LuxAlgo] را انتخاب کنید.

امکانات اندیکاتور smart money concept Luxalgo

اندیکاتور اسمارت مانی شامل ویژگی‌های مربوط به SMC (شامل مفاهیم تحلیل تکنیکال کلاسیک، عرضه و تقاضا، الگوهای قیمت، سطوح حمایت و مقاومت) است که در زیر به آن ها اشاره می‌کنیم:

  • نمایش کلیه نوسانات داخلی و خارجی و سویینگ بازار به صورت لحظه‌ای (Full Internal & Swing Market Structure)
  • ساختار شکست قیمت (Break of structure – BOS)
  • تغییر ماهیت بازار (Change of Character – CHoCH
  • سفارش‌های بلوکی صعودی و نزولی
  • سطوح بالا و پایین قیمت (High and Low)
  • تشخیص شکاف‌های قیمتی (گپ)
  • نمایش بالاترین و پایین‌ترین قیمت در گذشته (Previous Highs and lows)
  • سطوح پریمیوم و دیسکانت (Premium and Discount zones as range)
  • سطوح حمایت و مقاومت (Support and Resistance Level)
  • سطوح پیوت (Pivot Point Level)

آموزش تنظیمات اندیکاتور اسمارت مانی

برای ورود به تنظیمات اندیکاتور smart money concept معمولاً پس از انتخاب اندیکاتورريال این تنظیمات برای شما نمایش داده می‌شود، اما درصورتی که صفحه مربوط به تنظیمات را بسته باشید، همانند تصویر زیر می‌توانید صفحه تنظیمات را باز کنید.

راهنمای تنظیمات

در قسمت بالا سمت چپ چارت نام اندیکاتور مشخص است (Smart Money Concepts [LuxAlgo])

با کلیک بر روی نام اندیکاتور کلیدهای مربوط به این اندیکاتور نمایش داده می‌شود که یکی از این کلیدها مربوط به بخش تنظیمات اندیکاتور خواهد بود. در صورتی که موس خود را بر روی هر یک از این نمادها ببرید گزینه setting را مشاهده خواهید کرد.

تنظیمات mode

Mode

این بخش به شما امکان می‌دهد که بتوانید تاریخچه گذشته اندیکاتور و یا حال را انتخاب کنید. به عبارت دیگر شما با انتخاب این بخش به عنوان Present داده‌های اخیر را می‌توانید مشاهده کنید و با انتخاب گزینه Historical که به صورت پیش فرض نیز انتخاب شده است، شما به داده‌های گذشته اندیکاتور دسترسی خواهید داشت.

تنظیمات present mode

present mode

تنظیمات هیستوری مود

historical mode

در این بخش شما می‌توانید استایل های متفاوتی برای نمایش اندیکاتور اسمارت مانی انتخاب کنید. با انتخاب گزینه Colored که به صورت پیش فرض انتخاب شده است، شما بخش‌های مختلف اندیکاتور را با چندین رنگ مشاهده خواهید کرد.

اما با انتخاب گزینه Monochrome شما بخش‌های مختلف اندیکاتور را به صورت تک رنگ مشاهده خواهید کرد.

تنظیمات style

Monochrome Style

تنظیمات color mode

Color Candles

با انتخاب این گزینه نمایش شمع‌ها (Candles) در چارت به صورت سویینگ در خواهد آمد.

در این بخش ساختارهای داخلی BOS و CHoCH را به صورت خط چین و همچنین به صورت برچسب (Labels)  نمایش می‌دهد.

در این بخش شما می‌توانید استراکچرها را در بازار صعودی (Bullish Structure) و همچنین بازار نزولی (Bearish Structure) بر اساس پارامترهای مختلف (BOS, CHoCH, ALL) همراه با رنگ بندی‌های مختلف تنظیم کنید. (به صورت پیش فرض رنگ سبز به معنی بازار صعودی و رنگ قرمز به معنی بازار نزولی است)

تنظیمات show internal

Show Internal Structure

Confluence Filter

با انتخاب این گزینه شما می‌توانید استراکچر هایی که از اهمیت کمتری برخوردار هستند را حذف نمایید.

Swing structure

در این بخش شما می‌توانید همانند بخش internal Structure رنگبندی سطوح سوینگ تریدینگ (Swing trading) در بازارهای صعودی و نزولی را تغییر دهید. این سطوح به صورت برچسب و خط‌های ممتد نمایش داده می‌شوند.

Show Swing Structure

Swing Point

تنظیمات نمایش سطوح سویینگ HH, HL,LH, LL

Internal Order Blocks

در این بخش  شما این امکان را دارید که سفارشات بلوکی داخلی را مشاهده کنید همچنین می‌توانید تعداد نمایش این بلوک‌ها را تغییر دهید .

Swing Order Blocks

در این بخش سفارشات لوک سویینگ را می‌توانید فعال کنید و همچنین می‌توانید تعداد آن‌ها را نیز مشخص کنید.

Equal Highs & Lows

فعال کردن برچسب‌گذاری EQH/EQL برای تشخیص بالاترین و پایین‌ترین قیمت‌های مساوی هم در چارت استفاده می‌شود.

Bars Confirmation

به شما این امکان را می‌دهد که مشخص کنید برای تأیید EQH/EQL ها چند کندل قبل را محاسبه نماید.

Fair Value Gaps

در این تنظیمات شما می‌توانید محدوده‌های مناطقی که در چارت گپ‌های بازار اتفاق افتاده است، را مشخص کنید.

Auto Threshold

با فعال کردن این بخش گپ‌هایی که ارزش کمتری دارند برای شما فیلتر شده و نمایش داده نمی‌شود.

Time frame

در این بخش شما می‌توانید تایم فرم‌های چارت خود را تنظیم کنید. در صورتی که بر روی Chart باشد، چارت جاری که اندیکاتور بر روی آن فعال است، محاسبه می‌شود.

Extend FVG

به شما این امکان را می‌دهد که مشخص کنید تعداد کندل‌هایی که در آن گپ اتفاق افتاده است، حداقل چند کندل باشد.

Highs & Lows MTF

در این بخش شما می‌توانید بالاترین و پایین‌ترین قیمت را در بازه‌های زمانی روزانه، هفتگی و ماهانه به عنوان یکی از سطوح مهم قیمتی مشخص نمایید.

Premium/ Discount Zones

با فعال کردن این گزینه مناطق پریمیوم، دیسکانت برای شما نمایش داده می‌شود.

کاربرد اندیکاتور Smart Money Concepts LuxAlgo

شما می‌توانید از برچسب‌های CHoCH و BOS که به صورت اتوماتیک محاسبه و نمایش داده می‌شوند، استفاده کنید تا نقاط شکست روند بازار برای شما برجسته شود، زیرا شکست این سطوح قیمتی امکان تعیین روند آتی بازار را نشان می‌دهد.

برای مثال در نمودار زیر می‌توانید سطوح پرتکرار که میزان بالاترین و پایین‌ترین قیمت را به شما نشان می‌دهد، به سادگی مشاهده کنید تا بتوانید در معاملات خود از این سطوح به عنوان نقاط ورود، خروج، حد سود و حد ضرر استفاده کنید.

کاربرد اندیکاتور اسمارت مانی

همچنین در مثالی دیگر که در تصویر زیر مشخص است، شما می‌توانید برچسب‌های سوینگ بازار را مشاهده کنید. این سطوح به عنوان BOS و CHoCH برچسب‌گذاری شده‌اند، اما دارای یک خط ثابت با نوشتاری بزرگتر هستند که نشان از تغییر روندهای بزرگتر بازار است.

معامله گران می‌توانند در زمان انجام معاملات با توجه به نوسانات بازار در گذشته، دید بزرگ‌تری در جهت روند بازار داشته باشند.

استفاده از اندیکاتور اسمارت مانی

بلوک‌های سفارش، مناطقی را برجسته می‌کنند که شرکت‌کنندگان نهادی در بازار پوزیشن‌های خود را باز می‌کنند. می‌توان از بلوک‌های سفارش برای تعیین ورود‌های تایید شده با اهداف بالقوه استفاده کرد، زیرا می‌توان انتظار داشت میزان زیادی نقدینگی در این بلوک‌های سفارش وجود داشته باشد.

در نمودار زیر می‌توانیم ۲ راه ورود به معاملات بالقوه را با ورودی‌های تایید شده مشاهده کنید. مسیر مشخص شده با رنگ قرمز می‌تواند ورودی کوتاه مدت بالقوه باشد که بلوک سفارش آبی در زیر را هدف قرار می‌دهد و مسیر مشخص شده با رنگ سبز یک روند طولانی بالقوه خواهد بود که بلوک‌های سفارش قرمز در بالا را هدف قرار می‌دهد.

اندیکاتور پول هوشمند

همان‌طور که در تصویر پایین مشاهده می‌کنید، ورودی تایید شده صعودی در این سناریو با مسیر سبز مشخص شده است.

از آنجایی که قیمت با وجود بلوک‌های سفارش بالا شکسته می‌شود، اندیکاتور اسمارت مانی آن‌ها را کاهش می‌دهد و باعث حذف آن‌ها می‌شود.

طبق منطق این بلوک‌های سفارش، آن‌ها همیشه ۵ عدد را (به‌طور پیش فرض) در نمودار نشان می‌دهند. بنابراین ما اکنون می‌توانیم سطوح قابل اجرای بیشتری را ببینیم.

نحوه استفاده از اندیکاتور پول هوشمند

در تصویر پایین مشاهده می‌کنید، اندیکاتور اسمارت مانی دارای ویژگی‌های بسیاری است که به معامله گر اجازه می‌دهد با پیدا کردن سطوح مهم و بالقوه، در معامله، بهترین قیمت را پیش‌بینی کند.

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

همچنین محدوده دیسکانت و پریمیوم 50 درصد فیبوناچی برای معامله گر نمایش داده شده است که بتواند در صورت لزوم، خروج محدوده خروج اضطراری را نیز تعیین کند.

اندیکاتور پول هوشمند در تردینگ ویو
نحوه استفاده از اندیکاتور پول هوشمند

در نهایت اندیکاتور تمامی اجزا و مفاهیم ورود و خروج اسمارت مانی را به شما نشان می‌دهد. به عبارتی این اندیکاتور می‌تواند تصویر واضح و مفیدی از روند بازار و ورود و خروج نقدینگی را با زبانی ساده و قابل مشاهده به شما نمایش دهد. این یکی از مهم‌ترین بخش‌های یک استراتژی پرایس اکشن است.

شما می‌توانید از این اندیکاتور در تریدینگ ویو برای تحلیل خود استفاده کنید و سپس معاملاتتان را در یک کارگزاری معتبر مانند دلتا اف ایکس انجام دهید. 

در پایان کد اسکریپت اندیکاتور اسمارت مانی را برای استفاده در دیگر پلتفرم‌های معاملاتی و تحلیلی برای شما در زیر قرار دادیم. این کد توسط شرکت LuxArgo برای عموم گذاشته شده است و استفاده از آن محدودیتی ندارد.

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/

// © LuxAlgo

//@version=5

indicator(“Smart Money Concepts [LuxAlgo]”, “Smart Money Concepts [LuxAlgo]”

  , overlay = true

  , max_labels_count = 500

  , max_lines_count = 500

  , max_boxes_count = 500

  , max_bars_back = 500)

//—————————————————————————–{

//Constants

//—————————————————————————–{

color TRANSP_CSS = #ffffff00

//Tooltips

string MODE_TOOLTIP          = ‘Allows to display historical Structure or only the recent ones’

string STYLE_TOOLTIP         = ‘Indicator color theme’

string COLOR_CANDLES_TOOLTIP = ‘Display additional candles with a color reflecting the current trend detected by structure’

string SHOW_INTERNAL         = ‘Display internal market structure’

string CONFLUENCE_FILTER     = ‘Filter non significant internal structure breakouts’

string SHOW_SWING            = ‘Display swing market Structure’

string SHOW_SWING_POINTS     = ‘Display swing point as labels on the chart’

string SHOW_SWHL_POINTS      = ‘Highlight most recent strong and weak high/low points on the chart’

string INTERNAL_OB           = ‘Display internal order blocks on the chart\n\nNumber of internal order blocks to display on the chart’

string SWING_OB              = ‘Display swing order blocks on the chart\n\nNumber of internal swing blocks to display on the chart’

string FILTER_OB             = ‘Method used to filter out volatile order blocks \n\nIt is recommended to use the cumulative mean range method when a low amount of data is available’

string SHOW_EQHL             = ‘Display equal highs and equal lows on the chart’

string EQHL_BARS             = ‘Number of bars used to confirm equal highs and equal lows’

string EQHL_THRESHOLD        = ‘Sensitivity threshold in a range (0, 1) used for the detection of equal highs & lows\n\nLower values will return fewer but more pertinent results’

string SHOW_FVG              = ‘Display fair values gaps on the chart’

string AUTO_FVG              = ‘Filter out non significant fair value gaps’

string FVG_TF                = ‘Fair value gaps timeframe’

string EXTEND_FVG            = ‘Determine how many bars to extend the Fair Value Gap boxes on chart’

string PED_ZONES             = ‘Display premium, discount, and equilibrium zones on chart’

//—————————————————————————–{

//Settings

//—————————————————————————–{

//General

//—————————————-{

mode = input.string(‘Historical’

  , options = [‘Historical’, ‘Present’]

  , group = ‘Smart Money Concepts’

  , tooltip = MODE_TOOLTIP)

style = input.string(‘Colored’

  , options = [‘Colored’, ‘Monochrome’]

  , group = ‘Smart Money Concepts’

  , tooltip = STYLE_TOOLTIP)

show_trend = input(false, ‘Color Candles’

  , group = ‘Smart Money Concepts’

  , tooltip = COLOR_CANDLES_TOOLTIP)

//—————————————-}

//Internal Structure

//—————————————-{

show_internals = input(true, ‘Show Internal Structure’

  , group = ‘Real Time Internal Structure’

  , tooltip = SHOW_INTERNAL)

show_ibull = input.string(‘All’, ‘Bullish Structure’

  , options = [‘All’, ‘BOS’, ‘CHoCH’]

  , inline = ‘ibull’

  , group = ‘Real Time Internal Structure’)

swing_ibull_css = input(#089981, ”

  , inline = ‘ibull’

  , group = ‘Real Time Internal Structure’)

//Bear Structure

show_ibear = input.string(‘All’, ‘Bearish Structure’

  , options = [‘All’, ‘BOS’, ‘CHoCH’]

  , inline = ‘ibear’

  , group = ‘Real Time Internal Structure’)

swing_ibear_css = input(#f23645, ”

  , inline = ‘ibear’

  , group = ‘Real Time Internal Structure’)

ifilter_confluence = input(false, ‘Confluence Filter’

  , group = ‘Real Time Internal Structure’

  , tooltip = CONFLUENCE_FILTER)

internal_structure_size = input.string(‘Tiny’, ‘Internal Label Size’

  , options = [‘Tiny’, ‘Small’, ‘Normal’]

  , group = ‘Real Time Internal Structure’)

//—————————————-}

//Swing Structure

//—————————————-{

show_Structure = input(true, ‘Show Swing Structure’

  , group = ‘Real Time Swing Structure’

  , tooltip = SHOW_SWING)

//Bull Structure

show_bull = input.string(‘All’, ‘Bullish Structure’

  , options = [‘All’, ‘BOS’, ‘CHoCH’]

  , inline = ‘bull’

  , group = ‘Real Time Swing Structure’)

swing_bull_css = input(#089981, ”

  , inline = ‘bull’

  , group = ‘Real Time Swing Structure’)

//Bear Structure

show_bear = input.string(‘All’, ‘Bearish Structure’

  , options = [‘All’, ‘BOS’, ‘CHoCH’]

  , inline = ‘bear’

  , group = ‘Real Time Swing Structure’)

swing_bear_css = input(#f23645, ”

  , inline = ‘bear’

  , group = ‘Real Time Swing Structure’)

swing_structure_size = input.string(‘Small’, ‘Swing Label Size’

  , options = [‘Tiny’, ‘Small’, ‘Normal’]

  , group = ‘Real Time Swing Structure’)

//Swings

show_swings = input(false, ‘Show Swings Points’

  , inline = ‘swings’

  , group = ‘Real Time Swing Structure’

  , tooltip = SHOW_SWING_POINTS)

length = input.int(50, ”

  , minval = 10

  , inline = ‘swings’

  , group = ‘Real Time Swing Structure’)

show_hl_swings = input(true, ‘Show Strong/Weak High/Low’

  , group = ‘Real Time Swing Structure’

  , tooltip = SHOW_SWHL_POINTS)

//—————————————-}

//Order Blocks

//—————————————-{

show_iob = input(true, ‘Internal Order Blocks’

  , inline = ‘iob’

  , group = ‘Order Blocks’

  , tooltip = INTERNAL_OB)

iob_showlast = input.int(5, ”

  , minval = 1

  , inline = ‘iob’

  , group = ‘Order Blocks’)

show_ob = input(false, ‘Swing Order Blocks’

  , inline = ‘ob’

  , group = ‘Order Blocks’

  , tooltip = SWING_OB)

ob_showlast = input.int(5, ”

  , minval = 1

  , inline = ‘ob’

  , group = ‘Order Blocks’)

ob_filter = input.string(‘Atr’, ‘Order Block Filter’

  , options = [‘Atr’, ‘Cumulative Mean Range’]

  , group = ‘Order Blocks’

  , tooltip = FILTER_OB)

ibull_ob_css = input.color(color.new(#3179f5, 80), ‘Internal Bullish OB’

  , group = ‘Order Blocks’)

ibear_ob_css = input.color(color.new(#f77c80, 80), ‘Internal Bearish OB’

  , group = ‘Order Blocks’)

bull_ob_css = input.color(color.new(#1848cc, 80), ‘Bullish OB’

  , group = ‘Order Blocks’)

bear_ob_css = input.color(color.new(#b22833, 80), ‘Bearish OB’

  , group = ‘Order Blocks’)

//—————————————-}

//EQH/EQL

//—————————————-{

show_eq = input(true, ‘Equal High/Low’

  , group = ‘EQH/EQL’

  , tooltip = SHOW_EQHL)

eq_len = input.int(3, ‘Bars Confirmation’

  , minval = 1

  , group = ‘EQH/EQL’

  , tooltip = EQHL_BARS)

eq_threshold = input.float(0.1, ‘Threshold’

  , minval = 0

  , maxval = 0.5

  , step = 0.1

  , group = ‘EQH/EQL’

  , tooltip = EQHL_THRESHOLD)

eq_size = input.string(‘Tiny’, ‘Label Size’

  , options = [‘Tiny’, ‘Small’, ‘Normal’]

  , group = ‘EQH/EQL’)

//—————————————-}

//Fair Value Gaps

//—————————————-{

show_fvg = input(false, ‘Fair Value Gaps’

  , group = ‘Fair Value Gaps’

  , tooltip = SHOW_FVG)

fvg_auto = input(true, “Auto Threshold”

  , group = ‘Fair Value Gaps’

  , tooltip = AUTO_FVG)

fvg_tf = input.timeframe(”, “Timeframe”

  , group = ‘Fair Value Gaps’

  , tooltip = FVG_TF)

bull_fvg_css = input.color(color.new(#00ff68, 70), ‘Bullish FVG’

  , group = ‘Fair Value Gaps’)

bear_fvg_css = input.color(color.new(#ff0008, 70), ‘Bearish FVG’

  , group = ‘Fair Value Gaps’)

fvg_extend = input.int(1, “Extend FVG”

  , minval = 0

  , group = ‘Fair Value Gaps’

  , tooltip = EXTEND_FVG)

//—————————————-}

//Previous day/week high/low

//—————————————-{

//Daily

show_pdhl = input(false, ‘Daily’

  , inline = ‘daily’

  , group = ‘Highs & Lows MTF’)

pdhl_style = input.string(‘⎯⎯⎯’, ”

  , options = [‘⎯⎯⎯’, ‘—-‘, ‘····’]

  , inline = ‘daily’

  , group = ‘Highs & Lows MTF’)

pdhl_css = input(#2157f3, ”

  , inline = ‘daily’

  , group = ‘Highs & Lows MTF’)

//Weekly

show_pwhl = input(false, ‘Weekly’

  , inline = ‘weekly’

  , group = ‘Highs & Lows MTF’)

pwhl_style = input.string(‘⎯⎯⎯’, ”

  , options = [‘⎯⎯⎯’, ‘—-‘, ‘····’]

  , inline = ‘weekly’

  , group = ‘Highs & Lows MTF’)

pwhl_css = input(#2157f3, ”

  , inline = ‘weekly’

  , group = ‘Highs & Lows MTF’)

//Monthly

show_pmhl = input(false, ‘Monthly’

  , inline = ‘monthly’

  , group = ‘Highs & Lows MTF’)

pmhl_style = input.string(‘⎯⎯⎯’, ”

  , options = [‘⎯⎯⎯’, ‘—-‘, ‘····’]

  , inline = ‘monthly’

  , group = ‘Highs & Lows MTF’)

pmhl_css = input(#2157f3, ”

  , inline = ‘monthly’

  , group = ‘Highs & Lows MTF’)

//—————————————-}

//Premium/Discount zones

//—————————————-{

show_sd = input(false, ‘Premium/Discount Zones’

  , group = ‘Premium & Discount Zones’

  , tooltip = PED_ZONES)

premium_css = input.color(#f23645, ‘Premium Zone’

  , group = ‘Premium & Discount Zones’)

eq_css = input.color(#b2b5be, ‘Equilibrium Zone’

  , group = ‘Premium & Discount Zones’)

discount_css = input.color(#089981, ‘Discount Zone’

  , group = ‘Premium & Discount Zones’)

//—————————————————————————–}

//Functions

//—————————————————————————–{

n = bar_index

atr = ta.atr(200)

cmean_range = ta.cum(high – low) / n

//HL Output function

hl() => [high, low]

//Get ohlc values function

get_ohlc()=> [close[1], open[1], high, low, high[2], low[2]]

//Display Structure function

display_Structure(x, y, txt, css, dashed, down, lbl_size)=>

    structure_line = line.new(x, y, n, y

      , color = css

      , style = dashed ? line.style_dashed : line.style_solid)

    structure_lbl = label.new(int(math.avg(x, n)), y, txt

      , color = TRANSP_CSS

      , textcolor = css

      , style = down ? label.style_label_down : label.style_label_up

      , size = lbl_size)

    if mode == ‘Present’

        line.delete(structure_line[1])

        label.delete(structure_lbl[1])

//Swings detection/measurements

swings(len)=>

    var os = 0

    upper = ta.highest(len)

    lower = ta.lowest(len)

    os := high[len] > upper ? 0 : low[len] < lower ? 1 : os[1]

    top = os == 0 and os[1] != 0 ? high[len] : 0

    btm = os == 1 and os[1] != 1 ? low[len] : 0

    [top, btm]

//Order block coordinates function

ob_coord(use_max, loc, target_top, target_btm, target_left, target_type)=>

    min = 99999999.

    max = 0.

    idx = 1

    ob_threshold = ob_filter == ‘Atr’ ? atr : cmean_range

    //Search for highest/lowest high within the structure interval and get range

    if use_max

        for i = 1 to (n – loc)-1

            if (high[i] – low[i]) < ob_threshold[i] * 2

                max := math.max(high[i], max)

                min := max == high[i] ? low[i] : min

                idx := max == high[i] ? i : idx

    else

        for i = 1 to (n – loc)-1

            if (high[i] – low[i]) < ob_threshold[i] * 2

                min := math.min(low[i], min)

                max := min == low[i] ? high[i] : max

                idx := min == low[i] ? i : idx

    array.unshift(target_top, max)

    array.unshift(target_btm, min)

    array.unshift(target_left, time[idx])

    array.unshift(target_type, use_max ? -1 : 1)

//Set order blocks

display_ob(boxes, target_top, target_btm, target_left, target_type, show_last, swing, size)=>

    for i = 0 to math.min(show_last-1, size-1)

        get_box = array.get(boxes, i)

        box.set_lefttop(get_box, array.get(target_left, i), array.get(target_top, i))

        box.set_rightbottom(get_box, array.get(target_left, i), array.get(target_btm, i))

        box.set_extend(get_box, extend.right)

        color css = na

        if swing

            if style == ‘Monochrome’

                css := array.get(target_type, i) == 1 ? color.new(#b2b5be, 80) : color.new(#5d606b, 80)

                border_css = array.get(target_type, i) == 1 ? #b2b5be : #5d606b

                box.set_border_color(get_box, border_css)

            else

                css := array.get(target_type, i) == 1 ? bull_ob_css : bear_ob_css

                box.set_border_color(get_box, css)

            box.set_bgcolor(get_box, css)

        else

            if style == ‘Monochrome’

                css := array.get(target_type, i) == 1 ? color.new(#b2b5be, 80) : color.new(#5d606b, 80)

            else

                css := array.get(target_type, i) == 1 ? ibull_ob_css : ibear_ob_css

            box.set_border_color(get_box, css)

            box.set_bgcolor(get_box, css)

//Line Style function

get_line_style(style) =>

    out = switch style

        ‘⎯⎯⎯’  => line.style_solid

        ‘—-‘ => line.style_dashed

        ‘····’ => line.style_dotted

//Set line/labels function for previous high/lows

phl(h, l, tf, css)=>

    var line high_line = line.new(na,na,na,na

      , xloc = xloc.bar_time

      , color = css

      , style = get_line_style(pdhl_style))

    var label high_lbl = label.new(na,na

      , xloc = xloc.bar_time

      , text = str.format(‘P{0}H’, tf)

      , color = TRANSP_CSS

      , textcolor = css

      , size = size.small

      , style = label.style_label_left)

    var line low_line = line.new(na,na,na,na

      , xloc = xloc.bar_time

      , color = css

      , style = get_line_style(pdhl_style))

    var label low_lbl = label.new(na,na

      , xloc = xloc.bar_time

      , text = str.format(‘P{0}L’, tf)

      , color = TRANSP_CSS

      , textcolor = css

      , size = size.small

      , style = label.style_label_left)

    hy = ta.valuewhen(h != h[1], h, 1)

    hx = ta.valuewhen(h == high, time, 1)

    ly = ta.valuewhen(l != l[1], l, 1)

    lx = ta.valuewhen(l == low, time, 1)

    if barstate.islast

        ext = time + (time – time[1])*20

        //High

        line.set_xy1(high_line, hx, hy)

        line.set_xy2(high_line, ext, hy)

        label.set_xy(high_lbl, ext, hy)

        //Low

        line.set_xy1(low_line, lx, ly)

        line.set_xy2(low_line, ext, ly)

        label.set_xy(low_lbl, ext, ly)

//—————————————————————————–}

//Global variables

//—————————————————————————–{

var trend = 0, var itrend = 0

var top_y = 0., var top_x = 0

var btm_y = 0., var btm_x = 0

var itop_y = 0., var itop_x = 0

var ibtm_y = 0., var ibtm_x = 0

var trail_up = high, var trail_dn = low

var trail_up_x = 0,  var trail_dn_x = 0

var top_cross = true,  var btm_cross = true

var itop_cross = true, var ibtm_cross = true

var txt_top = ”,  var txt_btm = ”

//Alerts

bull_choch_alert = false

bull_bos_alert   = false

bear_choch_alert = false

bear_bos_alert   = false

bull_ichoch_alert = false

bull_ibos_alert   = false

bear_ichoch_alert = false

bear_ibos_alert   = false

bull_iob_break = false

bear_iob_break = false

bull_ob_break = false

bear_ob_break = false

eqh_alert = false

eql_alert = false

//Structure colors

var bull_css = style == ‘Monochrome’ ? #b2b5be

  : swing_bull_css

var bear_css = style == ‘Monochrome’ ? #b2b5be

  : swing_bear_css

var ibull_css = style == ‘Monochrome’ ? #b2b5be

  : swing_ibull_css

var ibear_css = style == ‘Monochrome’ ? #b2b5be

  : swing_ibear_css

//Labels size

var internal_structure_lbl_size = internal_structure_size == ‘Tiny’

  ? size.tiny

  : internal_structure_size == ‘Small’

  ? size.small

  : size.normal

var swing_structure_lbl_size = swing_structure_size == ‘Tiny’

  ? size.tiny

  : swing_structure_size == ‘Small’

  ? size.small

  : size.normal

var eqhl_lbl_size = eq_size == ‘Tiny’

  ? size.tiny

  : eq_size == ‘Small’

  ? size.small

  : size.normal

//Swings

[top, btm] = swings(length)

[itop, ibtm] = swings(5)

//—————————————————————————–}

//Pivot High

//—————————————————————————–{

var line extend_top = na

var label extend_top_lbl = label.new(na, na

  , color = TRANSP_CSS

  , textcolor = bear_css

  , style = label.style_label_down

  , size = size.tiny)

if top

    top_cross := true

    txt_top := top > top_y ? ‘HH’ : ‘LH’

    if show_swings

        top_lbl = label.new(n-length, top, txt_top

          , color = TRANSP_CSS

          , textcolor = bear_css

          , style = label.style_label_down

          , size = swing_structure_lbl_size)

        if mode == ‘Present’

            label.delete(top_lbl[1])

    //Extend recent top to last bar

    line.delete(extend_top[1])

    extend_top := line.new(n-length, top, n, top

      , color = bear_css)

    top_y := top

    top_x := n – length

    trail_up := top

    trail_up_x := n – length

if itop

    itop_cross := true

    itop_y := itop

    itop_x := n – 5

//Trailing maximum

trail_up := math.max(high, trail_up)

trail_up_x := trail_up == high ? n : trail_up_x

//Set top extension label/line

if barstate.islast and show_hl_swings

    line.set_xy1(extend_top, trail_up_x, trail_up)

    line.set_xy2(extend_top, n + 20, trail_up)

    label.set_x(extend_top_lbl, n + 20)

    label.set_y(extend_top_lbl, trail_up)

    label.set_text(extend_top_lbl, trend < 0 ? ‘Strong High’ : ‘Weak High’)

//—————————————————————————–}

//Pivot Low

//—————————————————————————–{

var line extend_btm = na

var label extend_btm_lbl = label.new(na, na

  , color = TRANSP_CSS

  , textcolor = bull_css

  , style = label.style_label_up

  , size = size.tiny)

if btm

    btm_cross := true

    txt_btm := btm < btm_y ? ‘LL’ : ‘HL’

    if show_swings

        btm_lbl = label.new(n – length, btm, txt_btm

          , color = TRANSP_CSS

          , textcolor = bull_css

          , style = label.style_label_up

          , size = swing_structure_lbl_size)

        if mode == ‘Present’

            label.delete(btm_lbl[1])

    //Extend recent btm to last bar

    line.delete(extend_btm[1])

    extend_btm := line.new(n – length, btm, n, btm

      , color = bull_css)

    btm_y := btm

    btm_x := n-length

    trail_dn := btm

    trail_dn_x := n-length

if ibtm

    ibtm_cross := true

    ibtm_y := ibtm

    ibtm_x := n – 5

//Trailing minimum

trail_dn := math.min(low, trail_dn)

trail_dn_x := trail_dn == low ? n : trail_dn_x

//Set btm extension label/line

if barstate.islast and show_hl_swings

    line.set_xy1(extend_btm, trail_dn_x, trail_dn)

    line.set_xy2(extend_btm, n + 20, trail_dn)

    label.set_x(extend_btm_lbl, n + 20)

    label.set_y(extend_btm_lbl, trail_dn)

    label.set_text(extend_btm_lbl, trend > 0 ? ‘Strong Low’ : ‘Weak Low’)

//—————————————————————————–}

//Order Blocks Arrays

//—————————————————————————–{

var iob_top = array.new_float(0)

var iob_btm = array.new_float(0)

var iob_left = array.new_int(0)

var iob_type = array.new_int(0)

var ob_top = array.new_float(0)

var ob_btm = array.new_float(0)

var ob_left = array.new_int(0)

var ob_type = array.new_int(0)

//—————————————————————————–}

//Pivot High BOS/CHoCH

//—————————————————————————–{

//Filtering

var bull_concordant = true

if ifilter_confluence

    bull_concordant := high – math.max(close, open) > math.min(close, open – low)

//Detect internal bullish Structure

if ta.crossover(close, itop_y) and itop_cross and top_y != itop_y and bull_concordant

    bool choch = na

    if itrend < 0

        choch := true

        bull_ichoch_alert := true

    else

        bull_ibos_alert := true

    txt = choch ? ‘CHoCH’ : ‘BOS’

    if show_internals

        if show_ibull == ‘All’ or (show_ibull == ‘BOS’ and not choch) or (show_ibull == ‘CHoCH’ and choch)

            display_Structure(itop_x, itop_y, txt, ibull_css, true, true, internal_structure_lbl_size)

    itop_cross := false

    itrend := 1

    //Internal Order Block

    if show_iob

        ob_coord(false, itop_x, iob_top, iob_btm, iob_left, iob_type)

//Detect bullish Structure

if ta.crossover(close, top_y) and top_cross

    bool choch = na

    if trend < 0

        choch := true

        bull_choch_alert := true

    else

        bull_bos_alert := true

    txt = choch ? ‘CHoCH’ : ‘BOS’

    if show_Structure

        if show_bull == ‘All’ or (show_bull == ‘BOS’ and not choch) or (show_bull == ‘CHoCH’ and choch)

            display_Structure(top_x, top_y, txt, bull_css, false, true, swing_structure_lbl_size)

    //Order Block

    if show_ob

        ob_coord(false, top_x, ob_top, ob_btm, ob_left, ob_type)

    top_cross := false

    trend := 1

//—————————————————————————–}

//Pivot Low BOS/CHoCH

//—————————————————————————–{

var bear_concordant = true

if ifilter_confluence

    bear_concordant := high – math.max(close, open) < math.min(close, open – low)

//Detect internal bearish Structure

if ta.crossunder(close, ibtm_y) and ibtm_cross and btm_y != ibtm_y and bear_concordant

    bool choch = false

    if itrend > 0

        choch := true

        bear_ichoch_alert := true

    else

        bear_ibos_alert := true

    txt = choch ? ‘CHoCH’ : ‘BOS’

    if show_internals

        if show_ibear == ‘All’ or (show_ibear == ‘BOS’ and not choch) or (show_ibear == ‘CHoCH’ and choch)

            display_Structure(ibtm_x, ibtm_y, txt, ibear_css, true, false, internal_structure_lbl_size)

    ibtm_cross := false

    itrend := -1

    //Internal Order Block

    if show_iob

        ob_coord(true, ibtm_x, iob_top, iob_btm, iob_left, iob_type)

//Detect bearish Structure

if ta.crossunder(close, btm_y) and btm_cross

    bool choch = na

    if trend > 0

        choch := true

        bear_choch_alert := true

    else

        bear_bos_alert := true

    txt = choch ? ‘CHoCH’ : ‘BOS’

    if show_Structure

        if show_bear == ‘All’ or (show_bear == ‘BOS’ and not choch) or (show_bear == ‘CHoCH’ and choch)

            display_Structure(btm_x, btm_y, txt, bear_css, false, false, swing_structure_lbl_size)

    //Order Block

    if show_ob

        ob_coord(true, btm_x, ob_top, ob_btm, ob_left, ob_type)

    btm_cross := false

    trend := -1

//—————————————————————————–}

//Order Blocks

//—————————————————————————–{

//Set order blocks

var iob_boxes = array.new_box(0)

var ob_boxes = array.new_box(0)

//Delete internal order blocks box coordinates if top/bottom is broken

for element in iob_type

    index = array.indexof(iob_type, element)

    if close < array.get(iob_btm, index) and element == 1

        array.remove(iob_top, index)

        array.remove(iob_btm, index)

        array.remove(iob_left, index)

        array.remove(iob_type, index)

        bull_iob_break := true

    else if close > array.get(iob_top, index) and element == -1

        array.remove(iob_top, index)

        array.remove(iob_btm, index)

        array.remove(iob_left, index)

        array.remove(iob_type, index)

        bear_iob_break := true

//Delete internal order blocks box coordinates if top/bottom is broken

for element in ob_type

    index = array.indexof(ob_type, element)

    if close < array.get(ob_btm, index) and element == 1

        array.remove(ob_top, index)

        array.remove(ob_btm, index)

        array.remove(ob_left, index)

        array.remove(ob_type, index)

        bull_ob_break := true

    else if close > array.get(ob_top, index) and element == -1

        array.remove(ob_top, index)

        array.remove(ob_btm, index)

        array.remove(ob_left, index)

        array.remove(ob_type, index)

        bear_ob_break := true

iob_size = array.size(iob_type)

ob_size = array.size(ob_type)

if barstate.isfirst

    if show_iob

        for i = 0 to iob_showlast-1

            array.push(iob_boxes, box.new(na,na,na,na, xloc = xloc.bar_time))

    if show_ob

        for i = 0 to ob_showlast-1

            array.push(ob_boxes, box.new(na,na,na,na, xloc = xloc.bar_time))

if iob_size > 0

    if barstate.islast

        display_ob(iob_boxes, iob_top, iob_btm, iob_left, iob_type, iob_showlast, false, iob_size)

if ob_size > 0

    if barstate.islast

        display_ob(ob_boxes, ob_top, ob_btm, ob_left, ob_type, ob_showlast, true, ob_size)

//—————————————————————————–}

//EQH/EQL

//—————————————————————————–{

var eq_prev_top = 0.

var eq_top_x = 0

var eq_prev_btm = 0.

var eq_btm_x = 0

if show_eq

    eq_top = ta.pivothigh(eq_len, eq_len)

    eq_btm = ta.pivotlow(eq_len, eq_len)

    if eq_top

        max = math.max(eq_top, eq_prev_top)

        min = math.min(eq_top, eq_prev_top)

        if max < min + atr * eq_threshold

            eqh_line = line.new(eq_top_x, eq_prev_top, n-eq_len, eq_top

              , color = bear_css

              , style = line.style_dotted)

            eqh_lbl = label.new(int(math.avg(n-eq_len, eq_top_x)), eq_top, ‘EQH’

              , color = #00000000

              , textcolor = bear_css

              , style = label.style_label_down

              , size = eqhl_lbl_size)

            if mode == ‘Present’

                line.delete(eqh_line[1])

                label.delete(eqh_lbl[1])

            eqh_alert := true

        eq_prev_top := eq_top

        eq_top_x := n-eq_len

    if eq_btm

        max = math.max(eq_btm, eq_prev_btm)

        min = math.min(eq_btm, eq_prev_btm)

        if min > max – atr * eq_threshold

            eql_line = line.new(eq_btm_x, eq_prev_btm, n-eq_len, eq_btm

              , color = bull_css

              , style = line.style_dotted)

            eql_lbl = label.new(int(math.avg(n-eq_len, eq_btm_x)), eq_btm, ‘EQL’

              , color = #00000000

              , textcolor = bull_css

              , style = label.style_label_up

              , size = eqhl_lbl_size)

            eql_alert := true

            if mode == ‘Present’

                line.delete(eql_line[1])

                label.delete(eql_lbl[1])

        eq_prev_btm := eq_btm

        eq_btm_x := n-eq_len

//—————————————————————————–}

//Fair Value Gaps

//—————————————————————————–{

var bullish_fvg_max = array.new_box(0)

var bullish_fvg_min = array.new_box(0)

var bearish_fvg_max = array.new_box(0)

var bearish_fvg_min = array.new_box(0)

float bullish_fvg_avg = na

float bearish_fvg_avg = na

bullish_fvg_cnd = false

bearish_fvg_cnd = false

[src_c1, src_o1, src_h, src_l, src_h2, src_l2] =

  request.security(syminfo.tickerid, fvg_tf, get_ohlc())

if show_fvg

    delta_per = (src_c1 – src_o1) / src_o1 * 100

    change_tf = timeframe.change(fvg_tf)

    threshold = fvg_auto ? ta.cum(math.abs(change_tf ? delta_per : 0)) / n * 2

      : 0

    //FVG conditions

    bullish_fvg_cnd := src_l > src_h2

      and src_c1 > src_h2

      and delta_per > threshold

      and change_tf

    bearish_fvg_cnd := src_h < src_l2

      and src_c1 < src_l2

      and -delta_per > threshold

      and change_tf

    //FVG Areas

    if bullish_fvg_cnd

        array.unshift(bullish_fvg_max, box.new(n-1, src_l, n + fvg_extend, math.avg(src_l, src_h2)

          , border_color = bull_fvg_css

          , bgcolor = bull_fvg_css))

        array.unshift(bullish_fvg_min, box.new(n-1, math.avg(src_l, src_h2), n + fvg_extend, src_h2

          , border_color = bull_fvg_css

          , bgcolor = bull_fvg_css))

    if bearish_fvg_cnd

        array.unshift(bearish_fvg_max, box.new(n-1, src_h, n + fvg_extend, math.avg(src_h, src_l2)

          , border_color = bear_fvg_css

          , bgcolor = bear_fvg_css))

        array.unshift(bearish_fvg_min, box.new(n-1, math.avg(src_h, src_l2), n + fvg_extend, src_l2

          , border_color = bear_fvg_css

          , bgcolor = bear_fvg_css))

    for bx in bullish_fvg_min

        if low < box.get_bottom(bx)

            box.delete(bx)

            box.delete(array.get(bullish_fvg_max, array.indexof(bullish_fvg_min, bx)))

    for bx in bearish_fvg_max

        if high > box.get_top(bx)

            box.delete(bx)

            box.delete(array.get(bearish_fvg_min, array.indexof(bearish_fvg_max, bx)))

//—————————————————————————–}

//Previous day/week high/lows

//—————————————————————————–{

//Daily high/low

[pdh, pdl] = request.security(syminfo.tickerid, ‘D’, hl()

  , lookahead = barmerge.lookahead_on)

//Weekly high/low

[pwh, pwl] = request.security(syminfo.tickerid, ‘W’, hl()

  , lookahead = barmerge.lookahead_on)

//Monthly high/low

[pmh, pml] = request.security(syminfo.tickerid, ‘M’, hl()

  , lookahead = barmerge.lookahead_on)

//Display Daily

if show_pdhl

    phl(pdh, pdl, ‘D’, pdhl_css)

//Display Weekly

if show_pwhl

    phl(pwh, pwl, ‘W’, pwhl_css)

//Display Monthly

if show_pmhl

    phl(pmh, pml, ‘M’, pmhl_css)

//—————————————————————————–}

//Premium/Discount/Equilibrium zones

//—————————————————————————–{

var premium = box.new(na, na, na, na

  , bgcolor = color.new(premium_css, 80)

  , border_color = na)

var premium_lbl = label.new(na, na

  , text = ‘Premium’

  , color = TRANSP_CSS

  , textcolor = premium_css

  , style = label.style_label_down

  , size = size.small)

var eq = box.new(na, na, na, na

  , bgcolor = color.rgb(120, 123, 134, 80)

  , border_color = na)

var eq_lbl = label.new(na, na

  , text = ‘Equilibrium’

  , color = TRANSP_CSS

  , textcolor = eq_css

  , style = label.style_label_left

  , size = size.small)

var discount = box.new(na, na, na, na

  , bgcolor = color.new(discount_css, 80)

  , border_color = na)

var discount_lbl = label.new(na, na

  , text = ‘Discount’

  , color = TRANSP_CSS

  , textcolor = discount_css

  , style = label.style_label_up

  , size = size.small)

//Show Premium/Discount Areas

if barstate.islast and show_sd

    avg = math.avg(trail_up, trail_dn)

    box.set_lefttop(premium, math.max(top_x, btm_x), trail_up)

    box.set_rightbottom(premium, n, .95 * trail_up + .05 * trail_dn)

    label.set_xy(premium_lbl, int(math.avg(math.max(top_x, btm_x), n)), trail_up)

    box.set_lefttop(eq, math.max(top_x, btm_x), .525 * trail_up + .475*trail_dn)

    box.set_rightbottom(eq, n, .525 * trail_dn + .475 * trail_up)

    label.set_xy(eq_lbl, n, avg)

    box.set_lefttop(discount, math.max(top_x, btm_x), .95 * trail_dn + .05 * trail_up)

    box.set_rightbottom(discount, n, trail_dn)

    label.set_xy(discount_lbl, int(math.avg(math.max(top_x, btm_x), n)), trail_dn)

//—————————————————————————–}

//Trend

//—————————————————————————–{

var color trend_css = na

if show_trend

    if style == ‘Colored’

        trend_css := itrend == 1 ? bull_css : bear_css

    else if style == ‘Monochrome’

        trend_css := itrend == 1 ? #b2b5be : #5d606b

plotcandle(open, high, low, close

  , color = trend_css

  , wickcolor = trend_css

  , bordercolor = trend_css

  , editable = false)

//—————————————————————————–}

//Alerts

//—————————————————————————–{

//Internal Structure

alertcondition(bull_ibos_alert, ‘Internal Bullish BOS’, ‘Internal Bullish BOS formed’)

alertcondition(bull_ichoch_alert, ‘Internal Bullish CHoCH’, ‘Internal Bullish CHoCH formed’)

alertcondition(bear_ibos_alert, ‘Internal Bearish BOS’, ‘Internal Bearish BOS formed’)

alertcondition(bear_ichoch_alert, ‘Internal Bearish CHoCH’, ‘Internal Bearish CHoCH formed’)

//Swing Structure

alertcondition(bull_bos_alert, ‘Bullish BOS’, ‘Internal Bullish BOS formed’)

alertcondition(bull_choch_alert, ‘Bullish CHoCH’, ‘Internal Bullish CHoCH formed’)

alertcondition(bear_bos_alert, ‘Bearish BOS’, ‘Bearish BOS formed’)

alertcondition(bear_choch_alert, ‘Bearish CHoCH’, ‘Bearish CHoCH formed’)

//order Blocks

alertcondition(bull_iob_break, ‘Bullish Internal OB Breakout’, ‘Price broke bullish internal OB’)

alertcondition(bear_iob_break, ‘Bearish Internal OB Breakout’, ‘Price broke bearish internal OB’)

alertcondition(bull_ob_break, ‘Bullish Swing OB Breakout’, ‘Price broke bullish swing OB’)

alertcondition(bear_ob_break, ‘Bearish Swing OB Breakout’, ‘Price broke bearish swing OB’)

//EQH/EQL

alertcondition(eqh_alert, ‘Equal Highs’, ‘Equal highs detected’)

alertcondition(eql_alert, ‘Equal Lows’, ‘Equal lows detected’)

//FVG

alertcondition(bullish_fvg_cnd, ‘Bullish FVG’, ‘Bullish FVG formed’)

alertcondition(bearish_fvg_cnd, ‘Bearish FVG’, ‘Bearish FVG formed’)

//—————————————————————————–}

سوالات متداول

پول هوشمند یا اسمارت مانی چیست؟

اسمارت مانی (Smart Money) حجم بالایی از نقدینگی است که توسط بزرگان بازار هوشمندانه و آرام وارد می‌شود تا یک حرکت بزرگ را طی چند روز ایجاد کند.

پول هوشمند چطور وارد می شود؟

زمانی که شرایط عمومی بازار مساعد به نظر می‌رسد، اسمارت مانی می‌تواند قیمت سهام را افزایش دهد. سهام را به معامله گران/سرمایه گذاران ناآگاه بفروشید.

آیا استراتژی پول هوشمند کار می کند؟

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

اشتراک گذاری

دیدگاهتان را بنویسید

4 پاسخ

  1. بسیار عالی بود، واقعا لذت بردم. بیان شیوایی داشتید. به غیر از توضیح کامل اندیکاتور برای من یک کلاس آموزشی در بخش های دیگر بازار مالی بود. پربرکت باشید

  2. سلام ممنون از مطلب مفیدتون یک سوال داشتم
    اندیکاتور اسمارت مانی چه زمانی فروش رو نشون میده؟

    1. سلام دوست عزیز، خوشحالیم که این مطلب براتون مفید بوده ??
      در اندیکاتور smart money concept محل های آبی و قرمز در حقیقت فضای خرید و فروش است که شما در حرکت صعودی وقتی به محدوده ی قرمز میرسید، مناسب فروش است و برعکس زمانی که در حرکت نزولی به فضای آبی میرسید، مناسب خرید است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مقالات مرتبط

سازمان‌های سیاست‌گذار مالی در حوزه اروپا و آمریکا، تاثیرات غیرقابل انکاری در چشم‌انداز آینده اقتصاد و بازارهای...

ترید یا سرمایه گذاری چالشی ترین موضوعی است که قبل از ورود به بازار باید برای خود...

پیوت پوینت درتعیین مناسب‌ترین نقطه ورود به بازار فارکس به شما کمک می کند. اگر شما نیز...

سطوح و خطوط حمایت و مقاومت در فارکس که با نام لاتین Support and resistance شناخته می...

ارز دیجیتال نوعی پول الکترونیکی غیرمتمرکز است که برپایه فناوری بلاک چین بنا نهاده شده است. همانطور...

مقاله ای که درباره فورک (Fork) رمز ارزها پیش روی شماست، میتواند راهکاری برای افزایش سرمایه کیف...