Awakening CHECHLISTThe Awakening Checklist indicator is a tool designed to help traders evaluate certain key market conditions and elements before making trading decisions. It consists of a series of questions that the trader must answer using the options "Yes", "No" or "N/A" (not applicable).
“Has Asia Session ended?” : This question aims to determine if the Asian trading session has ended. The answer to this question can influence trading strategies depending on market conditions.
“Have you identified potential medium induction?” : This question concerns the identification of potential average inductions on the market. Recognizing these inductions can help traders anticipate future price movements.
"Have you identified potential PoI's": This question asks about the identification of potential points of interest on the market. These points of interest can indicate areas of significant support or resistance.
"Have you identified in which direction they are creating lQ?" : This question aims to determine in which direction market participants create liquidity (lQ). Understanding this dynamic can help make informed trade decisions.
“Have they induced Asia Range”: This question concerns the induction of the Asian range by market participants. Recognizing this induction can be important in assessing future price movements.
“Have you had a medium induction”: This question asks about the presence of a medium induction on the market. The answer to this question can influence trading prospects.
“Do you have a BoS away from the induction”: This question aims to find out if the trader has an offer (BoS) far from the identified induction. This can be a risk management strategy.
"Doas your induction PoI have imbalance": This question concerns the imbalance of points of interest (PoI) linked to induction. Recognizing this imbalance can help anticipate price movements.
“Do you have a valid target in mind”: This question aims to find out if the trader has a clear trading objective in mind. Having a goal can help guide trading decisions and manage risk.
Pesquisar nos scripts por "BOS"
Smart Money Setup 02 [TradingFinder] Mitigated Major OB Proof🔵 Introduction
"Smart money" is money invested by knowledgeable individuals at the right time, and this investment can yield the highest returns.
The concept we focus on in this indicator is whether the market is in an uptrend or downtrend. The market briefly takes a weak and reversal trend with "Minor BoS" without being able to break the major pivot.
In the next step, it returns to its main trend with a strong bullish move and continues its trend with a "Major BoS". The "order block" behind this rapid and powerful movement can be a valid order block for trading.
To better understand this setup, please refer to the explanations in the two images below.
Bullish Setup Details :
Bearish Setup Details :
🔵 How to Use
After adding the indicator to the chart, you should wait for trading opportunities to form. By changing the "Time Frame" and "Period Pivot", you can see different trading positions. In general, the lower the "Time Frame" and "Period Pivot", the higher the likelihood of forming trading opportunities.
Bullish Setup Details on Chart :
Bearish Setup Details on Chart :
You can access "Period Pivot" via settings as an input.
Liquidity Engulfing & Displacement [MsF]Japanese below / 日本語説明は英文の後にあります。
-------------------------
*This indicator is based on upslidedown's "Liquidity Engulfing Candles ". It's a very cool indicator. thank you.
It has 2 functions: show the Liquidity Engulfing on HTF and candle color change when displacement occurs.
=== Function description ===
1. Liquidity Engulfing on HTF
This indicator gives Liquidity Engulfing signals not only for the current candle, but also for H4 and H1 on HTF.
You can use that a bullish engulfing on H1 is a BOS on m5 and on H4 is a BOS on m15. It uses the theory of stop hunt from ICT.
Also, It's possible to fire alert.
2. Displacement
Change the color display of the candlesticks when a bullish candleStick or bearish candleStick is attached. Furthermore, by enabling the "Require FVG" option, you can easily discover the FVG (Fair Value Gap). It is a very useful function for ICT trading.
When H1 candle takes liquidity from one side and moves with an explosive move to the other side of the previous candle (displacement), it creates break of market structure on M5. Entry on discount FVG or OTE with stop loss at or below the stop hunt wick.
=== Parameter description ===
- Liquidity engulfing candles(LEC) SETTING
- Show H1 LEC … Whether to show LEC for H1
- Show H4 LEC … Whether to show LEC for H4
- Show Current LEC … Whether to show LEC for current timeframe
- Apply Stop Hunt Wick Filter … Require candle wick into prior candle retracement zone
- Apply Close Filter … Require LL/HH on candle in order to print a valid engulfing signal
- DISPLACEMENT SETTING
- Require FVG … Draw only when FVG occurs
- Displacement Type … Displacement from open to close? or from high to low?
- Displacement Length … Period over which to calculate the standard deviation
- Displacement Strength … The larger the number, the stronger the displacement detected
-------------------------
2つの機能があります: 上位足のLiquidity engulfing(流動性獲得)を表示することと、大きな変位が発生したときにローソク足の色を変更することです。
=== 機能説明 ===
1. 上位足のLiquidity engulfing
このインジケーターは、現在のローソク足だけでなく、上位足の H4 および H1 に対してもLiquidity engulfingシグナルを提供します。
H1はm5、H4はm15での使用を推奨します。これはICTのストップハント理論を活用しています。また、アラートを発することも可能です。
2. 変位(DISPLACEMENT)
大きな陽線、陰線を付けた場合に、そのローソク足をカラー表示を変更します。
さらに"Require FVG"オプションを有効にすることで、FVG(Fair Value Gap)を容易に発見することができます。ICTトレードにを行うにあたり大変有用な機能となっています。
=== パラメータの説明 ===
- Liquidity engulfing candles(LEC) SETTING
- Show H1 LEC … H1のLECを表示するかどうか
- Show H4 LEC … H4のLECを表示するかどうか
- Show Current LEC … 現在の期間の LEC を表示するかどうか
- Apply Stop Hunt Wick Filter … ハラミ足、もしくは包み足になっている場合のみに検知させる
- Apply Close Filter … 1つ前のローソクよりも終値で超えていた場合のみに検知させる
- DISPLACEMENT SETTING
- Require FVG … FVG発生時のみ描画する
- Displacement Type … openからcloseまでの変位か?highからlowまでの変位か?
- Displacement Length … 標準偏差を計算する期間
- Displacement Strength … 変位の強さ(数字が大きいほど強い変位を検出)
ICT HTF Liquidity Levels /w Alert [MsF]Japanese below / 日本語説明は英文の後にあります。
-------------------------
*This indicator is based on sbtnc's "HTF Liquidity Levels". It's a very cool indicator. thank you.
It has 3 functions: visualization of HTF liquidity (with alert), candle color change when displacement occurs, and MSB (market structure break) line display.
=== Function description ===
1. HTF liquidity (with alert)
Lines visualize the liquidity pools on the HTF bars. Alerts can be set for each TF's line.
Once the price reaches the line, the line is repaint.
To put it plainly, the old line disappears and a new line appears. The line that disappeared remains as a purged line. (It is also possible to hide the purged line with a parameter)
The alert will be triggered at the moment the line disappears. An alert will be issued when you touch the HTF's liquid pools where the loss is accumulated, so you can notice the stop hunting with the alert.
This alert is an original feature of this indicator.
The timeframe of the HTF can't modify. You can get Monthly, weekly, daily and H1 and H4.
Each timeframe displays the 3 most recent lines. By narrowing it down to 3, it is devised to make it easier to see visually. (This indicator original)
2. Displacement
Change the color display of the candlesticks when a bullish candle stick or bearish candle stick is attached. Furthermore, by enabling the "Require FVG" option, you can easily discover the FVG (Fair Value Gap). It is a very useful function for ICT trading.
3. MSB (market structure break)
Displays High/Low lines for the period specified by the parameter. It is useful for discovering BoS & CHoCH/MSS, which are important in ICT trading.
=== Parameter description ===
- HTF LIQUIDITY
- Daily … Daily line display settings (color, line width)
- Weekly … Weekly line display settings (color, line width)
- Monthly … Monthly line display settings (color, line width)
- INTRADAY LIQUIDITY
- 1H … 1H line display settings (color, line width)
- 4H … 4H line display settings (color, line width)
- PURGED LIQUIDITY … Display setting of the line once the candle reaches
- Show Purge Daily … Daily purged line display/non-display setting
- Show Purge Weekly … Weekly purged line display/non-display setting
- Show Purge Monthly … Monthly purged line display/non-display setting
- Show Purge 1H … 1H purged line display/non-display setting
- Show Purge 4H … 4H purged line display/non-display setting
- MARKET STRUCTURE BREAK - MBS
- Loopback … Period for searching High/Low
- DISPLACEMENT FOR FVG
- Require FVG … Draw only when FVG occurs
- Displacement Type … Displacement from open to close? or from high to low?
- Displacement Length … Period over which to calculate the standard deviation
- Displacement Strength … The larger the number, the stronger the displacement detected
-------------------------
このインジケータはsbtncさんの"HTF Liquidity Levels"をベースに作成しています。
上位足流動性の可視化(アラート付き)、変位発生時のローソク色変更、MSB(market structure break)ライン表示の3つの機能を有します。
<機能説明>
■上位足流動性の可視化
上位足の流動性の吹き溜まり(ストップが溜まっているところ)をラインで可視化します。ラインにはアラートを設定することが可能です。
一度価格がラインに到達するとそのラインは再描画されます。
平たく言うと、今までのラインが消えて新しいラインが出現する。という事です。
消えたラインはpurgeラインとして残ります。(パラメータでpurgeラインを非表示にすることも可能です)
アラートはラインが消える瞬間に発報します。上位足の損切り溜まってるところにタッチするとアラートを発報するので、アラートにてストップ狩りに気づくことができます。
このアラート発報については本インジケータオリジナルの機能となります。
表示可能な上位足のタイムフレームは固定です。月足、週足、日足およびH1とH4を表示することができます。
各タイムフレーム、直近から3つのラインを表示します。3つに絞ることで視覚的に見やすく工夫しています。(本インジケータオリジナル)
■変位発生時のローソク色変更
大きな陽線、陰線を付けた場合に、そのローソク足をカラー表示を変更します。
さらに"Require FVG"オプションを有効にすることで、FVG(Fair Value Gap)を容易に発見することができます。ICTトレードにを行うにあたり大変有用な機能となっています。
■MSB(market structure break)ライン表示
パラメータで指定した期間のHigh/Lowをライン表示します。ICTトレードで重要視しているBoS & CHoCH/MSSの発見に役立ちます。
<パラメータ説明>
- HTF LIQUIDITY
- Daily … 日足ライン表示設定(色、線幅)
- Weekly … 週足ライン表示設定(色、線幅)
- Monthly … 月足ライン表示設定(色、線幅)
- INTRADAY LIQUIDITY
- 1H … 1時間足ライン表示設定(色、線幅)
- 4H … 4時間足ライン表示設定(色、線幅)
- PURGED LIQUIDITY … 一度到達したラインの表示設定
- Show Purge Daily … 日足ライン表示/非表示設定
- Show Purge Weekly … 週足ライン表示/非表示設定
- Show Purge Monthly … 月足ライン表示/非表示設定
- Show Purge 1H … 1時間足ライン表示/非表示設定
- Show Purge 4H … 4時間足ライン表示/非表示設定
- MARKET STRUCTURE BREAK - MBS
- Loopback … High/Lowを探索する期間
- DISPLACEMENT FOR FVG
- Require FVG … FVG発生時のみ描画する
- Displacement Type … openからcloseまでの変位か?highからlowまでの変位か?
- Displacement Length … 標準偏差を計算する期間
- Displacement Strength … 変位の強さ(数字が大きいほど強い変位を検出)
Smart Money Concepts (Advanced)Inspired and initially based on LuxAlgo's Smart Money Concepts Indicator I created a library lib_smc that started to convert every function and return objects. This allowed certain customizations like tracking the current fill level of FVGs or tracking the creation of Order Blocks, by monitoring consecutive bars against the current trend.
This indicator is provided as is, based on, but probably not always be up to date with my lib_smc that I am using for my projects.
WARNING: This indicator shows EXPERIMENTAL Order Blocks that are tracked LIVE. Unlike usual Order Blocks these are not just based on the last confirmed Swing Point (formed 50 bars before) but on consecutive candles opposing an unconfirmed trend. Blocks are confirmed by price movements relative to the unconfirmed block and unconfirmed swing points. This means that some Order Blocks will appear on pullbacks, as well as reversals.
Features
Swing Points (HH / LH / HL / LL), indicating support / resistance zones price might reject off of or want to push through
Market Structure (BOS / ChoCh), indicates confirmation for a continued / changing trend
live Order Blocks (OB), see warning above.
Fair Value Gaps (FVG), optional from higher timeframes
Equal Highs / Lows (EQH/EQL), indicates strong support / resistance zones, especially when the bars forming it have long wicks toward that zone
using my lib_no_delay all moving averages are working from bar 0, so it can be used on charts with limited bars
Super EMA PrismThis script implements the Binary Trade Logic (BTL) algorithm to calculate two distinct scores that range from 0 to 7. One score is calculated assigning a power of 2 weight to the positive sign of 3 Phi^3 distant Moving Average (MA) slopes. The other score is calculated assigning a power of 2 weight to the sign of the difference between the price and the value of 3 Phi^3 distant Moving Average (MA).
For the first score, hereafter called as the angle score (AS), the largest MA slope positive sign receives weight 4, the middle length MA slope positive sign receives weight 2 and the shortest MA slope positive sign receives weight 1. The positive sign of an MA is defined as 1 if the slope of the MA is positive and 0, otherwise. Therefore, for MAs 305, 72 and 17, if slope(MA305) > 0, slope(MA72) < 0 and slope(MA17) > 0, then score will be 4*1 + 2*0 + 1*1 = 5. Up to my knowledge, this score was first proposed by Bo Williams and named by him as Prisma.
For the second score, hereafter called as the value score (VS), if the price > largest MA, it receives weight 4. If the price > the middle length MA, it receives weight 2 and if the price > the the shortest MA, it receives weight 1. Therefore, for MAs 305, 72 and 17, if price < MA305, price > MA72 and price > MA17, then score will be 4*0 + 2*1 + 1*1 = 3. Up to my knowledge, this score was first proposed by Bo Williams and named by him as Prisma.
Both AS and VS are calculated for Phi^3 lengths (610, 144, 34) and for Phi^3/2 lengths (305, 72, 17). The scores of the same kind calculated for each set of length are combined multiplying the Phi^3 length score by 10 and adding with with the Phi^3/2 score, therefore providing a 2 digit score ranging from 0 to 77. For instance, if we have AS(610, 144, 34) = 7 and AS(305, 72, 17) = 5, we have AS=75. At the same time, if we have VS(610, 144, 34) = 6 and VS(305, 72, 17) = 4, we have VS=64.
VS score is plotted by default in black, but it can be on white for dark themes. AS is plotted with the color of the longest MA used.
Chart background is colored according to the range of values for AS and VS, checked in the following order:
if AS >= 13 and VS <= 13 then back color = red
if AS >= 13 or VS <= 13 then back color = orange
if AS >= 64 and VS >= 64 then back color = green
if AS >= 64 or VS >= 64 then back color = blue
otherwise back color = none (white o black)
Phicube EMASAR ( EMA Support and Resistance )Indicator based on the Concept created by Bo Williams. But unlike the original that uses MIMAs, EMAs are used here.
Exponential moving averages will be shown according to fractal alignment, in order to show the important support and resistance levels ( SAR ).
When the fractals are aligned to become support,
we will have the EMA in the graph with a bright color.
When the fractals are aligned to become resistance, we will have EMA in the graph with a matte color.
Available exponential moving averages: 17,34,72,144,305,610,1292 and 2584
____________________________________________________//_____________________________________________________________________
Indicador baseado no Conceito criado pelo Bo Williams. Mas diferente do original que utiliza MIMAs, aqui é utilizado EMAs.
As médias móveis exponenciais serão mostradas de acordo com o alinhamento dos fractais, com objetivo de mostrar os níveis importantes
de suporte e resistência( SAR ).
Quando estiver com os fractais alinhados virando suporte, teremos no gráfico a EMA com uma cor em tom brilhante.
Quando estiver com os fractais alinhados virando resistência, teremos no gráfico a EMA com uma cor em tom fosco.
Médias móveis exponenciais disponíveis: 17,34,72,144,305,610,1292 e 2584
Custom EMA + FIBOThis script combines 6 EMAs with 3 Donchian Channel 78.6% and 21.4% intermediary level lines to perform trade analysis. The 6 EMAs (I, II, III , IV, V and VI ) default lengthes come from one of the Fibonacci Phi^3 and Phi^3/2 sub series (17, 34, 72, 144, 305 and 610), but can be changed to any values, particularly to the traditionally used 20, 40, 50, 100, 200 and 300. Up to my knowledge, Fibonacci Phi^3 and Phi^3/2 sub series lengthes were first proposed by Bo Williams.
The 3 Donchian Channels used have default lengthes 72, 305 and 1292, calculated after the first length default value of 72. For each of the 3 Donchian Channels only an upper line, set by default at 78.6%, is plotted in green and its complement, set to 21.4%, is plotted in red. When the closing price is above 3 green lines, we say it is Forbidden to Sell ( PV ), and when the closing price is below 3 red lines, we say it is Forbidden to Buy ( PC ). Those conditions are flagged on the chart. These PV-PC conditions were, up to my knowledge, first proposed by Bo Williams.
[CUSTOM] Valid Pullbacks with pendingTrendFollow the approach of Valid Pullback & Trend indicator, but I have customized to have a pending line waiting for confirmation of the root source code
This indicator plots valid market structure using internal (gray) and external (red) swing points. It also draws a live blue pending line from the latest confirmed pivot to the expected next pivot, giving a real-time preview of the next possible break of structure (BoS). Clean, non-repainting, and ideal for trend analysis and structure-based strategies Draws the pending line to the developing internal high/low
Once a new pivot is confirmed: - The pendingTrend line is cleared - The direction is remembered - No additional blue lines are drawn until the next internal pivot forms in the opposite direction
karaLytix - Options SuperNova_v1.0//@version=5
indicator('karaLytix - Options SuperNova_v1.0', shorttitle='karaLytix - OSN_v1.0_Major', overlay=true)
showMTFSR = input(title='Show MTFSR', defval=true, group = '===== MTF S/R =====')
// Daily Lines
showdOpen = input.bool(true, title='. O', group='Daily Levels', inline='1')
showdHigh = input.bool(true, title='. H', group='Daily Levels', inline='1')
showdLow = input.bool(true, title='. L', group='Daily Levels', inline='1')
showpdOpen = input.bool(true, title='. pO', group='Daily Levels', inline='1')
showpdHigh = input.bool(true, title='. pH', group='Daily Levels', inline='1')
showpdLow = input.bool(true, title='. pL', group='Daily Levels', inline='1')
showpdEQ = input.bool(true, title='. pEQ', group='Daily Levels', inline='1', tooltip='p = previous, O = Open, H = High, L = Low, EQ = Equilibrium (50%)')
// Weekly Lines
showwOpen = input.bool(true, title='. O', group='Weekly Levels', inline='1')
showwHigh = input.bool(true, title='. H', group='Weekly Levels', inline='1')
showwLow = input.bool(true, title='. L', group='Weekly Levels', inline='1')
showpwOpen = input.bool(true, title='. pO', group='Weekly Levels', inline='1')
showpwHigh = input.bool(true, title='. pH', group='Weekly Levels', inline='1')
showpwLow = input.bool(true, title='. pL', group='Weekly Levels', inline='1')
showpwEQ = input.bool(true, title='. pEQ', group='Weekly Levels', inline='1', tooltip='p = previous, O = Open, H = High, L = Low, EQ = Equilibrium (50%)')
// Monthly Lines
showmOpen = input.bool(true, title='- O', group='Monthly Levels', inline='1')
showmHigh = input.bool(true, title='- H', group='Monthly Levels', inline='1')
showmLow = input.bool(true, title='- L', group='Monthly Levels', inline='1')
showpmOpen = input.bool(true, title='. pO', group='Monthly Levels', inline='1')
showpmHigh = input.bool(true, title='. pH', group='Monthly Levels', inline='1')
showpmLow = input.bool(true, title='. pL', group='Monthly Levels', inline='1', tooltip='p = previous, O = Open, H = High, L = Low')
// Yealy Lines
showyOpen = input.bool(true, title='. O', group='Yearly Levels', inline='1')
showyHigh = input.bool(true, title='. H', group='Yearly Levels', inline='1')
showyLow = input.bool(true, title='. L', group='Yearly Levels', inline='1', tooltip='O = Open, H = High, L = Low')
// VWAPS
show_DVWAPs = input.bool(true, title='Daily', group='Standard VWAPS - Daily, Weekly, Monthly', inline='VWAP1')
show_WVWAPs = input.bool(true, title='Weekly', group='Standard VWAPS - Daily, Weekly, Monthly', inline='VWAP1')
show_MVWAPs = input.bool(true, title='Monthly', group='Standard VWAPS - Daily, Weekly, Monthly', inline='VWAP1')
show_YVWAPs = input.bool(true, title='Yearly', group='Standard VWAPS - Daily, Weekly, Monthly', inline='VWAP1', tooltip='M-VWAP and Y-VWAP only shows on higher time frames')
var DSpaces = ' '
var DPSpaces = ' '
var DNoSpaces = ' '
var DPNoSpaces = ' '
var WSpaces = ' '
var WPSpaces = ' '
var WNoSpaces = ' '
var WPNoSpaces = ' '
var MSpaces = ' '
var MPSpaces = ' '
var MNoSpaces = ' '
var MPNoSpaces = ' '
var YSpaces = ' '
var YPSpaces = ' '
var YNoSpaces = ' '
var YPNoSpaces = ' '
x1 = ta.valuewhen(barstate.islast, bar_index, 0)
D_extend_length = input.int(25, title='Extend Daily short line', group='Line Options', inline='1')
D_x2 = x1 + D_extend_length
W_extend_length = input.int(35, title='Extend Weekly short line', group='Line Options', inline='1')
W_x2 = x1 + W_extend_length
M_extend_length = input.int(45, title='Extend Monthly short line', group='Line Options', inline='1')
M_x2 = x1 + M_extend_length
Y_extend_length = input.int(55, title='Extend Yearly short line', group='Line Options', inline='1')
Y_x2 = x1 + Y_extend_length
//Round of Line Value
f_round_up_to_tick(x, mintick) =>
mult = 1 / mintick
value = math.ceil(x * mult) / mult
value
// Line Options
extend = extend.none
exnone = input.bool(true, title='Short Line', group='Line Options', inline='2')
exboth = input.bool(false, title='Line Across Screen', group='Line Options', inline='3')
exright = input.bool(false, title='Line To Right', group='Line Options', inline='3')
showPrice = input.bool(false, title='Show Level Prices', group='Line Options', inline='4')
showVPrice = input.bool(false, title='Show VWAP Prices', group='Line Options', inline='4')
extend := exnone ? extend.none : exboth ? extend.both : exright ? extend.right : extend
D_x2loc = D_x2
D_x2loc := exnone ? D_x2 : exboth ? bar_index : exright ? bar_index : D_x2loc
W_x2loc = W_x2
W_x2loc := exnone ? W_x2 : exboth ? bar_index : exright ? bar_index : W_x2loc
M_x2loc = M_x2
M_x2loc := exnone ? M_x2 : exboth ? bar_index : exright ? bar_index : M_x2loc
Y_x2loc = Y_x2
Y_x2loc := exnone ? Y_x2 : exboth ? bar_index : exright ? bar_index : Y_x2loc
DailySpaces = DNoSpaces
DailySpaces := exnone ? DNoSpaces : exboth ? DSpaces : exright ? DSpaces : DailySpaces
DailyPSpaces = DPNoSpaces
DailyPSpaces := exnone ? DPNoSpaces : exboth ? DPSpaces : exright ? DPSpaces : DailyPSpaces
WeeklySpaces = WNoSpaces
WeeklySpaces := exnone ? WNoSpaces : exboth ? WSpaces : exright ? WSpaces : WeeklySpaces
WeeklyPSpaces = WPNoSpaces
WeeklyPSpaces := exnone ? WPNoSpaces : exboth ? WPSpaces : exright ? WPSpaces : WeeklyPSpaces
MonthlySpaces = MNoSpaces
MonthlySpaces := exnone ? MNoSpaces : exboth ? MSpaces : exright ? MSpaces : MonthlySpaces
MonthlyPSpaces = MPNoSpaces
MonthlyPSpaces := exnone ? MPNoSpaces : exboth ? MPSpaces : exright ? MPSpaces : MonthlyPSpaces
YearlySpaces = YNoSpaces
YearlySpaces := exnone ? YNoSpaces : exboth ? YSpaces : exright ? YSpaces : YearlySpaces
YearlyPSpaces = YPNoSpaces
YearlyPSpaces := exnone ? YPNoSpaces : exboth ? YPSpaces : exright ? YPSpaces : YearlyPSpaces
//Line Colors
DailyInputColor = input.color(color.blue, title='Daily', group='User Selectable Line Colors', inline='Input 0')
WeeklyInputColor = input.color(color.yellow, title='Weekly', group='User Selectable Line Colors', inline='Input 0')
MonthlyInputColor = input.color(color.purple, title='Monthly', group='User Selectable Line Colors', inline='Input 1')
YearlyInputColor = input.color(color.red, title='Yearly', group='User Selectable Line Colors', inline='Input 1')
show_DVWAPs_color = show_DVWAPs ? DailyInputColor : na
show_WVWAPs_color = show_WVWAPs ? WeeklyInputColor : na
show_MVWAPs_color = show_MVWAPs ? MonthlyInputColor : na
show_YVWAPs_color = show_YVWAPs ? YearlyInputColor : na
//////////////////////////////////////
/////Previous Day Values//////////////
//////////////////////////////////////
// Previous Day Open
// showpdOpen = input(true, title="- pdOpen", group="pd Values", inline = "Daily")
pdOpen = request.security(syminfo.tickerid, 'D', open , lookahead=barmerge.lookahead_on)
var line pdOpenLine = na
var label pdOpenLabel = na
if showpdOpen
pdOpenLine := line.new(x1=x1, y1=pdOpen, x2=D_x2, y2=pdOpen, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_dashed, extend=extend)
pdOpenLabel := label.new(D_x2loc, pdOpen, text=DailySpaces + 'pdOpen', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pdOpenLine )
label.delete(pdOpenLabel )
var label pdOpenLabelPrice = na
if showpdOpen and showPrice
pdOpenLabelPrice := label.new(D_x2loc, pdOpen, text=DailyPSpaces + str.tostring(f_round_up_to_tick(pdOpen, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pdOpenLabelPrice )
i_text1 = '₿ - Scripts by Frien_dd - ₿'
// Previous Day High
// showpdHigh = input(true, title="- pdHigh", group="pd Values", inline = "Daily")
pdHigh = request.security(syminfo.tickerid, 'D', high , lookahead=barmerge.lookahead_on)
var line pdHighLine = na
var label pdHighLabel = na
if showpdHigh
pdHighLine := line.new(x1=x1, y1=pdHigh, x2=D_x2, y2=pdHigh, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_dashed, extend=extend)
pdHighLabel := label.new(D_x2loc, pdHigh, text=DailySpaces + 'pdHigh', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pdHighLine )
label.delete(pdHighLabel )
var label pdHighLabelPrice = na
if showpdHigh and showPrice
pdHighLabelPrice := label.new(D_x2loc, pdHigh, text=DailyPSpaces + str.tostring(f_round_up_to_tick(pdHigh, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pdHighLabelPrice )
// Previous Day Low
// showpdLow = input(true, title="- pdLow", group="pd Values", inline = "Daily")
pdLow = request.security(syminfo.tickerid, 'D', low , lookahead=barmerge.lookahead_on)
var line pdLowLine = na
var label pdLowLabel = na
if showpdLow
pdLowLine := line.new(x1=x1, y1=pdLow, x2=D_x2, y2=pdLow, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_dashed, extend=extend)
pdLowLabel := label.new(D_x2loc, pdLow, text=DailySpaces + 'pdLow', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pdLowLine )
label.delete(pdLowLabel )
var label pdLowLabelPrice = na
if showpdLow and showPrice
pdLowLabelPrice := label.new(D_x2loc, pdLow, text=DailyPSpaces + str.tostring(f_round_up_to_tick(pdLow, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pdLowLabelPrice )
// Previous Day EQ
// showpdEQ = input(true, title="- pdEQ", group="pd Values", inline = "Daily")
pdEQ = (pdHigh + pdLow) / 2
var line pdEQLine = na
var label pdEQLabel = na
if showpdEQ
pdEQLine := line.new(x1=x1, y1=pdEQ, x2=D_x2, y2=pdEQ, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_dashed, extend=extend)
pdEQLabel := label.new(D_x2loc, pdEQ, text=DailySpaces + 'pdEQ', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pdEQLine )
label.delete(pdEQLabel )
var label pdEQLabelPrice = na
if showpdEQ and showPrice
pdEQLabelPrice := label.new(D_x2loc, pdEQ, text=DailyPSpaces + str.tostring(f_round_up_to_tick(pdEQ, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pdEQLabelPrice )
//////////////////////////////////////
/////Previous Week Values//////////////
//////////////////////////////////////
// Previous Week Open
// showpwOpen = input(true, title="- pwOpen", group="pw Values", inline = "Weekly")
pwOpen = request.security(syminfo.tickerid, 'W', open , lookahead=barmerge.lookahead_on)
var line pwOpenLine = na
var label pwOpenLabel = na
if showpwOpen
pwOpenLine := line.new(x1=x1, y1=pwOpen, x2=W_x2, y2=pwOpen, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_dashed, extend=extend)
pwOpenLabel := label.new(W_x2loc, pwOpen, text=WeeklySpaces + 'pwOpen', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pwOpenLine )
label.delete(pwOpenLabel )
var label pwOpenLabelPrice = na
if showpwOpen and showPrice
pwOpenLabelPrice := label.new(W_x2loc, pwOpen, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(pwOpen, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pwOpenLabelPrice )
// Previous Week High
// showpwHigh = input(true, title="- pwHigh", group="pw Values", inline = "Weekly")
pwHigh = request.security(syminfo.tickerid, 'W', high , lookahead=barmerge.lookahead_on)
var line pwHighLine = na
var label pwHighLabel = na
if showpwHigh
pwHighLine := line.new(x1=x1, y1=pwHigh, x2=W_x2, y2=pwHigh, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_dashed, extend=extend)
pwHighLabel := label.new(W_x2loc, pwHigh, text=WeeklySpaces + 'pwHigh', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pwHighLine )
label.delete(pwHighLabel )
var label pwHighLabelPrice = na
if showpwHigh and showPrice
pwHighLabelPrice := label.new(W_x2loc, pwHigh, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(pwHigh, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pwHighLabelPrice )
// Previous Week Low
// showpwLow = input(true, title="- pwLow", group="pw Values", inline = "Weekly")
pwLow = request.security(syminfo.tickerid, 'W', low , lookahead=barmerge.lookahead_on)
var line pwLowLine = na
var label pwLowLabel = na
if showpwLow
pwLowLine := line.new(x1=x1, y1=pwLow, x2=W_x2, y2=pwLow, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_dashed, extend=extend)
pwLowLabel := label.new(W_x2loc, pwLow, text=WeeklySpaces + 'pwLow', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pwLowLine )
label.delete(pwLowLabel )
var label pwLowLabelPrice = na
if showpwLow and showPrice
pwLowLabelPrice := label.new(W_x2loc, pwLow, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(pwLow, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pwLowLabelPrice )
// Previous Week EQ
// showpwEQ = input(true, title="- pwEQ", group="pw Values", inline = "Weekly")a
pwEQ = (pwHigh + pwLow) / 2
var line pwEQLine = na
var label pwEQLabel = na
if showpwEQ
pwEQLine := line.new(x1=x1, y1=pwEQ, x2=W_x2, y2=pwEQ, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_dashed, extend=extend)
pwEQLabel := label.new(W_x2loc, pwEQ, text=WeeklySpaces + 'pwEQ', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pwEQLine )
label.delete(pwEQLabel )
var label pwEQLabelPrice = na
if showpwEQ and showPrice
pwEQLabelPrice := label.new(W_x2loc, pwEQ, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(pwEQ, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pwEQLabelPrice )
///////////////////////////////////////
/////Weekly Open-High-Low/////////////
//////////////////////////////////////
// Current Monthly Open
// showwOpen = input(true, title=". wOpen", group="Weekly Levels", inline = "1")
wOpen = request.security(syminfo.tickerid, 'W', open, lookahead=barmerge.lookahead_on)
var line wOpenLine = na
var label wOpenLabel = na
if showwOpen
wOpenLine := line.new(x1=x1, y1=wOpen, x2=W_x2, y2=wOpen, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_dashed, extend=extend)
wOpenLabel := label.new(W_x2loc, wOpen, text=WeeklySpaces + 'wOpen', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(wOpenLine )
label.delete(wOpenLabel )
var label wOpenLabelPrice = na
if showwOpen and showPrice
wOpenLabelPrice := label.new(W_x2loc, wOpen, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(wOpen, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(wOpenLabelPrice )
// Weekly Low High Levels
var LastWeek = 0
var WeeklyHigh = 0.0
var WeeklyLow = 0.0
ThisWeek = time('W')
CheckWeek = ThisWeek != LastWeek
LastWeek := ThisWeek
WeeklyHigh := CheckWeek or high > WeeklyHigh ? high : WeeklyHigh
WeeklyLow := CheckWeek or low < WeeklyLow ? low : WeeklyLow
var line wLowLine = na
var label wLowLabel = na
// showwLow = input(true, title=". wLow", group="Weekly Levels", inline = "1")
if showwLow
wLowLine := line.new(x1=x1, y1=WeeklyLow, x2=W_x2, y2=WeeklyLow, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_solid, extend=extend)
wLowLabel := label.new(W_x2loc, WeeklyLow, text=MonthlySpaces + 'wLow', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(wLowLine )
label.delete(wLowLabel )
var label wLowLabelPrice = na
if showwLow and showPrice
wLowLabelPrice := label.new(W_x2loc, WeeklyLow, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(WeeklyLow, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(wLowLabelPrice )
var line wHighLine = na
var label wHighLabel = na
// showwHigh = input(true, title=". wHigh", group="Weekly Levels", inline = "1")
if showwHigh
wHighLine := line.new(x1=x1, y1=WeeklyHigh, x2=W_x2, y2=WeeklyHigh, xloc=xloc.bar_index, width=1, color=WeeklyInputColor, style=line.style_solid, extend=extend)
wHighLabel := label.new(W_x2loc, WeeklyHigh, text=WeeklySpaces + 'wHigh', color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(wHighLine )
label.delete(wHighLabel )
var label wHighLabelPrice = na
if showwHigh and showPrice
wHighLabelPrice := label.new(W_x2loc, WeeklyHigh, text=WeeklyPSpaces + str.tostring(f_round_up_to_tick(WeeklyHigh, syminfo.mintick)), color=WeeklyInputColor, textcolor=WeeklyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(wHighLabelPrice )
//////////////////////////////////////
/////Previous Month Values////////////
//////////////////////////////////////
// Previous Month Open
// showpmOpen = input(true, title="- pmOpen", group="pm Values", inline = "Monthly")
pmOpen = request.security(syminfo.tickerid, 'M', open , lookahead=barmerge.lookahead_on)
var line pmOpenLine = na
var label pmOpenLabel = na
if showpmOpen
pmOpenLine := line.new(x1=x1, y1=pmOpen, x2=M_x2, y2=pmOpen, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_dashed, extend=extend)
pmOpenLabel := label.new(M_x2loc, pmOpen, text=MonthlySpaces + 'pmOpen', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pmOpenLine )
label.delete(pmOpenLabel )
var label pmOpenLabelPrice = na
if showpmOpen and showPrice
pmOpenLabelPrice := label.new(M_x2loc, pmOpen, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(pmOpen, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pmOpenLabelPrice )
// Previous Month High
// showpmHigh = input(true, title="- pmHigh", group="pm Values", inline = "Monthly")
pmHigh = request.security(syminfo.tickerid, 'M', high , lookahead=barmerge.lookahead_on)
var line pmHighLine = na
var label pmHighLabel = na
if showpmHigh
pmHighLine := line.new(x1=x1, y1=pmHigh, x2=M_x2, y2=pmHigh, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_dashed, extend=extend)
pmHighLabel := label.new(M_x2loc, pmHigh, text=MonthlySpaces + 'pmHigh', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pmHighLine )
label.delete(pmHighLabel )
var label pmHighLabelPrice = na
if showpmHigh and showPrice
pmHighLabelPrice := label.new(M_x2loc, pmHigh, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(pmHigh, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pmHighLabelPrice )
// Previous Month Low
// showpmLow = input(true, title="- pmLow", group="pm Values", inline = "Monthly")
pmLow = request.security(syminfo.tickerid, 'M', low , lookahead=barmerge.lookahead_on)
var line pmLowLine = na
var label pmLowLabel = na
if showpmLow
pmLowLine := line.new(x1=x1, y1=pmLow, x2=M_x2, y2=pmLow, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_dashed, extend=extend)
pmLowLabel := label.new(M_x2loc, pmLow, text=MonthlySpaces + 'pmLow', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(pmLowLine )
label.delete(pmLowLabel )
var label pmLowLabelPrice = na
if showpmLow and showPrice
pmLowLabelPrice := label.new(M_x2loc, pmLow, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(pmLow, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(pmLowLabelPrice )
//////////////////////////////////////
/////Daily Open///////////////////////
//////////////////////////////////////
// showdOpen = input(true, title="- dOpen", group="Current Daily", inline = "Daily")
dOpen = request.security(syminfo.tickerid, 'D', open, lookahead=barmerge.lookahead_on)
var line dOpenLine = na
var label dOpenLabel = na
if showdOpen
dOpenLine := line.new(x1=x1, y1=dOpen, x2=D_x2, y2=dOpen, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_dashed, extend=extend)
dOpenLabel := label.new(D_x2loc, dOpen, text=DailySpaces + 'dOpen', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(dOpenLine )
label.delete(dOpenLabel )
var label dOpenLabelPrice = na
if showdOpen and showPrice
dOpenLabelPrice := label.new(D_x2loc, dOpen, text=DailyPSpaces + str.tostring(f_round_up_to_tick(dOpen, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(dOpenLabelPrice )
// Daily Low High Levels
var LastDay = 0
var DailyHigh = 0.0
var DailyLow = 0.0
ThisDay = time('D')
CheckDay = ThisDay != LastDay
LastDay := ThisDay
DailyHigh := CheckDay or high > DailyHigh ? high : DailyHigh
DailyLow := CheckDay or low < DailyLow ? low : DailyLow
// Daily Low and High
var line dLowLine = na
var label dLowLabel = na
// showdLow = input(true, title=". dLow", group="Daily Levels", inline = "1")
if showdLow
dLowLine := line.new(x1=x1, y1=DailyLow, x2=D_x2, y2=DailyLow, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_solid, extend=extend)
dLowLabel := label.new(D_x2loc, DailyLow, text=DailySpaces + 'dLow', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(dLowLine )
label.delete(dLowLabel )
var label dLowLabelPrice = na
if showdLow and showPrice
dLowLabelPrice := label.new(D_x2loc, DailyLow, text=DailyPSpaces + str.tostring(f_round_up_to_tick(DailyLow, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(dLowLabelPrice )
var line dHighLine = na
var label dHighLabel = na
// showdHigh = input(true, title=". dHigh", group="Daily Levels", inline = "1")
if showdHigh
dHighLine := line.new(x1=x1, y1=DailyHigh, x2=D_x2, y2=DailyHigh, xloc=xloc.bar_index, width=1, color=DailyInputColor, style=line.style_solid, extend=extend)
dHighLabel := label.new(D_x2loc, DailyHigh, text=DailySpaces + 'dHigh', color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(dHighLine )
label.delete(dHighLabel )
var label dHighLabelPrice = na
if showdHigh and showPrice
dHighLabelPrice := label.new(D_x2loc, DailyHigh, text=DailyPSpaces + str.tostring(f_round_up_to_tick(DailyHigh, syminfo.mintick)), color=DailyInputColor, textcolor=DailyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(dHighLabelPrice )
///////////////////////////////////////
/////Monthly Open-High-Low/////////////
//////////////////////////////////////
// Current Monthly Open
// showmOpen = input(true, title="- mOpen", group="Current Monthly", inline = "Monthly")
mOpen = request.security(syminfo.tickerid, 'M', open, lookahead=barmerge.lookahead_on)
var line mOpenLine = na
var label mOpenLabel = na
if showmOpen
mOpenLine := line.new(x1=x1, y1=mOpen, x2=M_x2, y2=mOpen, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_dashed, extend=extend)
mOpenLabel := label.new(M_x2loc, mOpen, text=MonthlySpaces + 'mOpen', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(mOpenLine )
label.delete(mOpenLabel )
var label mOpenLabelPrice = na
if showmOpen and showPrice
mOpenLabelPrice := label.new(M_x2loc, mOpen, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(mOpen, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(mOpenLabelPrice )
// Current Monthly High
//Current Day High Low
var LastMonth = 0
var MonthlyHigh = 0.0
var MonthlyLow = 0.0
ThisMonth = time('M')
CheckMonth = ThisMonth != LastMonth
LastMonth := ThisMonth
MonthlyHigh := CheckMonth or high > MonthlyHigh ? high : MonthlyHigh
MonthlyLow := CheckMonth or low < MonthlyLow ? low : MonthlyLow
var line mLowLine = na
var label mLowLabel = na
// showmLow = input(true, title="- mLow", group="Current Monthly", inline = "Monthly")
if showmLow
mLowLine := line.new(x1=x1, y1=MonthlyLow, x2=M_x2, y2=MonthlyLow, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_solid, extend=extend)
mLowLabel := label.new(M_x2loc, MonthlyLow, text=MonthlySpaces + 'mLow', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(mLowLine )
label.delete(mLowLabel )
var label mLowLabelPrice = na
if showmLow and showPrice
mLowLabelPrice := label.new(M_x2loc, MonthlyLow, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(MonthlyLow, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(mLowLabelPrice )
var line mHighLine = na
var label mHighLabel = na
// showmHigh = input(true, title="- mHigh", group="Current Monthly", inline = "Monthly")
if showmHigh
mHighLine := line.new(x1=x1, y1=MonthlyHigh, x2=M_x2, y2=MonthlyHigh, xloc=xloc.bar_index, width=1, color=MonthlyInputColor, style=line.style_solid, extend=extend)
mHighLabel := label.new(M_x2loc, MonthlyHigh, text=MonthlySpaces + 'mHigh', color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(mHighLine )
label.delete(mHighLabel )
var label mHighLabelPrice = na
if showmHigh and showPrice
mHighLabelPrice := label.new(M_x2loc, MonthlyHigh, text=MonthlyPSpaces + str.tostring(f_round_up_to_tick(MonthlyHigh, syminfo.mintick)), color=MonthlyInputColor, textcolor=MonthlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(mHighLabelPrice )
i_tableYpos = 'bottom'
///////////////////////////////////////
/////Yearly Open-High-Low/////////////
//////////////////////////////////////
// Current Yearly Open
// showyOpen = input(true, title="- yOpen", group="Current Yearly", inline = "Yearly")
yOpen = request.security(syminfo.tickerid, '12M', open, lookahead=barmerge.lookahead_on)
var line yOpenLine = na
var label yOpenLabel = na
if showyOpen
yOpenLine := line.new(x1=x1, y1=yOpen, x2=Y_x2, y2=yOpen, xloc=xloc.bar_index, width=1, color=YearlyInputColor, style=line.style_dashed, extend=extend)
yOpenLabel := label.new(Y_x2loc, yOpen, text=YearlySpaces + 'yOpen', color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(yOpenLine )
label.delete(yOpenLabel )
var label yOpenLabelPrice = na
if showyOpen and showPrice
yOpenLabelPrice := label.new(Y_x2loc, yOpen, text=YearlyPSpaces + str.tostring(f_round_up_to_tick(yOpen, syminfo.mintick)), color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(yOpenLabelPrice )
// Current Yearly High Low
var LastYear = 0
var YearlyHigh = 0.0
var YearlyLow = 0.0
ThisYear = time('12M')
CheckYear = ThisYear != LastYear
LastYear := ThisYear
YearlyHigh := CheckYear or high > YearlyHigh ? high : YearlyHigh
YearlyLow := CheckYear or low < YearlyLow ? low : YearlyLow
i_tableXpos = 'right'
var line yLowLine = na
var label yLowLabel = na
if showyLow
yLowLine := line.new(x1=x1, y1=YearlyLow, x2=Y_x2, y2=YearlyLow, xloc=xloc.bar_index, width=1, color=YearlyInputColor, style=line.style_solid, extend=extend)
yLowLabel := label.new(Y_x2loc, YearlyLow, text=YearlySpaces + 'yLow', color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(yLowLine )
label.delete(yLowLabel )
var label yLowLabelPrice = na
if showyLow and showPrice
yLowLabelPrice := label.new(Y_x2loc, YearlyLow, text=YearlyPSpaces + str.tostring(f_round_up_to_tick(YearlyLow, syminfo.mintick)), color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(yLowLabelPrice )
var line yHighLine = na
var label yHighLabel = na
if showyHigh
yHighLine := line.new(x1=x1, y1=YearlyHigh, x2=Y_x2, y2=YearlyHigh, xloc=xloc.bar_index, width=1, color=YearlyInputColor, style=line.style_solid, extend=extend)
yHighLabel := label.new(Y_x2loc, YearlyHigh, text=YearlySpaces + 'yHigh', color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
line.delete(yHighLine )
label.delete(yHighLabel )
var label yHighLabelPrice = na
if showyHigh and showPrice
yHighLabelPrice := label.new(Y_x2loc, YearlyHigh, text=YearlyPSpaces + str.tostring(f_round_up_to_tick(YearlyHigh, syminfo.mintick)), color=YearlyInputColor, textcolor=YearlyInputColor, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(yHighLabelPrice )
i_height = 7
i_width = 15
i_c_text = color.new(color.white, 50)
//Daily VWAP
is_today = year == year(timenow) and month == month(timenow) and dayofmonth == dayofmonth(timenow)
roundedVWAP = f_round_up_to_tick(ta.vwap, syminfo.mintick)
VWAP = roundedVWAP
plot(VWAP, 'D-VWAP', is_today ? show_DVWAPs_color : na, offset=0)
var label VWAPLabel = na
if VWAP
VWAPLabel := label.new(bar_index, VWAP, text=' D-VWAP', color=show_DVWAPs_color, textcolor=show_DVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(VWAPLabel )
var label VWAPPLabel = na
if VWAP and showVPrice
VWAPPLabel := label.new(bar_index, VWAP, text=' ' + str.tostring(VWAP), color=show_DVWAPs_color, textcolor=show_DVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(VWAPPLabel )
//Weeekly VWAP
src = hlc3
wt = time('W')
wstart = na(wt ) or wt > wt
wsumSrc = src * volume
wsumVol = volume
wsumSrc := wstart ? wsumSrc : wsumSrc + wsumSrc
wsumVol := wstart ? wsumVol : wsumVol + wsumVol
WVWAP = wsumSrc / wsumVol
wvw = f_round_up_to_tick(WVWAP, syminfo.mintick)
plot(timeframe.isintraday ? wvw : na, title='W-VWAP', color=show_WVWAPs_color)
var label wVWAPLabel = na
if wvw
wVWAPLabel := label.new(bar_index, wvw, text=' W-VWAP', color=show_WVWAPs_color, textcolor=show_WVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(wVWAPLabel )
var label wVWAPPLabel = na
if wvw and showVPrice
wVWAPPLabel := label.new(bar_index, wvw, text=' ' + str.tostring(wvw), color=show_WVWAPs_color, textcolor=show_WVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(wVWAPPLabel )
i_textSize = 'normal'
i_c_bg = color.new(color.blue, 80)
//Monthly VWAP
var float vwapsum = na
var float volumesum = na
newSession = ta.change(time('M'))
vwapsum := newSession ? hl2 * volume : hl2 * volume + vwapsum
volumesum := newSession ? volume : volume + volumesum
MVWAP = vwapsum / volumesum
mvw = f_round_up_to_tick(MVWAP, syminfo.mintick)
plot(newSession ? na : mvw, title='M-VWAP', color=show_MVWAPs_color, style=plot.style_linebr)
var label mVWAPLabel = na
if mvw
mVWAPLabel := label.new(bar_index, mvw, text=' M-VWAP', color=show_MVWAPs_color, textcolor=show_MVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(mVWAPLabel )
var label mVWAPPLabel = na
if mvw and showVPrice
mVWAPPLabel := label.new(bar_index, mvw, text=' ' + str.tostring(mvw), color=show_MVWAPs_color, textcolor=show_MVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(mVWAPPLabel )
var table watermark = table.new(i_tableYpos + '_' + i_tableXpos, 1, 1)
//Yearly VWAP
var float yvwapsum = na
var float yvolumesum = na
ynewSession = ta.change(time('12M'))
yvwapsum := ynewSession ? hl2 * volume : hl2 * volume + yvwapsum
yvolumesum := ynewSession ? volume : volume + yvolumesum
YVWAP = yvwapsum / yvolumesum
yvw = f_round_up_to_tick(YVWAP, syminfo.mintick)
table.cell(watermark, 0, 0, i_text1, i_width, i_height, i_c_text, text_size=i_textSize, bgcolor=i_c_bg)
plot(newSession ? na : yvw, title='Y-VWAP', color=show_YVWAPs_color, style=plot.style_linebr)
var label yVWAPLabel = na
if yvw
yVWAPLabel := label.new(bar_index, yvw, text=' Y-VWAP', color=show_YVWAPs_color, textcolor=show_YVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(yVWAPLabel )
var label yVWAPPLabel = na
if yvw and showVPrice
yVWAPPLabel := label.new(bar_index, yvw, text='' + str.tostring(yvw), color=show_YVWAPs_color, textcolor=show_YVWAPs_color, style=label.style_none, size=size.normal, xloc=xloc.bar_index, textalign=text.align_right)
label.delete(yVWAPPLabel )
/////////////////////Volaility & Fibbonacci//////////
showVF = input(title='Show VF', defval=true, group = '===== Volatility & Fibbonacci =====')
//supertend
factor = input.int(3, title="SuperTrend Factor")
atrP = input.int(10, title="SuperTrend atrPeriod")
= ta.supertrend(factor, atrP)
sclr = direction > 0 ? color.red : color.green
plot(superTrend, title='SuperTrend', color=sclr)
//EMA
emaP = input.int(31, title="EMA length")
srcEma = input.source(high,"EMA source")
plot(ta.ema(srcEma,emaP))
//Volatality and Fibbonacci trade table
showTable=input(true, title="Show VF Table")
res = 'D'
test1=0
f_secureSecurity(_symbol, _res, _src) => request.security(_symbol, _res, _src, barmerge.gaps_off) // orignal code line
dc = f_secureSecurity(syminfo.tickerid, res, close )
dc1 = f_secureSecurity(syminfo.tickerid, res, close )
dc2 = f_secureSecurity(syminfo.tickerid, res, close )
dc3 = f_secureSecurity(syminfo.tickerid, res, close )
dc4 = f_secureSecurity(syminfo.tickerid, res, close )
dc5 = f_secureSecurity(syminfo.tickerid, res, close )
dc6 = f_secureSecurity(syminfo.tickerid, res, close )
dc7 = f_secureSecurity(syminfo.tickerid, res, close )
dc8 = f_secureSecurity(syminfo.tickerid, res, close )
dc9 = f_secureSecurity(syminfo.tickerid, res, close )
dc10 = f_secureSecurity(syminfo.tickerid, res, close )
dop = f_secureSecurity(syminfo.tickerid, res, open)
logg00 = math.log(dc/dc1)
logg11 = math.log(dc1/dc2)
logg22 = math.log(dc2/dc3)
logg33 = math.log(dc3/dc4)
logg44 = math.log(dc4/dc5)
logg55 = math.log(dc5/dc6)
logg66 = math.log(dc6/dc7)
logg77 = math.log(dc7/dc8)
logg88 = math.log(dc8/dc9)
logg99 = math.log(dc9/dc10)
squrr00 = logg00*logg00
squrr11 = logg11*logg11
squrr22 = logg22*logg22
squrr33 = logg33*logg33
squrr44 = logg44*logg44
squrr55 = logg55*logg55
squrr66 = logg66*logg66
squrr77 = logg77*logg77
squrr88 = logg88*logg88
squrr99 = logg99*logg99
avg_logg0 = (logg00+logg11+logg22+logg33+logg44+logg55+logg66+logg77+logg88+logg99)/10
avg_squrr0 = (squrr00+squrr11+squrr22+squrr33+squrr44+squrr55+squrr66+squrr77+squrr88+squrr99)/10
variancee0 = avg_squrr0 - (avg_logg0*avg_logg0)
volatility0 = math.sqrt(variancee0)
round_preci=input.int(title="VF Decimal Scale", options= , defval=0)
range11=math.round(dc*volatility0,round_preci)
doKdc= math.abs(dop-dc)>(0.382*range11)? dop : dc
//re-do calc
logg = math.log(doKdc/dc1)
logg1 = math.log(dc1/dc2)
logg2 = math.log(dc2/dc3)
logg3 = math.log(dc3/dc4)
logg4 = math.log(dc4/dc5)
logg5 = math.log(dc5/dc6)
logg6 = math.log(dc6/dc7)
logg7 = math.log(dc7/dc8)
logg8 = math.log(dc8/dc9)
logg9 = math.log(dc9/dc10)
squrr = logg*logg
squrr1 = logg1*logg1
squrr2 = logg2*logg2
squrr3 = logg3*logg3
squrr4 = logg4*logg4
squrr5 = logg5*logg5
squrr6 = logg6*logg6
squrr7 = logg7*logg7
squrr8 = logg8*logg8
squrr9 = logg9*logg9
avg_logg = (logg+logg1+logg2+logg3+logg4+logg5+logg6+logg7+logg8+logg9)/10
avg_squrr = (squrr+squrr1+squrr2+squrr3+squrr4+squrr5+squrr6+squrr7+squrr8+squrr9)/10
variancee = avg_squrr - (avg_logg*avg_logg)
volatility = math.sqrt(variancee)
range1=math.round(doKdc*volatility,round_preci)
//doKdc=dc
buy_above=math.round(doKdc+(range1 * 0.236),round_preci)
buy_conf=math.round(doKdc+(range1 * 0.382),round_preci)
b_t1=math.round(doKdc+(range1 * 0.5),round_preci)
b_t2=math.round(doKdc+(range1 * 0.618),round_preci)
b_t3=math.round(doKdc+(range1 * 0.786),round_preci)
b_t4=math.round(doKdc+(range1 * 0.888),round_preci)
b_t5=math.round(doKdc+(range1 * 1.236),round_preci)
b_t6=math.round(doKdc+(range1 * 1.618),round_preci)
sell_below=math.round(doKdc-(range1 * 0.236),round_preci)
sell_conf=math.round(doKdc-(range1 * 0.382),round_preci)
s_t1=math.round(doKdc-(range1 * 0.5),round_preci)
s_t2=math.round(doKdc-(range1 * 0.618),round_preci)
s_t3=math.round(doKdc-(range1 * 0.786),round_preci)
s_t4=math.round(doKdc-(range1 * 0.888),round_preci)
s_t5=math.round(doKdc-(range1 * 1.236),round_preci)
s_t6=math.round(doKdc-(range1 * 1.618),round_preci)
sizeOption = input.string(title="VF Text Size",
options= ,
defval="Normal")
txtSize= (sizeOption == "Normal") ? size.small : size.normal
//BUY/Sell confirmation line
// Today's Session Start timestamp
y = year(timenow)
m = month(timenow)
d = dayofmonth(timenow)
// Start & End time for
showLineOnSameDay=input(true, title="Show VF Lines on same Day")
dd=showLineOnSameDay?d:d+1
start = timestamp(y, m, dd, 09, 15)
end = start + 86400000
tom_start = start
tom_end = end
colorLabl=input.color(color.white,"VF Label Text color")
var lbl1 = label.new(na, na, "Buy Conf", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl )
var lbl2 = label.new(na, na, "Sell Conf", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl3 = label.new(na, na, "T1", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl4 = label.new(na, na, "T2", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl5 = label.new(na, na, "T3", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl6 = label.new(na, na, "T4", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl7 = label.new(na, na, "T5", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl8 = label.new(na, na, "T6", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl9 = label.new(na, na, "T1", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl10 = label.new(na, na, "T2", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl11 = label.new(na, na, "T3", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl12 = label.new(na, na, "T4", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl13 = label.new(na, na, "T5", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl14 = label.new(na, na, "T6", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl15 = label.new(na, na, "Buy Above", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
var lbl16 = label.new(na, na, "Sell below", color = color(na), style = label.style_label_left,size = txtSize, textcolor = colorLabl)
colorBuy=input.color(color.green,"Buy Above Lines color")
colorSell=input.color(color.red,"Sell Below Lines color")
var lin1 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy, width = 2)
var lin2 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell, width = 2)
var lin3 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin4 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin5 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin6 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin7 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin8 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin9 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin10 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin11 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin12 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin13 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin14 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
var lin15 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorBuy)
var lin16 = line.new(na, na, na, na, xloc = xloc.bar_time, style = line.style_solid,color=colorSell)
//Buy_Conf_lvl
line.set_xy1(lin1, tom_start, buy_conf)
line.set_xy2(lin1, tom_end,buy_conf)
label.set_xy(lbl1, bar_index, buy_conf)
//Sell_Conf_lvl
line.set_xy1(lin2, tom_start, sell_conf)
line.set_xy2(lin2, tom_end,sell_conf)
label.set_xy(lbl2, bar_index, sell_conf)
//T1
line.set_xy1(lin3, tom_start, b_t1)
line.set_xy2(lin3, tom_end,b_t1)
label.set_xy(lbl3, bar_index, b_t1)
//T2
line.set_xy1(lin4, tom_start, b_t2)
line.set_xy2(lin4, tom_end,b_t2)
label.set_xy(lbl4, bar_index, b_t2)
//T3
line.set_xy1(lin5, tom_start, b_t3)
line.set_xy2(lin5, tom_end,b_t3)
label.set_xy(lbl5, bar_index, b_t3)
//T4
line.set_xy1(lin6, tom_start, b_t4)
line.set_xy2(lin6, tom_end,b_t4)
label.set_xy(lbl6, bar_index, b_t4)
//T5
line.set_xy1(lin7, tom_start, b_t5)
line.set_xy2(lin7, tom_end,b_t5)
label.set_xy(lbl7, bar_index, b_t5)
//T6
line.set_xy1(lin8, tom_start, b_t6)
line.set_xy2(lin8, tom_end,b_t6)
label.set_xy(lbl8, bar_index, b_t6)
//S1
line.set_xy1(lin9, tom_start, s_t1)
line.set_xy2(lin9, tom_end,s_t1)
label.set_xy(lbl9, bar_index, s_t1)
//S2
line.set_xy1(lin10, tom_start, s_t2)
line.set_xy2(lin10, tom_end,s_t2)
label.set_xy(lbl10, bar_index, s_t2)
//S3
line.set_xy1(lin11, tom_start, s_t3)
line.set_xy2(lin11, tom_end,s_t3)
label.set_xy(lbl11, bar_index, s_t3)
//S4
line.set_xy1(lin12, tom_start, s_t4)
line.set_xy2(lin12, tom_end,s_t4)
label.set_xy(lbl12, bar_index, s_t4)
//S5
line.set_xy1(lin13, tom_start, s_t5)
line.set_xy2(lin13, tom_end,s_t5)
label.set_xy(lbl13, bar_index, s_t5)
//S6
line.set_xy1(lin14, tom_start, s_t6)
line.set_xy2(lin14, tom_end,s_t6)
label.set_xy(lbl14, bar_index, s_t6)
//Buy Above
line.set_xy1(lin15, tom_start, buy_above)
line.set_xy2(lin15, tom_end,buy_above)
label.set_xy(lbl15, bar_index, buy_above)
//Sell Below
line.set_xy1(lin16, tom_start, sell_below)
line.set_xy2(lin16, tom_end,sell_below)
label.set_xy(lbl16, bar_index, sell_below)
color_g=#e6fce8
coor_r=#fce6ea
color_n=#bab8b8
color_rg=#ebe6ea
color_wh=color.white
txt_color_r=#f50a19
txt_color_g=#039458
plotVF = timeframe.period == 'D' or timeframe.period == '120'or timeframe.period == '120' or timeframe.period == '60' or timeframe.period == '15' or timeframe.period == '30'
or timeframe.period == '5' or timeframe.period == '3' or timeframe.period == '180'or timeframe.period == '240'or timeframe.period == '2'
trendingTimes="T4,T5,T6: On trending Times"
NormalTargets="T2,T3: Normal Targets"
tableToolTip="This table works well in a Trending Markets; in sideways market use it as Support and Resistance"
var testTable = table.new(position = position.bottom_right, columns = 9, rows = 3, bgcolor = color.yellow, border_width = 1, border_color=color.white)
if barstate.islast and plotVF and showTable
table.cell(table_id = testTable, column = 1, row = 0, text = "^/v " ,text_size=txtSize,tooltip="Above/Below")
table.cell(table_id = testTable, column = 2, row = 0, text = "Conf ", bgcolor=color.green,text_size=txtSize,tooltip="Confirmation")
table.cell(table_id = testTable, column = 3, row = 0, text = "T1 ", bgcolor=color_wh,text_size=txtSize)
table.cell(table_id = testTable, column = 4, row = 0, text = "T2 ", bgcolor=color.gray,text_size=txtSize,tooltip=NormalTargets)
table.cell(table_id = testTable, column = 5, row = 0, text = "T3 ", bgcolor=color.gray,text_size=txtSize,tooltip=NormalTargets)
table.cell(table_id = testTable, column = 6, row = 0, text = "T4 ", bgcolor=color.green,text_size=txtSize,tooltip=trendingTimes)
table.cell(table_id = testTable, column = 7, row = 0, text = "T5 ", bgcolor=color.green,text_size=txtSize,tooltip=trendingTimes)
table.cell(table_id = testTable, column = 8, row = 0, text = "T6 ", bgcolor=color.green,text_size=txtSize,tooltip=trendingTimes)
table.cell(table_id = testTable, column = 0, row = 0, text = "VF Table", bgcolor=color.white, text_size=txtSize,tooltip=tableToolTip)
table.cell(table_id = testTable, column = 0, row = 1, text = "For Buy Above ", bgcolor=color.green ,text_size=txtSize)
table.cell(table_id = testTable, column = 0, row = 2, text = "For Sell Below ", bgcolor=color.orange ,text_size=txtSize)
table.cell(table_id = testTable, column = 1, row = 1, text = str.tostring(buy_above), bgcolor=color_g ,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 2, row = 1, text = str.tostring(buy_conf), bgcolor=color_g,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 3, row = 1, text = str.tostring(b_t1), bgcolor=color_wh,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 4, row = 1, text = str.tostring(b_t2), bgcolor=color_n,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 5, row = 1, text = str.tostring(b_t3), bgcolor=color_n,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 6, row = 1, text = str.tostring(b_t4), bgcolor=color_g,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 7, row = 1, text = str.tostring(b_t5), bgcolor=color_g,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 8, row = 1, text = str.tostring(b_t6), bgcolor=color_g,text_size=txtSize, text_color=txt_color_r)
table.cell(table_id = testTable, column = 1, row = 2, text = str.tostring(sell_below) , bgcolor=coor_r,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 2, row = 2, text = str.tostring(sell_conf), bgcolor=coor_r,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 3, row = 2, text = str.tostring(s_t1), bgcolor=color_wh,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 4, row = 2, text = str.tostring(s_t2), bgcolor=color_rg,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 5, row = 2, text = str.tostring(s_t3), bgcolor=color_rg,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 6, row = 2, text = str.tostring(s_t4), bgcolor=coor_r,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 7, row = 2, text = str.tostring(s_t5), bgcolor=coor_r,text_size=txtSize,text_color=txt_color_g)
table.cell(table_id = testTable, column = 8, row = 2, text = str.tostring(s_t6), bgcolor=coor_r,text_size=txtSize,text_color=txt_color_g)
tf = timeframe.isintraday ? "D" : "W"
d_high = f_secureSecurity(syminfo.tickerid, tf, high )
d_low = f_secureSecurity(syminfo.tickerid, tf, low )
d_close = f_secureSecurity(syminfo.tickerid, tf, close )
pivot = (d_high + d_low + d_close)/3
BC = (d_high + d_low)/2
TC = (pivot - BC) + pivot
R1 = (pivot * 2) - d_low
R2 = pivot + (d_high-d_low)
S1 = (pivot * 2) - d_high
S2 = pivot - (d_high-d_low)
var testPTable = table.new(position = position.top_right, columns = 8, rows = 2, bgcolor = color.yellow, border_width = 1, border_color=color.white)
table.cell(table_id = testPTable, column = 0, row = 0, text = "S2 ",text_size=txtSize )
table.cell(table_id = testPTable, column = 1, row = 0, text = "S1 ",text_size=txtSize )
table.cell(table_id = testPTable, column = 2, row = 0, text = "Pivot" ,text_size=txtSize)
table.cell(table_id = testPTable, column = 3, row = 0, text = "R1 ",text_size=txtSize )
table.cell(table_id = testPTable, column = 4, row = 0, text = "R2",text_size=txtSize )
table.cell(table_id = testPTable, column = 5, row = 0, text = "BC",text_size=txtSize )
table.cell(table_id = testPTable, column = 6, row = 0, text = "TC",text_size=txtSize )
table.cell(table_id = testPTable, column = 7, row = 0, text = "Range",text_size=txtSize )
table.cell(table_id = testPTable, column = 0, row = 1, text = str.tostring(math.round(S2,round_preci)) ,bgcolor=color.green,text_size=txtSize)
table.cell(table_id = testPTable, column = 1, row = 1, text = str.tostring(math.round(S1,round_preci)), bgcolor=color.green,text_size=txtSize )
table.cell(table_id = testPTable, column = 2, row = 1, text = str.tostring(math.round(pivot,round_preci)) ,text_size=txtSize)
table.cell(table_id = testPTable, column = 3, row = 1, text = str.tostring(math.round(R1,round_preci)) , bgcolor=color.orange,text_size=txtSize )
table.cell(table_id = testPTable, column = 4, row = 1, text = str.tostring(math.round(R2,round_preci)) , bgcolor=color.orange,text_size=txtSize )
table.cell(table_id = testPTable, column = 5, row = 1, text = str.tostring(math.round(BC,round_preci)) , bgcolor=color.green,text_size=txtSize )
table.cell(table_id = testPTable, column = 6, row = 1, text = str.tostring(math.round(TC,round_preci)) , bgcolor=color.green,text_size=txtSize )
table.cell(table_id = testPTable, column = 7, row = 1, text = str.tostring(math.round((TC-BC),round_preci+1)) , bgcolor=color.orange,text_size=txtSize )
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Auto trendlines
// Input:
var string GROUP_ATL = "===== Auto trendlines ====="
var int n = input.int(10, title="Fractal Periods", minval=2)
bool upflagDown = true, bool upflagUp0 = true, bool upflagUp1 = true
bool upflagUp2 = true, bool upflagUp3 = true, bool upflagUp4 = true
for i = 1 to n
upflagDown := upflagDown and (high < high )
upflagUp0 := upflagUp0 and (high < high )
upflagUp1 := upflagUp1 and (high <= high and high < high )
upflagUp2 := upflagUp2 and (high <= high and high <= high and high < high )
upflagUp3 := upflagUp3 and (high <= high and high <= high and high <= high and high < high )
upflagUp4 := upflagUp4 and (high <= high and high <= high and high <= high and high <= high and high < high )
flagUp = upflagUp0 or upflagUp1 or upflagUp2 or upflagUp3 or upflagUp4
bool downflagDown = true, bool downflagUp0 = true, bool downflagUp1 = true
bool downflagUp2 = true, bool downflagUp3 = true, bool downflagUp4 = true
for i = 1 to n
downflagDown := downflagDown and (low > low )
downflagUp0 := downflagUp0 and (low > low )
downflagUp1 := downflagUp1 and (low >= low and low > low )
downflagUp2 := downflagUp2 and (low >= low and low >= low and low > low )
downflagUp3 := downflagUp3 and (low >= low and low >= low and low >= low and low > low )
downflagUp4 := downflagUp4 and (low >= low and low >= low and low >= low and low >= low and low > low )
flagDown = downflagUp0 or downflagUp1 or downflagUp2 or downflagUp3 or downflagUp4
bool upfract = upflagDown and flagUp
bool downfract = downflagDown and flagDown
// Input:
var int LINE_WIDTH1 = 2, var string LINE_WIDTH1_STR = "Width 1"
var int LINE_WIDTH2 = 2, var string LINE_WIDTH2_STR = "Width 2"
var string subgroup1 = "recent line"
var color ln_col_recent = input.color(color.new(color.yellow, 0), title="Recent Line", group=GROUP_ATL, inline=subgroup1)
int _lnwidth_recent = switch input.string(LINE_WIDTH1_STR, options= , title="", inline=subgroup1, group=GROUP_ATL)
LINE_WIDTH1_STR => LINE_WIDTH1
LINE_WIDTH2_STR => LINE_WIDTH2
var int lnwidth_recent = _lnwidth_recent
var string subgroup2 = "historical line"
var color ln_col_prev = input.color(color.new(#dee2f1, 50), title="Historical Line", group=GROUP_ATL, inline=subgroup2)
int _lnwidth_prev = switch input.string(LINE_WIDTH1_STR, options= , title="", inline=subgroup2, group=GROUP_ATL)
LINE_WIDTH1_STR => LINE_WIDTH1
LINE_WIDTH2_STR => LINE_WIDTH2
var int lnwidth_prev = _lnwidth_prev
var int max_tl = input.int(1, title="Max pair of lines", maxval=250, minval=1, group=GROUP_ATL)*2
var string _str_extend = input.string("Right", options= , title="Which way to extend lines", group=GROUP_ATL)
var string str_extend = _str_extend == "Both ways" ? extend.both : extend.right
var bool show_crosses = input.bool(false, title="Show crosses", tooltip="Instances when closing price of a bar has crossed lower/upper trendlines", group=GROUP_ATL)
//
// Recent fractals.
var float recent_dn1 = low, var int i_recent_dn1 = bar_index
var float recent_up1 = high, var int i_recent_up1 = bar_index
var float recent_dn2 = low, var int i_recent_dn2 = bar_index
var float recent_up2 = high, var int i_recent_up2 = bar_index
// Array of lines, newest elements inserted to front.
var line arr_ln_up = array.new_line()
var line arr_ln_dn = array.new_line()
// @function : Clean up
// @param arr : either arr_ln_up/arr_ln_dn should be passed into it.
// @returns void : To delete excess lines and assign new color to historical lines.
cleanup(line arr) =>
if array.size(arr) > 1
line.set_color(array.get(arr, 1), ln_col_prev)
line.set_width(array.get(arr, 1), lnwidth_prev)
while array.size(arr) > math.floor(max_tl/2)
line.delete(array.pop(arr))
// Checking for fractals & Drawing trendlines
if downfract
recent_dn2:=recent_dn1
i_recent_dn2:=i_recent_dn1
recent_dn1:=low
i_recent_dn1 := bar_index-n-1
ln_dn = line.new(i_recent_dn2, recent_dn2, i_recent_dn1, recent_dn1, xloc.bar_index, str_extend, color=ln_col_recent, style=line.style_dashed, width=lnwidth_recent)
array.unshift(arr_ln_dn, ln_dn)
cleanup(arr_ln_dn)
if upfract
recent_up2:=recent_up1
i_recent_up2:=i_recent_up1
recent_up1:=high
i_recent_up1 := bar_index-n-1
ln_up = line.new(i_recent_up2, recent_up2, i_recent_up1, recent_up1, xloc.bar_index, str_extend, color=ln_col_recent, style=line.style_dashed, width=lnwidth_recent)
array.unshift(arr_ln_up, ln_up)
cleanup(arr_ln_up)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Finding crosses
// @function : Get slope
// @param int xA , xB: x values of known points A and B
// @param float yA, yB : y values of known points A and B
// @returns float m : Slope value, commonly expressed as rise over run.
get_slope(xA, yA, xB, yB) =>
(yB - yA) / (xB - xA)
// Linear extrapolation
// Solving for price at current x (bar_index), given two pairs of fractals with x values < bar_index.
float m_dn = get_slope(i_recent_dn1, recent_dn1, i_recent_dn2, recent_dn2)
float y_dn = (m_dn * bar_index) + recent_dn1 - (m_dn * i_recent_dn1)
float m_up = get_slope(i_recent_up1, recent_up1, i_recent_up2, recent_up2)
float y_up = (m_up * bar_index) + recent_up1 - (m_up * i_recent_up1)
//
bool crossed_top = ta.cross(close, y_up)
bool crossed_bottom = ta.cross(close, y_dn)
plotshape(show_crosses and crossed_top, title = "Crossed upper trendline", style = shape.xcross, location = location.belowbar, color = color.new(color = color.green, transp = 50), size = size.small)
plotshape(show_crosses and crossed_bottom, title = "Crossed lower trendline", style = shape.xcross, location = location.abovebar, color = color.new(color = color.red, transp = 50), size = size.small)
alertcondition(crossed_top or crossed_bottom, title="Upper/lower trendline crossed", message="Upper/lower trendline crossed")
// Alerts --------------------------------------------------------------------------------------- //
// ---------------------------------------------------------------------------------------------- //
showPSAR = input(title='Show PSAR', defval=false, group = '===== PSAR =====')
showPSAR2 = input(title='Show PSAR2', defval=false, group = '===== PSAR2 =====')
showPSAR3 = input(title='Show PSAR3', defval=false, group = '===== PSAR3 =====')
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// PARABOLIC SAR //////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
start1 = input.float(0.01,"Start",minval=0.001, group = '===== PSAR =====')
increment = input.float(0.01,"Increament",minval=0.001, group = '===== PSAR =====')
maximum = 0.1
psar_out = ta.sar(start1, increment, maximum)
plot(showPSAR ? psar_out : na, 'ParabolicSAR', style=plot.style_cross, color=color.new(#f32121, 0))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// PARABOLIC SAR2 //////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
start2 = input.float(0.02,"Start",minval=0.001, group = '===== PSAR2 =====')
increment2 = input.float(0.02,"Increament",minval=0.001, group = '===== PSAR2 =====')
maximum2 = 0.2
psar_out2 = ta.sar(start2, increment2, maximum2)
plot(showPSAR2 ? psar_out2 : na, 'ParabolicSAR2', style=plot.style_cross, color=color.new(#04dc41, 0))
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// PARABOLIC SAR3 //////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
start3 = input.float(0.03,"Start",minval=0.001, group = '===== PSAR3 =====')
increment3 = input.float(0.03,"Increament",minval=0.001, group = '===== PSAR3 =====')
maximum3 = 0.3
psar_out3 = ta.sar(start3, increment3, maximum3)
plot(showPSAR3 ? psar_out3 : na, 'ParabolicSAR3', style=plot.style_cross, color=color.new(#efeff6, 0))
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Alerts --------------------------------------------------------------------------------------- //
// ---------------------------------------------------------------------------------------------- //
show3Bc = input(title='Show 3Bc', defval=false, group = '3Bc')
int length = input.int( 8, 'Moving Average Length:')
float src1 = input.source(hl2, 'Source series:')
float deviations = input.float( 2.0, 'Number of Deviations:')
float ma = ta.sma(src1, length)
float sd = ta.stdev(src1, length)
float ma_fall = ta.valuewhen(ma < ma , ma , 0)
float ma_rise = ta.valuewhen(ma > ma , ma , 0)
var float oma = src1
if ma > ma
oma := ma_fall
if ma < ma
oma := ma_rise
float upper = oma + sd * deviations
float lower = oma - sd * deviations
color col_body = ma >= upper ? #9ce0b2 : ma <= lower ? #ca9c88 : ma >= ma ? color.green : color.maroon
color col_bord = color.rgb(70, 70, 70, 40)
plotcandle(oma, upper, lower, ma, '3Bc', col_body, col_bord, bordercolor=col_body)
/////////////////////////////////////////////////////////////////////////////////////////////
showAMA = input(title='Show AMA', defval=true, group = '===== Adaptive MA(TR) =====')
length1 = input(99)
src2 = input(close)
//----
ama = 0.
hh = math.max(math.sign(ta.change(ta.highest(length1))), 0)
ll = math.max(math.sign(ta.change(ta.lowest(length1)) * -1), 0)
tc = math.pow(ta.sma(hh or ll ? 1 : 0, length1), 2)
ama := nz(ama + tc * (src - ama ), src2)
plot(ama, 'Plot2', color.new(#ff1100, 0), 2)
showSMLM= input(title='Show SMLM', defval=true, group = '===== SML Major =====')
// INDICATOR SETTINGS
swing_length = input.int(10, title = 'Swing High/Low Length', group = 'Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, title = 'History To Keep', minval = 5, maxval = 50)
box_width = input.float(2.5, title = 'Supply/Demand Box Width', group = 'Settings', minval = 1, maxval = 10, step = 0.5)
// INDICATOR VISUAL SETTINGS
show_zigzag = input.bool(false, title = 'Show Zig Zag', group = 'Visual Settings', inline = '1')
show_price_action_labels = input.bool(false, title = 'Show Price Action Labels', group = 'Visual Settings', inline = '2')
supply_color = input.color(color.new(#EDEDED,70), title = 'Supply', group = 'Visual Settings', inline = '3')
supply_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Visual Settings', inline = '3')
demand_color = input.color(color.new(#00FFFF,70), title = 'Demand', group = 'Visual Settings', inline = '4')
demand_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Visual Settings', inline = '4')
bos_label_color = input.color(color.white, title = 'BOS Label', group = 'Visual Settings', inline = '5')
poi_label_color = input.color(color.white, title = 'POI Label', group = 'Visual Settings', inline = '7')
swing_type_color = input.color(color.black, title = 'Price Action Label', group = 'Visual Settings', inline = '8')
zigzag_color = input.color(color.new(#000000,0), title = 'Zig Zag', group = 'Visual Settings', inline = '9')
//
//END SETTINGS
//
//
//FUNCTIONS
//
// FUNCTION TO ADD NEW AND REMOVE LAST IN ARRAY
f_array_add_pop(array, new_value_to_add) =>
array.unshift(array, new_value_to_add)
array.pop(array)
// FUNCTION SWING H & L LABELS
f_sh_sl_labels(array, swing_type) =>
var string label_text = na
if swing_type == 1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HH'
else
label_text := 'LH'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_down, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
else if swing_type == -1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HL'
else
label_text := 'LL'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_up, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
// FUNCTION MAKE SURE SUPPLY ISNT OVERLAPPING
f_check_overlapping(new_poi, box_array, atr) =>
atr_threshold = atr * 2
okay_to_draw = true
for i = 0 to array.size(box_array) - 1
top = box.get_top(array.get(box_array, i))
bottom = box.get_bottom(array.get(box_array, i))
poi = (top + bottom) / 2
upper_boundary = poi + atr_threshold
lower_boundary = poi - atr_threshold
if new_poi >= lower_boundary and new_poi <= upper_boundary
okay_to_draw := false
break
else
okay_to_draw := true
okay_to_draw
// FUNCTION TO DRAW SUPPLY OR DEMAND ZONE
f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atr) =>
atr_buffer = atr * (box_width / 10)
box_left = array.get(bn_array, 0)
box_right = bar_index
var float box_top = 0.00
var float box_bottom = 0.00
var float poi = 0.00
if box_type == 1
box_top := array.get(value_array, 0)
box_bottom := box_top - atr_buffer
poi := (box_top + box_bottom) / 2
else if box_type == -1
box_bottom := array.get(value_array, 0)
box_top := box_bottom + atr_buffer
poi := (box_top + box_bottom) / 2
okay_to_draw = f_check_overlapping(poi, box_array, atr)
// okay_to_draw = true
//delete oldest box, and then create a new box and add it to the array
if box_type == 1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
Multi-Timeframe Scalping AssistantCore Features Implemented:
4H Supply/Demand Zones (auto-drawn)
1H Doji Detection (highlighted with yellow cross)
5M Fair Value Gaps (Bullish = green triangle, Bearish = red triangle)
1M Buy/Sell Entry Signals based on:
FVG presence
RSI overbought/oversold
Volume spike
EMA 50 trend filter
Break of Structure (BoS) tags
Visual “BUY HERE” and “SELL HERE” labels
Alerts for Buy/Sell conditions
Apex Edge - MTF Confluence PanelApex Edge – MTF Confluence Panel
Description:
The Apex Edge – MTF Confluence Panel is a powerful multi-timeframe analysis tool built to streamline trade decision-making by aggregating key confluences across three user-defined timeframes. The panel visually presents the state of five core market signals—Trend, Momentum, Sweep, Structure, and Trap—alongside a unified Score column that summarizes directional bias with clarity.
Traders can customize the number of bullish/bearish conditions required to trigger a score signal, allowing the tool to be tailored for both conservative and aggressive trading styles. This script is designed for those who value a clean, structured, and objective approach to identifying market alignment—whether scalping or swing trading.
How it Works:
Across each of the three selected timeframes, the panel evaluates:
Trend: Based on a user-configurable Hull Moving Average (HMA), the script compares price relative to trend to determine bullish, bearish, or neutral bias.
Momentum: Uses OBV (On-Balance Volume) with volume spike detection to identify bursts of strong buying or selling pressure.
Sweep: Detects potential liquidity grabs by identifying price rejections beyond prior swing highs/lows. A break below a previous low with reversal signals bullish intent (and vice versa for bearish).
Structure: Uses dynamic pivot-based logic to identify market structure breaks (BOS) beyond recent confirmed swing levels.
Trap: Flags potential false moves by measuring RSI overbought/oversold signal clusters combined with minimal price movement—highlighting exhaustion or deceptive breaks.
Score: A weighted consensus of the above components. The number of required confluences to trigger a score (default: 3) can be set by the user via input, offering flexibility in signal sensitivity.
Why It’s Useful for Traders:
Quick Decision-Making: The color-coded panel provides instant visual feedback on whether confluences align across timeframes—ideal for fast-paced environments like scalping or high-volatility news sessions.
Multi-Timeframe Confidence: Helps eliminate guesswork by confirming whether higher and lower timeframe conditions support your trade idea.
Customizability: Adjustable confluence threshold means traders can fine-tune how sensitive the system is—more signals for faster entries, stricter confluence for higher conviction trades.
Built-In Alerts: Automated alerts for score alignment, trap detection, and liquidity sweeps allow traders to stay informed even when away from the screen.
Strategic Edge: Supports directional bias confirmation and trade filtering with logic designed to mimic professional decision-making workflows.
Features:
Clean, real-time confluence table across three user-selected timeframes
Configurable score sensitivity via “Minimum Confluences for Score” input
Cell-based colour coding for at-a-glance trade direction
Built-in alerts for score alignment, traps, and sweep triggers
Note - This Indicator works great in sync with Apex Edge - Session Sweep Pro
Useful levels for TP = previous session high/low boxes or fib levels.
⚠️ Disclaimer:
This script is for informational and educational purposes only and should not be considered financial advice. Always perform your own due diligence and practice proper risk management when trading.
Vietnamese Market Structure With CountersThis indicator is designed to track Market Structure with Swing-Low Breakdowns and Swing-High Breakups specifically tailored for the Vietnamese stock market, though it can be applied elsewhere too. By default, it uses a 10-period EMA to dynamically detect key turning points in price action and count significant breakdowns or breakups from previous swing levels.
As an open source, you can modify the source code to match your needs.
What it does:
Detects when price breaks below previous swing lows or above previous swing highs.
Plots swing levels for both highs and lows.
Displays labeled counters on the chart to show how many consecutive breakdowns or breakups have occurred.
Helps traders identify trend shifts and possible exhaustion in moves.
Why it's useful:
This tool is great for visually tracking market momentum and structure changes — especially in trending or volatile environments. It emphasizes structure over indicators, helping you understand price behavior in a simplified, intuitive way.
License:
This script is published under the Mozilla Public License 2.0. Feel free to use, modify, and contribute!
Created with care by @doqkhanh.
If you find it useful, consider leaving a comment or sharing it with others!
Change in State of Delivery (CISD) [SB Instant]🧠 Modified by SB | Core Logic by LuxAlgo
🔗 Licensed under CC BY-NC-SA 4.0
Change in State of Delivery (CISD) is a concept rooted in observing shifts in order flow behavior, designed to detect the first signs of trend exhaustion and potential reversal. This model tracks when the current delivery (trend) structure — bullish or bearish — is violated by an opposing force, signaling a potential change in market intent.
In simple terms:
A Bullish CISD is triggered when sellers fail to maintain control, and buyers break above a delivery line.
A Bearish CISD is triggered when buyers fail, and sellers break below a delivery line.
This version uses real-time logic, triggering alerts immediately on break, rather than waiting for candle-close confirmation — giving faster, actionable signals to precision-driven traders.
⚙️ Core Features
Detection Modes
Classic: Traditional swing-based structural break detection
Liquidity Sweep: Logic incorporating wick sweeps (liquidity grabs)
Custom Parameters
Swing Length: Number of candles used to identify swing points
Minimum CISD Duration: Minimum length required for valid delivery phase
Maximum Swing Validity: How long the structure remains valid for potential breaks
Visual Options
Label and line styling options
Solid line = Initial break of delivery structure
Dashed line = Continuation break in the same trend direction
This allows you to visually differentiate a new reversal vs. a continuation of the existing trend.
🚨 Built-in Alerts
Bullish CISD Detected (Instant)
Bearish CISD Detected (Instant)
These alerts fire immediately when structure is broken, offering early confirmation for aggressive or reactive trade setups.
🔔 IMPORTANT:
If an alert triggers but the delivery line is not present, wait for the price to form the CISD label again and manually mark the price level using a horizontal ray. This ensures you are trading from a clearly defined structure.
🕒 Recommended Timeframes
✅ Use 30-Minute or 4-Hour charts to identify high-confidence CISD zones
🎯 Then drop to the 1-Minute or 5-Minute chart for precise entry execution
This top-down approach aligns higher timeframe narrative with lower timeframe entry triggers, increasing your edge in both timing and context.
🧠 How to Use CISD Effectively
Bullish Scenario:
Watch for breaks above bearish delivery structures, especially if confirmed with:
Fair Value Gaps (FVG)
The Strat 2-2 reversal
MSS (Market Structure Shift)
Bearish Scenario:
Look for breaks below bullish delivery setups in alignment with:
BOS (Break of Structure)
The Strat 3-1-2
Bearish liquidity sweeps
Key Tip:
Solid line = Initial CISD (new shift)
Dashed line = Continuation of current trend
This visual distinction helps you determine when a market is shifting vs. extending.
📎 Disclaimer
This tool is provided for educational purposes only and is not intended as financial advice. Always backtest, paper trade, and manage risk responsibly.
📚 Credits
Original CISD framework developed by LuxAlgo
Real-time execution logic, alert enhancements, and intraday utility designed by SB (SamB)
CISD [TakingProphets]🧠 Indicator Purpose:
The "CISD - Change in State of Delivery" is a precision tool designed for traders utilizing ICT (Inner Circle Trader) conecpets. It detects critical shifts in delivery conditions after liquidity sweeps — helping you spot true smart money activity and optimal trade opportunities. This script is especially valuable for traders applying liquidity concepts, displacement recognition, and market structure shifts at both intraday and swing levels.
🌟 What Makes This Indicator Unique:
Unlike basic trend-following or scalping tools, CISD operates through a two-phase smart money logic:
Liquidity Sweep Detection (sweeping Buyside or Sellside Liquidity).
State of Delivery Change Identification (through bearish or bullish displacement after the sweep).
It intelligently tracks candle sequences and only signals a CISD event after true displacement — offering a much deeper context than ordinary indicators.
⚙️ How the Indicator Works:
Swing Point Detection: Identifies recent pivot highs/lows to map Buyside Liquidity (BSL) and Sellside Liquidity (SSL) zones.
Liquidity Sweeps: Watches for price breaches of these liquidity points to detect institutional stop hunts.
Sequence Recognition: Finds series of same-direction candles before sweeps to mark institutional accumulation/distribution.
Change of Delivery Confirmation: Confirms CISD only after significant displacement moves price against the initial candle sequence.
Visual Markings: Automatically plots CISD lines and optional labels, customizable in color, style, and size.
🎯 How to Use It:
Identify Liquidity Sweeps: Watch for CISD levels plotted after a liquidity sweep event.
Plan Entries: Look for retracements into CISD lines for high-probability entries.
Manage Risk: Use CISD levels to refine your stop-loss and profit-taking zones.
Best Application:
After stop hunts during Killzones (London Open, New York AM).
As part of the Flow State Model: identify higher timeframe PD Arrays ➔ wait for lower timeframe CISD confirmation.
🔎 Underlying Concepts:
Liquidity Pools: Highs and lows cluster stop orders, attracting institutional sweeps.
Displacement: Powerful price moves post-sweep confirm smart money involvement.
Market Structure: CISD frequently precedes major Change of Character (CHoCH) or Break of Structure (BOS) shifts.
🎨 Customization Options:
Adjustable line color, width, and style (solid, dashed, dotted).
Optional label display with customizable color and sizing.
Line extension settings to keep CISD zones visible for future reference.
✅ Recommended for:
Traders studying ICT Smart Money Concepts.
Intraday scalpers and higher timeframe swing traders.
Traders who want to improve entries around liquidity sweeps and institutional displacement moves.
🚀 Bonus Tip:
For maximum confluence, pair this with the HTF POI, ICT Liquidity Levels, and HTF Market Structure indicators available at TakingProphets.com! 🔥
Aviad SMC Flow🔹 Aviad SMC Flow – Smart Structure & Zones Indicator
A professional SMC-based indicator for identifying:
✅ BoS – Break of Structure
✅ CHoCH – Change of Character
✅ MSS – Market Structure Shift
✅ Automated Support & Resistance Zones
✅ Liquidity Grab and Reversal Points
✅ Market Structure with historical display
Optimized for 1H and lower timeframes.
Designed for real Smart Money Concepts (SMC) trading.
Perfect for intraday traders, swing traders, and scalpers.
ICT Liquidity Sweep MAX RETRI (ALERT)Strategy Description: SMC + ICT Reversal Sniper | 5-Min | R2 TP
This strategy applies Smart Money Concepts (SMC) and ICT methodology to identify high-probability reversal trades using a clean, rule-based system designed for the 5-minute timeframe.
⸻
Core Logic:
• Liquidity Sweep: Identifies stop hunts beyond recent swing highs/lows using a configurable lookback window.
• Break of Structure (BOS): Validates a directional shift after the sweep.
• Fixed R2 Risk-Reward: Entry is followed by a 2:1 take-profit target. Stop loss is set at the sweep candle’s high/low.
• No Entry Between 8 PM–12 AM NY Time: Avoids the manipulation-prone and illiquid zone.
• Discreet SL Handling: SL hits close trades silently — no labels or visuals.
⸻
Entry Precision & Timing Notes:
• The strategy may occasionally fire before a confirmed liquidity sweep — this is expected. If a sweep occurs later, you may still re-enter toward equilibrium, with take profit also targeted at equilibrium.
• Alerts or trades that trigger near 9:30 AM NY often align with real direction, but this time can be volatile.
• For more reliable and lower-risk entries, focus on the 1:30 PM to 2:00 PM silver bullet window, which tends to produce cleaner setups with more favorable flow. 🖤
SMC+The "SMC+" indicator is a comprehensive tool designed to overlay key Smart Money Concepts (SMC) levels, support/resistance zones, order blocks (OB), fair value gaps (FVG), and trap detection on your TradingView chart. It aims to assist traders in identifying potential areas of interest based on price action, swing structures, and volume dynamics across multiple timeframes. This indicator is fully customizable, allowing users to adjust lookback periods, colors, opacity, and sensitivity to suit their trading style.
Key Components and Functionality
1. Key Levels (Support and Resistance)
This section plots horizontal lines representing support and resistance levels based on highs and lows over three distinct lookback periods, plus daily nearest levels.
Short-Term Lookback Period (Default: 20 bars)
Plots the highest high (short_high) and lowest low (short_low) over the specified period.
Visualized as dotted lines with customizable colors (Short-Term Resistance Color, Short-Term Support Color) and opacity (Short-Term Resistance Opacity, Short-Term Support Opacity).
Adjustment Tip: Increase the lookback (e.g., to 30-50) for less frequent but stronger levels on higher timeframes, or decrease (e.g., to 10-15) for scalping on lower timeframes.
Long-Term Lookback Period (Default: 50 bars)
Plots broader support (long_low) and resistance (long_high) levels using a solid line style.
Customizable via Long-Term Resistance Color, Long-Term Support Color, and their respective opacity settings.
Adjustment Tip: Extend to 100-200 bars for swing trading or major trend analysis on daily/weekly charts.
Extra-Long Lookback Period (Default: 100 bars)
Identifies significant historical highs (extra_long_high) and lows (extra_long_low) with dashed lines.
Configurable with Extra-Long Resistance Color, Extra-Long Support Color, and opacity settings.
Adjustment Tip: Use 200-500 bars for monthly charts to capture macro-level key zones.
Daily Nearest Resistance and Support Levels
Dynamically calculates the nearest resistance (daily_res_level) and support (daily_sup_level) based on the current day’s price action relative to historical highs and lows.
Displayed with Daily Resistance Color and Daily Support Color (with opacity options).
Adjustment Tip: Works best on intraday charts (e.g., 15m, 1h) to track daily pivots; combine with volume profile for confirmation.
How It Works: These levels update dynamically as new highs/lows form, providing a visual guide to potential reversal or breakout zones.
2. SMC Inputs (Smart Money Concepts)
This section identifies swing structures, order blocks, fair value gaps, and entry signals based on SMC principles.
SMC Swing Lookback Period (Default: 12 bars)
Defines the period for detecting swing highs (smc_swing_high) and lows (smc_swing_low).
Adjustment Tip: Increase to 20-30 for smoother swings on higher timeframes; reduce to 5-10 for faster signals on lower timeframes.
Minimum Swing Size (%) (Default: 0.5%)
Filters out minor price movements to focus on significant swings.
Adjustment Tip: Raise to 1-2% for volatile markets (e.g., crypto) to avoid noise; lower to 0.2-0.3% for forex pairs with tight ranges.
Order Block Sensitivity (Default: 1.0)
Scales the size of detected order blocks (OBs) for bullish reversal (smc_ob_bull), bearish reversal (smc_ob_bear), and continuation (smc_cont_ob).
Visuals include customizable colors, opacity, border thickness, and blinking effects (e.g., SMC Bullish Reversal OB Color, SMC Bearish Reversal OB Blink Thickness).
Adjustment Tip: Increase to 1.5-2.0 for wider OBs in choppy markets; keep at 1.0 for precision in trending conditions.
Minimum FVG Size (%) (Default: 0.3%)
Sets the minimum gap size for Fair Value Gaps (fvg_high, fvg_low), displayed as boxes with Fair Value Gap Color and FVG Opacity.
Adjustment Tip: Increase to 0.5-1% for larger, more reliable gaps; decrease to 0.1-0.2% for scalping smaller inefficiencies.
How It Works:
Bullish Reversal OB: Detects a bearish candle followed by a bullish break, marking a potential demand zone.
Bearish Reversal OB: Identifies a bullish candle followed by a bearish break, marking a supply zone.
Continuation OB: Spots strong bullish momentum after a prior high, indicating a continuation zone.
FVG: Highlights bullish gaps where price may retrace to fill.
Entry Signals: Plots triangles (SMC Long Entry) when price retests an OB with a liquidity sweep or break of structure (BOS).
3. Trap Inputs
This section detects potential bull and bear traps based on price action, volume, and key level rejections.
Min Down Move for Bear Trap (%) (Default: 1.0%)
Sets the minimum drop required after a bearish OB to qualify as a trap.
Visualized with Bear Trap Color, Bear Trap Opacity, and blinking borders.
Adjustment Tip: Increase to 2-3% for stronger traps in trending markets; lower to 0.5% for ranging conditions.
Min Up Move for Bull Trap (%) (Default: 1.0%)
Sets the minimum rise required after a bullish OB to flag a trap.
Customizable with Bull Trap Color, Bull Trap Border Thickness, etc.
Adjustment Tip: Adjust similarly to bear traps based on market volatility.
Volume Lookback for Traps (Default: 5 bars)
Compares current volume to a moving average (avg_volume) to filter low-volume traps.
Adjustment Tip: Increase to 10-20 for confirmation on higher timeframes; reduce to 3 for intraday sensitivity.
How It Works:
Bear Trap: Triggers when price drops significantly after a bearish OB but reverses up with low volume or support rejection.
Bull Trap: Activates when price rises after a bullish OB but fails with low volume or resistance rejection.
Boxes highlight trap zones, resetting when price breaks out.
4. Visual Customization
Line Width (Default: 2)
Adjusts thickness of support/resistance lines.
Tip: Increase to 3-4 for visibility on cluttered charts.
Blink On (Default: Close)
Sets whether OB/FVG borders blink based on Open or Close price interaction.
Tip: Use "Open" for intraday precision; "Close" for confirmed reactions.
Colors and Opacity: Each element (OBs, FVGs, traps, key levels) has customizable colors, opacity (0-100), border thickness (1-5 or 1-7), and blink effects for dynamic visualization.
How to Use SMC+
Setup: Apply the indicator to any chart and adjust inputs based on your timeframe and market.
Key Levels: Watch for price reactions at short, long, extra-long, or daily levels for potential reversals or breakouts.
SMC Signals: Look for entry signals (triangles) near OBs or FVGs, confirmed by liquidity sweeps or BOS.
Traps: Avoid false breakouts by monitoring trap boxes, especially near key levels with low volume.
Notes:
This indicator is a visual aid and does not guarantee trading success. Combine it with other analysis tools and risk management strategies.
Performance may vary across markets and timeframes; test settings thoroughly before use.
For optimal results, experiment with lookback periods and sensitivity settings to match your trading style.
The default settings are optimal for 1 minute and 10 second time frames for small cap low float stocks.
Continuation OB are Blue.
Bullish Reversal OB color is Green
Bearish Reversal OB color is Red
FVG color is purple
Bear Trap OB is red with a green border and often appears with a Bearish Reversal OB signaling caution to a short position.
Bull trap OB is green with a Red border signaling caution to a long position.
All active OB area are highlighted and solid in color while other non active OB area are dimmed.
My personal favorite setups are when we have an active bullish reversal with an active FVG along with an active Continuation OB.
Another personal favorite is the Bearish reversal OB signaling an end to a recent uptrend.
The Trap OB detection are also a unique and Original helpful source of information.
The OB have a white boarder by default that are colored black giving a simulated blinking effect when price is acting in that zone.
The Trap OB border are colored with respect to direction of intended trap, all of which can be customized to personal style.
All vaild OB zones are shown compact in size ,a unique and original view until its no longer valid.
ICT FVG & Swing Detector Basic by Trader RiazICT FVG & Swing Detector Basic by Trader Riaz
Unlock Precision Trading with the Ultimate Fair Value Gap (FVG) and Swing Detection Tool!
Developed by Trader Riaz , the ICT FVG and Swing Detector Basic is a powerful Pine Script indicator designed to help traders identify key market structures with ease. Whether you're a day trader, swing trader, or scalper, this indicator provides actionable insights by detecting Bullish and Bearish Fair Value Gaps (FVGs) and Swing Highs/Lows on any timeframe. Perfect for trading forex, stocks, crypto, and more on TradingView!
Key Features:
1: Bullish and Bearish FVG Detection
- Automatically identifies Bullish FVGs (highlighted in green) and Bearish FVGs (highlighted in red) to spot potential reversal or continuation zones.
- Displays FVGs as shaded boxes with a dashed midline at 70% opacity, making it easy to see the midpoint of the gap for precise entries and exits.
- Labels are placed inside the FVG boxes at the extreme right for clear visibility.
2: Customizable FVG Display
- Control the number of Bullish and Bearish FVGs displayed on the chart with user-defined inputs (fvg_bull_count and fvg_bear_count).
- Toggle the visibility of Bullish and Bearish FVGs with simple checkboxes (show_bull_fvg and show_bear_fvg) to declutter your chart.
3: Swing High and Swing Low Detection
- Detects Swing Highs (blue lines) and Swing Lows (red lines) to identify key market turning points.
- Labels are positioned at the extreme right edge of the lines for better readability and alignment.
- Customize the number of Swing Highs and Lows displayed (swing_high_count and swing_low_count) to focus on the most recent market structures.
4: Fully Customizable Display
- Toggle visibility for Swing Highs and Lows (show_swing_high and show_swing_low) to suit your trading style.
- Adjust the colors of Swing High and Low lines (swing_high_color and swing_low_color) to match your chart preferences.
5: Clean and Efficient Design
- Built with Pine Script v6 for optimal performance on TradingView.
- Automatically removes older FVGs and Swing points when the user-defined count is exceeded, keeping your chart clean and focused.
- Labels are strategically placed to avoid clutter while providing clear information.
Why Use This Indicator?
Precision Trading: Identify high-probability setups with FVGs and Swing points, commonly used in Smart Money Concepts (SMC) and Institutional Trading strategies.
User-Friendly: Easy-to-use inputs allow traders of all levels to customize the indicator to their needs.
Versatile: Works on any market (Forex, Stocks, Crypto, Commodities) and timeframe (1M, 5M, 1H, 4H, Daily, etc.).
Developed by Trader Riaz: Backed by the expertise of Trader Riaz, a seasoned trader dedicated to creating tools that empower the TradingView community.
How to Use:
- Add the Custom FVG and Swing Detector to your chart on TradingView.
- Adjust the input settings to control the number of FVGs and Swing points displayed.
- Toggle visibility for Bullish/Bearish FVGs and Swing Highs/Lows as needed.
- Use the identified FVGs and Swing points to plan your trades, set stop-losses, and target key levels.
Ideal For:
- Traders using Smart Money Concepts (SMC), Price Action, or Market Structure strategies.
- Those looking to identify liquidity grabs, imbalances, and trend reversals.
- Beginners and advanced traders seeking a reliable tool to enhance their technical analysis.
Happy trading!
Auto TrendLines [TradingFinder] Support Resistance Signal Alerts🔵 Introduction
The trendline is one of the most essential tools in technical analysis, widely used in financial markets such as Forex, cryptocurrency, and stocks. A trendline is a straight line that connects swing highs or swing lows and visually indicates the market’s trend direction.
Traders use trendlines to identify price structure, the strength of buyers and sellers, dynamic support and resistance zones, and optimal entry and exit points.
In technical analysis, trendlines are typically classified into three categories: uptrend lines (drawn by connecting higher lows), downtrend lines (formed by connecting lower highs), and sideways trends (moving horizontally). A valid trendline usually requires at least three confirmed touchpoints to be considered reliable for trading decisions.
Trendlines can serve as the foundation for a variety of trading strategies, such as the trendline bounce strategy, valid breakout setups, and confluence-based analysis with other tools like candlestick patterns, divergences, moving averages, and Fibonacci levels.
Additionally, trendlines are categorized into internal and external, and further into major and minor levels, each serving unique roles in market structure analysis.
🔵 How to Use
Trendlines are a key component in technical analysis, used to identify market direction, define dynamic support and resistance zones, highlight strategic entry and exit points, and manage risk. For a trendline to be reliable, it must be drawn based on structural principles—not by simply connecting two arbitrary points.
🟣 Selecting Pivot Types Based on Trend Direction
The first step is to determine the market trend: uptrend, downtrend, or sideways.
Then, choose pivot points that match the trend type :
In an uptrend, trendlines are drawn by connecting low pivots, especially higher lows.
In a downtrend, trendlines are formed by connecting high pivots, specifically lower highs.
It is crucial to connect pivots of the same type and structure to ensure the trendline is valid and analytically sound.
🟣 Pivot Classification
This indicator automatically classifies pivot points into two categories :
Major Pivots :
MLL : Major Lower Low
MHL : Major Higher Low
MHH : Major Higher High
MLH : Major Lower High
These define the primary structure of the market and are typically used in broader structural analysis.
Minor Pivots :
mLL: minor Lower Low
mHL: minor Higher Low
mHH: minor Higher High
mLH: minor Lower High
These are used for drawing more precise trendlines within corrective waves or internal price movements.
Example : In a downtrend, drawing a trendline from an MHH to an mHH creates structural inconsistency and introduces noise. Instead, connect points like MHL to MHL or mLH to mLH for a valid trendline.
🟣 Drawing High-Precision Trendlines
To ensure a reliable trendline :
Use pivots of the same classification (Major with Major or Minor with Minor).
Ensure at least three valid contact points (three touches = structural confirmation).
Draw through candles with the least deviation (choose wicks or bodies based on confluence).
Preferably draw from right to left for better alignment with current market behavior.
Use parallel lines to turn a single trendline into a trendline zone, if needed.
🟣 Using Trendlines for Trade Entries
Bounce Entry: When price approaches the trendline and shows signs of reversal (e.g., a reversal candle, divergence, or support/resistance), enter in the direction of the trend with a logical stop-loss.
Breakout Entry: When price breaks through the trendline with strong momentum and a confirmation (such as a retest or break of structure), consider trading in the direction of the breakout.
🟣 Trendline-Based Risk Management
For bounce entries, the stop-loss is placed below the trendline or the last pivot low (in an uptrend).
For breakout entries, the stop-loss is set behind the breakout candle or the last structural level.
A broken trendline can also act as an exit signal from a trade.
🟣 Combining Trendlines with Other Tools (Confluence)
Trendlines gain much more strength when used alongside other analytical tools :
Horizontal support and resistance levels
Moving averages (such as EMA 50 or EMA 200)
Fibonacci retracement zones
Candlestick patterns (e.g., Engulfing, Pin Bar)
RSI or MACD divergences
Market structure breaks (BoS / ChoCH)
🔵 Settings
Pivot Period : This defines how sensitive the pivot detection is. A higher number means the algorithm will identify more significant pivot points, resulting in longer-term trendlines.
Alerts
Alert :
Enable or disable the entire alert system
Set a custom alert name
Choose how often alerts trigger (every time, once per bar, or on bar close)
Select the time zone for alert timestamps (e.g., UTC)
Each trendline type supports two alert types :
Break Alert : Triggered when price breaks the trendline
React Alert : Triggered when price reacts or bounces off the trendline
These alerts can be independently enabled or disabled for all trendline categories (Major/Minor, Internal/External, Up/Down).
Display :
For each of the eight trendline types, you can control :
Whether to show or hide the line
Whether to delete the previous line when a new one is drawn
Color, line style (solid, dashed, dotted), extension direction (e.g., right only), and width
Major lines are typically thicker and more opaque, while minor lines appear thinner and more transparent.
All settings are designed to give the user full control over the appearance, behavior, and alert system of the indicator, without requiring manual drawing or adjustments.
🔵 Conclusion
A trendline is more than just a line on the chart—it is a structural, strategic, and flexible tool in technical analysis that can serve as the foundation for understanding price behavior and making trading decisions. Whether in trending markets or during corrections, trendlines help traders identify market direction, key zones, and high-potential entry and exit points with precision.
The accuracy and effectiveness of a trendline depend on using structurally valid pivot points and adhering to proper market logic, rather than relying on guesswork or personal bias.
This indicator is built to solve that exact problem. It automatically detects and draws multiple types of trendlines based on actual price structure, separating them into Major/Minor and Internal/External categories, and respecting professional analytical principles such as pivot type, trend direction, and structural location.
RSI Signal with filters by S.Kodirov📌 English
RSI Signal with Multi-Timeframe Filters
This TradingView indicator generates RSI-based buy and sell signals on the 15-minute timeframe with additional filtering from other timeframes (5M, 30M, 1M).
🔹 Signal Types:
✅ 15/5B & 15/5S – RSI 15M filtered by 5M
✅ 15/30/1B & 15/30/1S – RSI 15M filtered by 30M & 1M
✅ 15B & 15S – RSI 15M without filters
🔹 How It Works:
Signals are displayed as colored triangles on the chart.
Labels indicate the type of signal (e.g., 15/5B, 15S).
Alerts notify users when a signal appears.
🚀 Best for short-term trading with RSI confirmation from multiple timeframes!
📌 Русский
Индикатор RSI с мульти-таймфрейм фильтрами
Этот индикатор для TradingView генерирует сигналы покупки и продажи на 15-минутном таймфрейме, используя фильтрацию с других таймфреймов (5M, 30M, 1M).
🔹 Типы сигналов:
✅ 15/5B & 15/5S – RSI 15M с фильтром 5M
✅ 15/30/1B & 15/30/1S – RSI 15M с фильтрами 30M и 1M
✅ 15B & 15S – RSI 15M без фильтров
🔹 Как это работает:
Сигналы отображаются как цветные треугольники на графике.
Подписи показывают тип сигнала (например, 15/5B, 15S).
Алерты уведомляют трейдера о появлении сигнала.
🚀 Идеально для краткосрочной торговли с подтверждением RSI на нескольких таймфреймах!
📌 O'zbekcha
Ko'p vaqt oralig‘idagi RSI signallari
Ushbu TradingView indikatori 15 daqiqalik vaqt oralig‘ida RSI asosida sotib olish va sotish signallarini yaratadi. Bundan tashqari, boshqa vaqt oralig‘idagi (5M, 30M, 1M) RSI filtrlarini ham hisobga oladi.
🔹 Signal turlari:
✅ 15/5B & 15/5S – 5M bilan filtrlangan RSI 15M
✅ 15/30/1B & 15/30/1S – 30M va 1M bilan filtrlangan RSI 15M
✅ 15B & 15S – Filtrsiz RSI 15M
🔹 Qanday ishlaydi?
Signallar rangli uchburchaklar shaklida ko‘rsatiladi.
Yozuvlar signal turini ko‘rsatadi (masalan, 15/5B, 15S).
Xabarnomalar yangi signal paydo bo‘lganda treyderni ogohlantiradi.
🚀 Ko‘p vaqt oralig‘ida RSI tasdig‘i bilan qisqa muddatli savdo uchun ideal!
Momentum Theory Quick BiasMomentum Theory Quick Bias is a watchlist screener tool for rapid multi-timeframe analysis. It displays a variety of information from higher timeframes in order to set a directional bias including: breakout levels, peak levels, previous bar closes, and swing points.
✅ 8 Symbol Watchlist Scanner
✅ Quickly Set Directional Bias
✅ For Scalpers, Day Traders, and Swing Traders
--- 📷 INDICATOR GALLERY ---
--- 🚀 QUICK LOOK ---
✔ Multi-Timeframe Analysis
Displays various higher timeframe information in order to read how an asset is moving with one quick glance. Utilizes icons and colors that serve as visual cues.
--- ⚡ FEATURES ---
✔ Breakout Bias
Shows if the current price is above or below the breakout level on the timeframe.
✔ Peak Bias
Shows if the current previous peak has been triggered and where price is relative to it.
✔ Previous Bar Close
Shows how the previous bar closed and whether it's bullish or bearish.
Breakout
Fakeout
Inside
Outside
✔ Swing Point
Shows if the timeframe has currently flipped its breakout level.
✔ Bias Alignment
Shows visual icons if there is bias alignment between the timeframes.
↗️↘️ Breakout Bias Alignment
🔼🔽 Peak Bias Alignment
🔀 Breakout and Peak Bias Alignment, but opposite
✅ Breakout and Peak Bias Alignment
✔ Quick Analysis
Hover over the symbol name to view which timeframe levels are bullish or bearish and if peak levels have been triggered.
--- 🔥 OTHER FEATURES ---
✔ Built-In Presets
Create your own custom watchlist or use one of the built-in ones (using Oanda charts)
It's recommended to use the same source for all assets in your watchlist whenever possible
✔ Customized Layouts
Display the watchlist in a variety of different column arrangements.
✔ Dark and Light Modes
Adjustable theme colors to trade your chart the way you want.
✔ Plug-and-Play
Automatically changes the relevant levels depending on the viewed timeframe. Just fill in your watchlist, add it to your chart, and start trading!
Set the indicator to the following timeframes to view those arrangements:
Month Timeframe - Y / 6M / 3M / M
Week Timeframe - 6M / 3M / M / W
Day Timeframe - 3M / M / W / D
H4 Timeframe - Y / M / W / D
M15 Timeframe - M / W / D / H8
M10 Timeframe - M / W / D / H4
M5 Timeframe - W / D / H8 / H2
M3 Timeframe - W / D / H4 / H1
M2 Timeframe - D / H8 / H2 / M30
M1 Timeframe - D / H4 / H1 / M15
--- 📝 HOW TO USE ---
1) Create your watchlist or use one of the built-in presets and place it on the timeframe you want to see. If no watchlist is created, it automatically sets to the current asset.
2) Alignments will trigger in real-time and push to the top of the column.
It is recommended to place the indicator in a different chart window, so it won't have to refresh every time the asset or timeframe changes.
Twitter Model ICT [TradingFinder] MMXM ERL D + FVG + M15 MSS/SMT🔵 Introduction
The Twitter Model ICT is a trading approach based on ICT (Inner Circle Trader) models, focusing on price movement between external and internal liquidity in lower timeframes. This model integrates key concepts such as Market Structure Shift (MSS), Smart Money Technique (SMT) divergence, and CISD level break to identify precise entry points in the market.
The primary goal of this model is to determine key liquidity levels, such as the previous day’s high and low (PDH/PDL) and align them with the Fair Value Gap (FVG) in the 1-hour timeframe. The overall strategy involves framing trades around the 1H FVG and using the M15 Market Structure Shift (MSS) for entry confirmation.
The Twitter Model ICT is designed to utilize external liquidity levels, such as PDH/PDL, as key entry zones. The model identifies FVG in the 1-hour timeframe, which acts as a magnet for price movement. Additionally, traders confirm entries using M15 Market Structure Shift (MSS) and SMT divergence.
Bullish Twitter Model :
In a bullish setup, the price sweeps the previous day’s low (PDL), and after confirming reversal signals, buys are executed in internal liquidity zones. Conversely, in a bearish setup, the price sweeps the previous day’s high (PDH), and after confirming weakness signals, sells are executed.
Bearish Twitter Model :
In short setups, entries are only executed above the Midnight Open, while in long setups, entries are taken below the Midnight Open. Adhering to these principles allows traders to define precise entry and exit points and analyze price movement with greater accuracy based on liquidity and market structure.
🔵 How to Use
The Twitter Model ICT is a liquidity-based trading strategy that analyzes price movements relative to the previous day’s high and low (PDH/PDL) and Fair Value Gap (FVG). This model is applicable in both bullish and bearish directions and utilizes the 1-hour (1H) and 15-minute (M15) timeframes for entry confirmation.
The price first sweeps an external liquidity level (PDH or PDL) and then provides an entry opportunity based on Market Structure Shift (MSS) and SMT divergence. Additionally, the entry should be positioned relative to the Midnight Open, meaning long entries should occur below the Midnight Open and short entries above it.
🟣 Bullish Twitter Model
In a bullish setup, the price first sweeps the previous day’s low (PDL) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bullish Fair Value Gap (FVG) forms, which serves as the price target.
To confirm the entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should be observed, signaling a trend reversal to the upside. Additionally, SMT divergence with correlated assets can indicate weakness in selling pressure.
Under these conditions, a long position is taken below the Midnight Open, with a stop-loss placed at the lowest point of the recent bearish move. The price target for this trade is the FVG in the 1-hour timeframe.
🟣 Bearish Twitter Model
In a bearish setup, the price first sweeps the previous day’s high (PDH) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bearish Fair Value Gap (FVG) is identified, serving as the trade target.
To confirm entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should form, signaling a trend shift to the downside. If an SMT divergence is present, it can provide additional confirmation for the trade.
Once these conditions are met, a short position is taken above the Midnight Open, with a stop-loss placed at the highest level of the recent bullish move. The trade's price target is the FVG in the 1-hour timeframe.
🔵 Settings
Bar Back Check : Determining the return of candles to identify the CISD level.
CISD Level Validity : CISD level validity period based on the number of candles.
Daily Position : Determines whether only the first signal of the day is considered or if signals are evaluated throughout the entire day.
Session : Specifies in which trading sessions the indicator will be active.
Second Symbol : This setting allows you to select another asset for comparison with the primary asset. By default, "XAUUSD" (Gold) is set as the second symbol, but you can change it to any currency pair, stock, or cryptocurrency. For example, you can choose currency pairs like EUR/USD or GBP/USD to identify divergences between these two assets.
Divergence Fractal Periods : This parameter defines the number of past candles to consider when identifying divergences. The default value is 2, but you can change it to suit your preferences. This setting allows you to detect divergences more accurately by selecting a greater number of candles.
The indicator allows displaying sessions based on various time zones. The user can select one of the following options :
UTC (Coordinated Universal Time)
Local Time of the Session
User’s Local Time
Show Open Price : Displays the New York market opening price.
Show PDH / PDL : Displays the previous day’s high and low to identify potential entry points.
Show SMT Divergence : Displays lines and labels for bullish ("+SMT") and bearish ("-SMT") divergences.
🔵 Conclusion
The Twitter Model ICT is an effective approach for analyzing and executing trades in financial markets, utilizing a combination of liquidity principles, market structure, and SMT confirmations to identify optimal entry and exit points.
By analyzing the previous day’s high and low (PDH/PDL), Fair Value Gaps (FVG), and Market Structure Shift (MSS) in the 1H and M15 timeframes, traders can pinpoint liquidity-driven trade opportunities. Additionally, considering the Midnight Open level helps traders avoid random entries and ensures better trade placement.
By applying this model, traders can interpret market movements based on liquidity flow and structural changes, allowing them to fine-tune their trading decisions with higher precision. Ultimately, the Twitter Model ICT provides a structured and logical approach for traders who seek to trade based on liquidity behavior and trend shifts in the market.