Educational
Trading Checklist - POI & iFVG StrategyInspired by Navi Trades rules of trade engagement, I'm keeping it open on the side of the chart as reminder
Watch: www.youtube.com
Read: www.notion.so
Indicators Navi Uses:
iFVG:
CCT:
VWT:
Sessions: ICT Killzones + Pivots indicator
**Strategy**
**A+ Trade (Bullish Example):**
- Wait for a H1 candle to above virgin wick(s)
- Virgin wick(s) becomes H1 Bullish POIs
- Drop to M1 and look for price to trade under POI (can be wick or close)
- Then wait for a confirmed iFVG
- (iFVG can be on either side of POI)
- Limit order on confirmation of iFVG
**TP/SL:**
- SL: Just on the other side of the iFVG or the entry candle (which ever is further/safer)
- TP: Obvious DOL OR 2R is DOL is more than 2R away
- If DOL is significantly more than 2R away, I will widen the SL a bit and lessen the TP a bit
- No partial TP, No moving SL, No trailing, No breakeven. Either SL or TP
- Risk = 10% of drawdown ($200 for $50k Lucid accounts)
- Contract size will change depending on how far SL is so I can maintain same $ risk
**A+ Rules**
- Each POI is only valid for an hour
- If still in trade at end of hour, let it play out
- No entries from XX:51
- If price already delivers off POI without giving entry I will not consider it anymore
- There must be an obvious DOL - I will not target empty space
- 1.5R MINIMUM, 2R MAXIMUM
**A+ Process:**
- Wait for iFVG alert
- Check that none of the above rules have been breached
- Check if price engaged with respective POI (bullish/bearish) - this is where indicators help (personal preference) (you still need to understand the model)
- Limit order at iFVG confirmation
- SL on other side of iFVG or entry candle (which ever is further)
- TP at clear DOL (2R max)
- If DOL is a lot more than 2R away - can widen SL a bit
**Reminders**
- Process > Profits.
- A perfectly executed red day > poorly executed green day
- Follow your system.
- Trust your edge - trading is a probabilities game.
- You can lose more than half of your trades and STILL BE PROFITABLE
- There will be losses. That is a part of this business. There is no model in the world that has a 100% win rate.
- Be grateful for the opportunity to make magic internet monies by clicking buttons on a screen
Strat Master FTFC V5Setup Ready alert fires on the close of the last “setup” candle (the candle right before the entry trigger candle).
Entry alert still fires intrabar when the current candle becomes 2U/2D and takes out the trigger.
Below is the fully updated, compiling Pine v5 script with:
All your reversal patterns
Real FTFC (0–3) + flip alerts
Calls/Puts bias + strike
Gap-safe takeout (no crossover)
NEW: Setup Ready alerts for every pattern (bar-close only)
Strat Master FTFC v1Setup Ready alert fires on the close of the last “setup” candle (the candle right before the entry trigger candle).
Entry alert still fires intrabar when the current candle becomes 2U/2D and takes out the trigger.
Below is the fully updated, compiling Pine v5 script with:
All your reversal patterns
Real FTFC (0–3) + flip alerts
Calls/Puts bias + strike
Gap-safe takeout (no crossover)
NEW: Setup Ready alerts for every pattern (bar-close only)
Night Mode Session | ZeeZeeMon🇷🇺 Описание (Russian)
Night Mode Session Highlight
Night Mode Session Highlight — это визуальный индикатор, предназначенный для подсветки заданного временного диапазона на графике. Индикатор позволяет выделять ночную торговую сессию или любой другой временной интервал с помощью фоновой заливки, что упрощает анализ поведения цены в определённые часы.
Основные возможности
Подсветка выбранного временного диапазона на графике
Настройка времени сессии в формате HHMM–HHMM
Выбор таймзоны из выпадающего списка (IANA)
Настраиваемый цвет и прозрачность фоновой заливки
Корректная работа с интервалами, пересекающими полночь
Совместимость со всеми таймфреймами и инструментами
Параметры
Ночной режим (сессия) — временной интервал, который будет подсвечиваться (например, 0000-0800)
Таймзона — таймзона, относительно которой рассчитывается сессия
Цвет ночной подсветки — цвет и прозрачность фоновой заливки
Принцип работы
Индикатор проверяет, попадает ли текущий бар в заданную временную сессию с учётом выбранной таймзоны. Если условие выполняется, фон графика окрашивается выбранным цветом.
Назначение
Индикатор может использоваться для:
анализа ночной или азиатской сессии
визуального разделения торговых периодов
изучения волатильности и ликвидности в разные часы
вспомогательной визуальной фильтрации графика
Индикатор не генерирует торговых сигналов и не является торговой стратегией.
🇬🇧 Description (English)
Night Mode Session Highlight
Night Mode Session Highlight is a visual indicator designed to highlight a specific time range on the chart. It allows users to mark the night trading session or any custom time interval using background shading, making it easier to analyze price behavior during selected hours.
Key Features
Highlights a custom time session on the chart
Session time input in HHMM–HHMM format
Timezone selection via dropdown list (IANA)
Customizable background color and transparency
Correct handling of sessions crossing midnight
Works on all timeframes and instruments
Settings
Night Session — time range to be highlighted (e.g. 0000-0800)
Timezone — timezone used for session calculation
Night Background Color — background shading color and transparency
How It Works
The indicator checks whether the current bar belongs to the specified session using the selected timezone. If the condition is met, the chart background is filled with the chosen color.
Purpose
This indicator can be used for:
analyzing night or Asian trading sessions
visually separating trading periods
studying volatility and liquidity at different times
additional visual filtering of the chart
This indicator does not generate trading signals and is not a trading strategy.
25 EMA High-Low Band with 200 EMA by Basanta25 EMA High-Low Band with 200 EMA by Basanta.
This indicator is purely for Trend Trading by observing the Exponential moving average 200.
When the price is above EMA 200 it is considered Bullish and When the price is below EMA 200 it is considered Bearish. Entry will be made in pullback of 25 EMA.
PaisaPani - Nifty Demo PerformanceThis script displays a DEMO performance table only.
It does NOT generate real-time Buy/Sell signals.
🔒 PaisaPani Nifty Strategy is Invite-Only
The complete logic, entries, exits, and risk management are locked to protect users.
What this script shows
Sample Nifty trade performance (demo data)
Trade structure & outcome format
Educational / showcase purpose only
What this script does NOT do
❌ No live signals
❌ No automation
❌ No profit guarantees
📩 To request access
Please message me directly on TradingView.
⚠ Disclaimer
This script is for educational and demonstration purposes only.
Trading in markets involves risk. Use at your own responsibility
PaisaPani - Demo Performance📌 PaisaPani – Demo Performance (Invite-Only)
This script is only a DEMO performance display.
It does NOT generate live Buy/Sell signals.
🔒 PaisaPani Strategy is Invite-Only
The real logic, entries, exits, and risk management are locked to protect users.
What this script shows:
Sample performance table (demo data)
Trade format & consistency preview
Educational / showcase purpose only
What this script does NOT do:
❌ No live signals
❌ No auto trading
❌ No guarantee of profits
📩 To request access:
Please message me directly on TradingView.
⚠ Disclaimer:
This script is for educational and demonstration purposes only.
Trading involves risk. Use at your own responsibility.
Test screener to be deletedTest screener to be deleted
Test screener to be deleted
Test screener to be deleted
Test screener to be deleted
Test screener to be deleted
TA Checklist and Kontext and VstupKontext a vstup pravidla TA, jednoduché věty pro vlastní vstup a přehled.
Kadunagra-Pivot Point SuperTrend-trades analysis
📊 Pivot Point SuperTrend Strategy (MA-Filtered, 100% Equity)
This strategy is a trend-following system that combines Pivot Point–based SuperTrend logic with a higher-timeframe Moving Average filter and percentage-based risk control.
---
🔹 Core Logic
1️⃣ Trend Detection (Pivot Point SuperTrend)
Uses pivot highs and lows to calculate a dynamic center line
Builds ATR-based upper and lower bands
Determines market trend:
Bullish trend when price breaks above the trailing band
Bearish trend when price breaks below the trailing band
Trend changes generate:
Buy signal → trend flips from bearish to bullish
Sell signal → trend flips from bullish to bearish
---
2️⃣ Moving Average Trend Filter (User-Selectable)
A single Moving Average is used as a higher-timeframe confirmation
User can select the MA type from a dropdown:
SMA, EMA, WMA, VWMA, RMA, or HMA
Trade rules:
Long trades only when price is above the selected MA
Short trades only when price is below the selected MA
This helps avoid counter-trend trades and improves signal quality.
---
3️⃣ Trade Execution & Position Sizing
Strategy uses 100% of account equity per trade
No pyramiding
Long and short trades are handled symmetrically
---
4️⃣ Risk Management (Percentage Stop-Loss)
Uses a fixed percentage stop-loss
Stop-loss is calculated from the actual entry price:
Long SL → Entry Price − SL%
Short SL → Entry Price + SL%
Ensures consistent risk control across all trades
---
⏱ Recommended Timeframe & Market
✅ Default / Optimized Use Case
Timeframe: 4-Hour (4H)
Market: BTC (Bitcoin)
MA Length (default): 200 EMA
ATR Factor & Period: Tuned for swing-style trend moves
These default parameters are best suited for 4H BTC based on trend behavior and volatility.
---
⚙️ Customization & Flexibility
All parameters are fully adjustable and can be optimized for:
Different timeframes (1H, Daily, etc.)
Other cryptocurrencies or markets
More aggressive or conservative risk profiles
You can modify:
Pivot period
ATR factor & period
MA type and length
Stop-loss percentage
---
🧠 Strategy Style Summary
✔ Trend-following
✔ MA-filtered confirmation
✔ No repaint logic
✔ Works best in trending markets
✔ Suitable for swing trading
Peter's Relative Strength vs VTI (1 year)In Stockcharts.com, I would always view 1-year charts and have a RS line showing relative strength of the stock or ETF I'm looking at relative to VTI. When I moved to TradingView, this information was harder to see, so I made this indicator. It always shows what the stock or ETF has done relative to the wider market over the past 1 year.
Heikin Ashi SMA 9 / 20 / 50 (MTF + Selectable Source)This is simple Heikin ashi value three moving average as 9 / 20 / 50 for clear trend identification . use it wisely with other confirmation .
SuperTrend AI + PVSRA Full DashboardI tried to combine various indicators already created in a single version that can also guarantee a certain customization on colors, intensity of tables, etc. etc. The functioning, the operation is similar to the previous ones, I won't go into detail, at most take a look at the previous versions.
1. The "AI" Component: Multi-SuperTrend Clustering
Instead of using a single SuperTrend with a fixed multiplier, this script:
Simultaneously runs multiple SuperTrends with different sensitivities (multipliers).
Evaluates Performance: It tracks which multiplier would have been most profitable in recent bars.
K-Means Clustering: It uses an AI algorithm to group these multipliers into "Best," "Average," and "Worst" clusters.
Adaptive Trailing Stop: It automatically selects the "Best" multiplier to plot the AI Trailing Stop line on your chart, making it more responsive to changing market volatility than a standard indicator.
2. PVSRA Logic (Institutional Volumes)
PVSRA stands for Price Volume Support Resistance Analysis. The script re-colors candles based on volume intensity:
Climax Bull (Bright Green): Extremely high volume on a bullish candle. Usually indicates institutional buying or a trend climax.
Climax Bear (Magenta/Purple): Extremely high volume on a bearish candle. Usually indicates institutional selling or a panic bottom.
Rising (Grey/Silver): Above-average volume, showing increasing interest.
3. The "Super Confluence" Signal
This is the "Golden Signal" of the script. It triggers a BUY or SELL label only when several conditions align:
AI Trend Switch: The AI Trailing Stop flips direction.
SMA 20 Cross: The AI line crosses the 20-period Simple Moving Average.
Volume Confirmation: A PVSRA Climax or Rising volume must occur on that specific bar.
Directional Alignment: The candle color must match the trend direction.
4. Summary Dashboard (Top Right)
The dashboard provides a "Quick Glance" at the market structure:
AI Trend: Shows if the machine learning model is currently Bullish or Bearish.
PVSRA Vol: Identifies the current volume signature (Normal vs. Climax).
SMA 20/50: Shows medium-term momentum (Bullish if 20 > 50).
Trend 200: Shows the macro trend. ABOVE means long-term bullish; BELOW means long-term bearish.
How to Trade with This Script
Signal Strategy
"SUPER CONFLUENCE BUY" Look for entries. High probability if Trend 200 is "ABOVE".
"SUPER CONFLUENCE SELL" Look for shorts. High probability if Trend 200 is "BELOW".
Magenta/Green Candles Caution: These are "Stop Hunts" or "Institutional Entries." Do not
trade against these candles without a clear reversal pattern.
Technical Tip
The variable target_f is the "AI-optimized multiplier." If you see this value changing frequently in the dashboard, it means the market is volatile, and the AI is struggling to find a stable trend. If it stays consistent, the trend is likely solid.
Thanks everyone and happy trading
Volume SMA 9 / 20 / 50This is real time volume average lines having option to select period of volume lines . it not only provides volume with respect to price action but also we can find out real picture of price action pressure. use it with ADX and MACD wisely . only volume spike is not confirmation some times fake breakout , so wait for confirmation and participate at breakout confirmation.
SuperTrend AI + PVSRA Full DashboardOPERATIONAL MANUAL: SuperTrend AI + PVSRA (4H Timeframe)
1. CORE STRATEGY OVERVIEW
The 4H timeframe is the "Institutional Standard." This strategy combines K-Means AI Clustering for trend detection with PVSRA (Price, Volume, Spread, Range Analysis) to identify bank maneuvers.
The goal is to enter trades only when AI trend, Institutional Volume, and Moving Average momentum align perfectly.
2. OPTIMAL 4H CONFIGURATION
AI Performance Memory: 15 to 20 (Provides trend stability against 4H noise).
Factor Range: 1.5 - 5.0 (Allows AI to scale during massive BTC/Crypto cycles).
PVSRA Climax Factor: 2.7 (The filter for significant institutional intervention).
SMA 200 (Institutional): Always active; serves as the ultimate "Bull/Bear" boundary.
3. ENTRY PROTOCOLS: "SUPER CONFLUENCE"
Entries are strictly executed upon the appearance of the SUPER CONFLUENCE label.
A. LONG SETUP (BUY)
AI Trend: The AI Trailing Stop line must be Teal (Bullish).
PVSRA Volume: A Green (Climax) or Blue (Rising) candle must be present.
The Trigger: A "SUPER CONFLUENCE BUY" tag appears (signaling a SMA 20 / AI Line crossover).
Confirmation: Higher probability if the Dashboard shows "Trend 200: ABOVE".
B. SHORT SETUP (SELL)
AI Trend: The AI Trailing Stop line must be Magenta/Red (Bearish).
PVSRA Volume: A Purple (Climax) or Orange (Rising) candle must be present.
The Trigger: A "SUPER CONFLUENCE SELL" tag appears.
Confirmation: Higher probability if the Dashboard shows "Trend 200: BELOW".
4. RISK & TRADE MANAGEMENT
ACTION 4H TIME-BASED RULE
Stop Loss Place SL behind the most recent PVSRA Climax candle wick or the AI Line.
Take Profit 1 Exit 50% at the nearest S/R Level (Red/Blue rectangles) or 1:1.5 RR.
Trailing Stop Trail the Dynamic SMA 20. Exit if the SMA 20 changes color against you.
Exit Signal Immediate exit if a Climax volume of the opposite color appears at a key level
for Me the best settings but You experiment and find yours;
ATR lenght AI :10
Factor range min 2 max 5
Step 1
Perfor.Mem.10
Source : Best
Volume Period 10
Climax 2.5
Multiplier Rising 1.5
Thank you all and happy trading
Micro Futures Risk Calculator (Minimal)risk calculator based off of stop distance. to keep risk consistent for consistent growth
Adaptive For LoopThe Adaptive For Loop is a new advanced trend following tool that can avoid false signals while keeping a high speed.
Benefits
- Good speed
- Low noise
- High Performance on INDEX:BTCUSD
- Plotting for clear visualization of trend and values.
The Idea
Before I tried using a For Loop on a singular piece of source - but every source was noisy in different parts and was not really that good.
So I got an idea: How about I make a for loop on all of them (open, high, low, close) and filter them to get the best out of all worlds?
How it works
Calculate the For Loop for open, high, low, close -> a For Loop compares the current value to past values and scores it accordingly.
After calculating them, it picks the one with the highest absolute value. This means only the for loop with the highest strength gets applied. This filters noise and provides users with high speed even in the environments that do not support it.
Enjoy Gs!
Trap longs - Hamza Naveed// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
//@version=5
indicator("Trap Longs - Hamza Naveed", max_labels_count = 500, overlay = false, format = format.volume)
g1 = '📊 Net Positions '
g2 = '📈 Moving Averages (VWMA/EMA) '
g3 = '⚙️ Additional Settings '
g4 = '🎚️ Profile '
g5 = '🖥️ Statistics '
g6 = '⚖️ Divergences'
// User inputs - General settings
dtype = input.string('Net Positions', 'Type', options = )
disp = input.string('Candles', 'Display as', options = )
cumu = input.string('Full Data', 'Cumulation', options = )
denom = input.string('Quote Currency', 'Quoted in', options = )
// User inputs - Data Source Settings
binance = input.bool(true, 'Binance USDT.P', inline = 'src')
binance2 = input.bool(true, 'Binance USD.P', inline = 'src')
binance3 = input.bool(true, 'Binance BUSD.P', inline = 'src2')
bitmex = input.bool(true, 'BitMEX USD.P', inline = 'src2')
bitmex2 = input.bool(true, 'BitMEX USDT.P ', inline = 'src3')
kraken = input.bool(true, 'Kraken USD.P', inline = 'src3')
// User inputs - Net Positions
showL = input.bool(true, 'NET LONGS ►', group = g1, inline='l')
showS = input.bool(false, 'NET SHORTS ►', group = g1, inline='s')
showD = input.bool(false, 'NET DELTA ►', group = g1, inline='d')
showR = input.bool(false, 'NET RATIO ►', group = g1, inline='r')
pcolL = input.color(#a5d6a7, '', group = g1, inline = 'l')
ncolL = input.color(#f77c80, '', group = g1, inline = 'l')
lcolL = input.color(#a5d6a7, '━', group = g1, inline = 'l')
pcolS = input.color(#a5d6a7, '', group = g1, inline = 's')
ncolS = input.color(#f77c80, '', group = g1, inline = 's')
lcolS = input.color(#faa1a4, '━', group = g1, inline = 's')
pcolD = input.color(#a5d6a7, '', group = g1, inline = 'd')
ncolD = input.color(#f77c80, '', group = g1, inline = 'd')
lcolD = input.color(#90bff9, '━', group = g1, inline = 'd')
pcolR = input.color(#a5d6a7, '', group = g1, inline = 'r')
ncolR = input.color(#f77c80, '', group = g1, inline = 'r')
lcolR = input.color(#f9d690, '━', group = g1, inline = 'r')
// User inputs - Net Positions EMAs
mat = input.string('VWMA', 'Type', options= , group=g2)
emaL = input.bool(false, 'LONGS ', group=g2, inline='emal')
emaS = input.bool(false, 'SHORTS ', group=g2, inline='emas')
emaD = input.bool(false, 'DELTA ',group=g2, inline='emad')
emaR = input.bool(false, 'RATIO ',group=g2, inline='emar')
emaLl = input.int(100, '', group=g2, inline='emal')
emaSl = input.int(100, '', group=g2, inline='emas')
emaDl = input.int(100, '', group=g2, inline='emad')
emaRl = input.int(100, '', group=g2, inline='emar')
emaLc = input.color(color.rgb(165, 214, 167, 60), '', group=g2, inline='emal')
emaSc = input.color(color.rgb(250, 161, 164, 60), '', group=g2, inline='emas')
emaDc = input.color(color.rgb(144, 191, 249, 60), '', group=g2, inline='emad')
emaRc = input.color(color.rgb(249, 214, 144, 60), '', group=g2, inline='emar')
// User inputs - Additional settings
volhm = input.bool(false, 'Volume HM', group=g3, inline='vol')
volc2 = input.color(color.rgb(49, 121, 245),'', group=g3, inline = 'vol')
offs = input.int (10, 'Label Offset', group=g3)
length = input.int (14, 'Position RSI Length', group=g3)
vlbl = input.bool(true, 'Value Labels', group=g3, inline='lv')
nlbl = input.bool(true, 'Data Labels', group=g3, inline='lv')
wick = input.bool(false, 'Show Candle Wicks', group=g3)
// User inputs - Profile settings
prof = input.bool (false, 'Generate a profile', group=g4)
profsrc = input.string('Net Longs', 'Profile Data', options = , group=g4)
vapct = input.float (70, 'Value Area %', minval = 5, maxval = 95, group = g4)
ori = input.string("Left", 'Position', options = , group = g4)
profSize = input.int (2, 'Node Size', minval = 1, group = g4)
rows = input.int (40, 'Rows', minval = 6, maxval = 500, step = 25, group = g4) - 1
vancol = input.color (color.new(color.blue, 75), 'Node Colors ', group = g4, inline = 'nc')
nvancol = input.color (color.new(color.gray, 75), '━', group = g4, inline = 'nc')
poc = input.bool (false, 'POC', group = g4, inline = 'POC'),
poccol = input.color (color.new(color.red, 50), ' ', group = g4, inline = "POC")
val = input.bool (false, 'VA', group = g4, inline = "VA")
vafill = input.color (color.new(color.blue, 95), ' ', group = g4, inline = 'VA')
// User inputs - Statistics
stats = input.bool(false, 'Show Stats', group = g5)
chg_b = input.int(50, 'Bars Back', group = g5)
tablevpos = input.string('Horizontal', 'Orientation', options= , group = g5)
tablepos = input.string('Bottom Center', 'Position', options= , group = g5)
stat_oi = input.bool(true, 'OI ━', group = g5, inline = 'oi')
stat_nl = input.bool(true, 'NL ━', group = g5, inline = 'nl')
stat_ns = input.bool(true, 'NS ━', group = g5, inline = 'ns')
stat_nd = input.bool(true, 'ND ━', group = g5, inline = 'nd')
stat_oi_c = input.bool(true, 'OI Change ━', group = g5, inline = 'oi')
stat_nl_c = input.bool(true, 'NL Change ━', group = g5, inline = 'nl')
stat_ns_c = input.bool(true, 'NS Change ━', group = g5, inline = 'ns')
stat_nd_c = input.bool(true, 'ND Change ━', group = g5, inline = 'nd')
stat_oi_r = input.bool(true, 'OI RSI', group = g5, inline = 'oi')
stat_nl_r = input.bool(true, 'NL RSI', group = g5, inline = 'nl')
stat_ns_r = input.bool(true, 'NS RSI', group = g5, inline = 'ns')
stat_nd_r = input.bool(true, 'ND RSI', group = g5, inline = 'nd')
// User inputs - Divergence Finder
showdiv = input.bool(false, 'Divergence finder', group = g6)
divsrc = input.string('Net Longs', 'Source', options = , group=g6)
pivotDistance = input.int(5, 'Maximum Distance', minval=0, group=g6)
leftPivot = input.int(8, 'Lookback Bars Left', minval=1, group=g6)
rightPivot = input.int(8, 'Lookback Bars Right', minval=1, group=g6)
pHH_npLH = input.bool(true, 'Price HH + Data LH', group = g6, inline='div1')
pLH_npHH = input.bool(true, 'Price LH + Data HH', group = g6, inline='div2')
pLL_npHL = input.bool(true, 'Price LL + Data HL ', group = g6, inline='div3')
pHL_npLL = input.bool(true, 'Price HL + Data LL ', group = g6, inline='div4')
pHH_npLHcol = input.color(color.red, '', group = g6, inline='div1')
pLH_npHHcol = input.color(color.red, '', group = g6, inline='div2')
pLL_npHLcol = input.color(color.green, '', group = g6, inline='div3')
pHL_npLLcol = input.color(color.green, '', group = g6, inline='div4')
// Getting OI data
mex = syminfo.basecurrency=='BTC' ? 'XBT' : string(syminfo.basecurrency)
= request.security('BINANCE' + ":" + string(syminfo.basecurrency) + 'USDT.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
= request.security('BINANCE' + ":" + string(syminfo.basecurrency) + 'USD.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
= request.security('BINANCE' + ":" + string(syminfo.basecurrency) + 'BUSD.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
= request.security('BITMEX' + ":" + mex + 'USD.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
= request.security('BITMEX' + ":" + mex + 'USDT.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
= request.security('KRAKEN' + ":" + string(syminfo.basecurrency) + 'USD.P_OI', timeframe.period, [close-close , close], ignore_invalid_symbol = true)
deltaOI = (binance ? nz(oid1,0) : 0) + (binance2 ? nz(oid2,0)/close : 0) + (binance3 ? nz(oid3,0) : 0) + (bitmex ? nz(oid4,0)/close : 0) + (bitmex2 ? nz(oid5,0)/close : 0) + (kraken ? nz(oid6,0)/close : 0)
OI = (binance ? nz(oi1,0) : 0) + (binance2 ? nz(oi2,0)/close : 0) + (binance3 ? nz(oi3,0) : 0) + (bitmex ? nz(oi4,0)/close : 0) + (bitmex2 ? nz(oi5,0)/close : 0) + (kraken ? nz(oi6,0)/close : 0)
// Conditions for positions entering and exiting
priceUP = close>open
priceDOWN = close0
oiDOWN = deltaOI<0
newlongs = oiUP and priceUP
rektlongs = oiDOWN and priceDOWN
newshorts = oiUP and priceDOWN
rektshorts = oiDOWN and priceUP
// Visible range
vrc = cumu=='Visible Range' ? time > chart.left_visible_bar_time and time <= chart.right_visible_bar_time : true
// Cumulation of positions entering and exiting
longs_entering = ta.cum(newlongs and vrc ? (denom=='Base Currency' ? deltaOI : deltaOI * close) : 0)
longs_exiting = ta.cum(rektlongs and vrc ? (denom=='Base Currency' ? deltaOI : deltaOI * close) : 0)
shorts_entering = ta.cum(newshorts and vrc ? (denom=='Base Currency' ? deltaOI : deltaOI * close) : 0)
shorts_exiting = ta.cum(rektshorts and vrc ? (denom=='Base Currency' ? deltaOI : deltaOI * close) : 0)
// Output data
net_longs = longs_entering - math.abs(longs_exiting)
net_shorts = shorts_entering - math.abs(shorts_exiting)
net_delta = net_longs - net_shorts
net_ratio = net_longs / net_shorts
// Calculating Relative Strength
longs_strength = ta.rsi(net_longs, length)
shorts_strength = ta.rsi(net_shorts, length)
delta_strength = ta.rsi(net_delta, length)
ratio_strength = ta.rsi(net_ratio, length)
oi_strength = ta.rsi(OI, length)
// Calculating candle OHLC
src = dtype=='Net Positions' ? net_longs : longs_strength
OpenL = wick ? ta.sma(src , 2) : src
HighL = ta.highest(src, 1)
LowL = ta.lowest(src, 1)
CloseL = wick ? ta.sma(src, 2) : src
src2 = dtype=='Net Positions' ? net_shorts : shorts_strength
OpenS = wick ? ta.sma(src2 , 2) : src2
HighS = ta.highest(src2, 1)
LowS = ta.lowest(src2, 1)
CloseS = wick ? ta.sma(src2, 2) : src2
src3 = dtype=='Net Positions' ? net_delta : delta_strength
OpenD = wick ? ta.sma(src3 , 2) : src3
HighD = ta.highest(src3, 1)
LowD = ta.lowest(src3, 1)
CloseD = wick ? ta.sma(src3, 2) : src3
src4 = dtype=='Net Positions' ? net_ratio : ratio_strength
OpenR = wick ? ta.sma(src4 , 2) : src4
HighR = ta.highest(src4, 1)
LowR = ta.lowest(src4, 1)
CloseR = wick ? ta.sma(src4, 2) : src4
// Calculating EMAs
Lema = mat=='EMA' ? ta.ema(src, emaLl) : ta.vwma(src, emaLl)
Sema = mat=='EMA' ? ta.ema(src2, emaSl) : ta.vwma(src2, emaSl)
Dema = mat=='EMA' ? ta.ema(src3, emaDl) : ta.vwma(src3, emaDl)
Rema = mat=='EMA' ? ta.ema(src4, emaRl) : ta.vwma(src4, emaRl)
// Conditions
lcondL = showL and (disp=='Line' or disp=='Columns'), ccondL = showL and disp=='Candles'
lcondS = showS and (disp=='Line' or disp=='Columns'), ccondS = showS and disp=='Candles'
lcondD = showD and (disp=='Line' or disp=='Columns'), ccondD = showD and disp=='Candles'
lcondR = showR and (disp=='Line' or disp=='Columns'), ccondR = showR and disp=='Candles'
// Plotting Lines
plot(lcondL ? src : na, title="Net Longs", color=disp=='Line' ? lcolL : (net_longs >0 ? pcolL : ncolL), linewidth=1, style = disp=='Line' ? plot.style_line : disp=='Columns' ? plot.style_columns : na, editable = false)
plot(lcondS ? src2 : na, title="Net Shorts", color=disp=='Line' ? lcolS : (net_shorts >0 ? pcolS : ncolS), linewidth=1, style = disp=='Line' ? plot.style_line : disp=='Columns' ? plot.style_columns : na, editable = false)
plot(lcondD ? src3 : na, title="Net Shorts", color=disp=='Line' ? lcolD : (net_delta >0 ? pcolD : ncolD), linewidth=1, style = disp=='Line' ? plot.style_line : disp=='Columns' ? plot.style_columns : na, editable = false)
plot(lcondR ? src4 : na, title="Net Ratio", color=disp=='Line' ? lcolR : (net_ratio >0 ? pcolR : ncolR), linewidth=1, style = disp=='Line' ? plot.style_line : disp=='Columns' ? plot.style_columns : na, editable = false)
// Plotting Candles
plotcandle(ccondL ? OpenL : na, ccondL ? HighL : na, ccondL ? LowL : na, ccondL ? CloseL : na, "Longs", CloseL>OpenL ? pcolL : ncolL, CloseL>OpenL ? pcolL : ncolL, false, bordercolor = CloseL>OpenL ? pcolL : ncolL)
plotcandle(ccondS ? OpenS : na, ccondS ? HighS : na, ccondS ? LowS : na, ccondS ? CloseS : na, "Shorts", CloseS>OpenS ? pcolS : ncolS, CloseS>OpenS ? pcolS : ncolS, false, bordercolor = CloseS>OpenS ? pcolS : ncolS)
plotcandle(ccondD ? OpenD : na, ccondD ? HighD : na, ccondD ? LowD : na, ccondD ? CloseD : na, "Delta", CloseD>OpenD ? pcolD : ncolD, CloseD>OpenD ? pcolD : ncolD, false, bordercolor = CloseD>OpenD ? pcolD : ncolD)
plotcandle(ccondR ? OpenR : na, ccondR ? HighR : na, ccondR ? LowR : na, ccondR ? CloseR : na, "Ratio", CloseR>OpenR ? pcolR : ncolR, CloseR>OpenR ? pcolR : ncolR, false, bordercolor = CloseR>OpenR ? pcolR : ncolR)
// Plotting EMAs
plot(emaL ? Lema : na, color=emaLc, editable = false)
plot(emaS ? Sema : na, color=emaSc, editable = false)
plot(emaD ? Dema : na, color=emaDc, editable = false)
plot(emaR ? Rema : na, color=emaRc, editable = false)
// Plotting Relative Strength
plot(dtype=='Position RSI' ? 100 : na, color=color.rgb(120, 123, 134, 90), title = 'RSI 100')
plot(dtype=='Position RSI' ? 70 : na, color=color.rgb(120, 123, 134, 72), title = 'RSI 70')
plot(dtype=='Position RSI' ? 50 : na, color=color.rgb(120, 123, 134, 90), title = 'RSI 50')
plot(dtype=='Position RSI' ? 30 : na, color=color.rgb(120, 123, 134, 72), title = 'RSI 30')
plot(dtype=='Position RSI' ? 0 : na, color=color.rgb(120, 123, 134, 90), title = 'RSI 0')
// Volume Heatmap
vol = volume
volmax = ta.highest(volume, 50)
col = color.from_gradient(volume, 0, volmax, chart.bg_color, volc2)
plotshape(time>chart.left_visible_bar_time and volhm, style=shape.square, size=size.normal,location = location.bottom, color=col, editable = false)
// Labels
if vlbl and disp=='Candles'
vLlabel = showL ? label.new(bar_index, CloseL>OpenL ? HighL : LowL, newlongs or rektlongs ? str.tostring(deltaOI, format.volume) : na, size = size.auto, color=color.rgb(255, 255, 255, 100), textcolor = chart.fg_color, style = CloseL>OpenL ? label.style_label_down : label.style_label_up) : na
vSlabel = showS ? label.new(bar_index, CloseS>OpenS ? HighS : LowS, newshorts or rektshorts ? str.tostring(deltaOI, format.volume) : na, size = size.auto, color=color.rgb(255, 255, 255, 100), textcolor = chart.fg_color, style = CloseS>OpenS ? label.style_label_down : label.style_label_up) : na
vDlabel = showD ? label.new(bar_index, CloseD>OpenD ? HighD : LowD, str.tostring(deltaOI, format.volume), size = size.auto, color=color.rgb(255, 255, 255, 100), textcolor = chart.fg_color, style = CloseD>OpenD ? label.style_label_down : label.style_label_up) : na
vRlabel = showR ? label.new(bar_index, CloseR>OpenR ? HighR : LowR, str.tostring(deltaOI, format.volume), size = size.auto, color=color.rgb(255, 255, 255, 100), textcolor = chart.fg_color, style = CloseR>OpenR ? label.style_label_down : label.style_label_up) : na
if nlbl and disp!='Columns'
Llabel = showL ? label.new(bar_index+offs, src, 'NET LONGS', size = size.tiny, color=lcolL, textcolor = color.black, style = label.style_label_left) : na
Slabel = showS ? label.new(bar_index+offs, src2, 'NET SHORTS', size = size.tiny, color=lcolS, textcolor = color.black, style = label.style_label_left) : na
Dlabel = showD ? label.new(bar_index+offs, src3, 'NET DELTA', size = size.tiny, color=lcolD, textcolor = color.black, style = label.style_label_left) : na
Rlabel = showR ? label.new(bar_index+offs, src4, 'NET RATIO', size = size.tiny, color=lcolR, textcolor = color.black, style = label.style_label_left) : na
label.delete(Llabel )
label.delete(Slabel )
label.delete(Dlabel )
label.delete(Rlabel )
// Generating a profile - Code from @KioseffTrading's "Profile Any Indicator" script (used with their permission)
srcp = profsrc=='Net Longs' ? src : profsrc=='Net Shorts' ? src2 : profsrc=='Net Delta' ? src3 : src4
var int timeArray = array.new_int()
var float dist = array.new_float()
var int x2 = array.new_int(rows + 1, 5)
var vh = matrix.new(1, 1)
array.unshift(timeArray, math.round(time))
if prof and time >= chart.left_visible_bar_time and time <= chart.right_visible_bar_time
matrix.add_col(vh)
matrix.set(vh, 0, matrix.columns(vh) - 1, srcp)
if prof and barstate.islast
= switch ori
"Left" =>
=>
calc = (matrix.max(vh) - matrix.min(vh)) / (rows + 1)
for i = 0 to rows
array.push(dist, matrix.min(vh) + (i * calc))
for i = 1 to matrix.columns(vh) - 1
for x = 0 to array.size(dist) - 1
if matrix.get(vh, 0, i) >= matrix.get(vh, 0, i - 1)
if array.get(dist, x) >= matrix.get(vh, 0, i - 1) and array.get(dist, x) <= matrix.get(vh, 0, i)
array.set(x2, x, array.get(x2, x) + profSize)
else
if array.get(dist, x) >= matrix.get(vh, 0, i) and array.get(dist, x) <= matrix.get(vh, 0, i - 1)
array.set(x2, x, array.get(x2, x) + profSize)
boc = array.new_box()
for i = 1 to rows
right = array.get(timeArray, n + array.get(x2, i))
if ori == "Left"
switch math.sign(n - array.get(x2, i))
-1 => right := chart.right_visible_bar_time
=> right := array.get(timeArray, n - array.get(x2, i))
array.push(boc, box.new(pos, array.get(dist, i - 1),
right, array.get(dist, i), xloc = xloc.bar_time, border_color =
nvancol, bgcolor = nvancol
))
if i == rows
array.push(boc, box.new(pos, array.get(dist, array.size(dist) - 1),
right, array.get(dist, array.size(dist) - 1) + calc, xloc = xloc.bar_time, border_color =
nvancol, bgcolor = nvancol
))
array.shift(x2), nx = array.indexof(x2, array.max(x2))
nz = nx - 1, nz2 = 0, nz3 = 0, nz4 = 0
for i = 0 to array.size(x2) - 1
if nz > -1 and nx <= array.size(x2) - 1
switch array.get(x2, nx) >= array.get(x2, nz)
true => nz2 += array.get(x2, nx), nx += 1
=> nz2 += array.get(x2, nz), nz -= 1
else if nz <= -1
nz2 += array.get(x2, nx), nx += 1
else if nx >= array.size(x2)
nz2 += array.get(x2, nz), nz -= 1
if nz2 >= array.sum(x2) * (vapct / 100)
nz3 := nx <= array.size(x2) - 1 ? nx : array.size(x2) - 1, nz4 := nz <= -1 ? 0 : nz
break
for i = nz3 to nz4
box.set_border_color(array.get(boc, i), vancol)
box.set_bgcolor(array.get(boc, i), vancol)
if poc
var pocL = line(na)
y = math.avg(box.get_top(array.get(boc, array.indexof(x2, array.max(x2)))), box.get_bottom(array.get(boc, array.indexof(x2, array.max(x2)))))
if na(pocL)
pocL := line.new(chart.left_visible_bar_time, y, chart.right_visible_bar_time, y, xloc = xloc.bar_time, color = poccol, width = 1)
else
line.set_xy1(pocL, chart.left_visible_bar_time, y)
line.set_xy2(pocL, chart.right_visible_bar_time, y)
if val
var vaup = line(na), var vadn = line(na)
ydn = box.get_bottom(array.get(boc, nz3)), yup = box.get_top(array.get(boc, nz4))
if na(vaup)
vadn := line.new(chart.left_visible_bar_time, ydn, chart.right_visible_bar_time, ydn, xloc = xloc.bar_time, color = vancol, width = 1)
vaup := line.new(chart.left_visible_bar_time, yup, chart.right_visible_bar_time, yup, xloc = xloc.bar_time, color = vancol, width = 1)
else
line.set_xy1(vadn, chart.left_visible_bar_time, ydn), line.set_xy2(vadn, chart.right_visible_bar_time, ydn)
line.set_xy1(vaup, chart.left_visible_bar_time, yup), line.set_xy2(vaup, chart.right_visible_bar_time, yup)
linefill.new(vadn, vaup, vafill)
//Generating tables for Stats
switchpos(tablepos) =>
switch tablepos
'Top Left' => position.top_left
'Top Center' => position.top_center
'Top Right' => position.top_right
'Bottom Left' => position.bottom_left
'Bottom Center' => position.bottom_center
'Bottom right' => position.bottom_right
dataTable = table.new(switchpos(tablepos), columns=15, rows=15, bgcolor=color.rgb(120, 123, 134, 56))
fill_rows(cond, txt, c, r) =>
if cond
table.cell(table_id=dataTable, column = tablevpos=='Horizontal' ? c : 0, row = tablevpos=='Horizontal' ? 0 : r, text = txt, height=0, text_color=color.white, text_halign=text.align_center, text_valign= text.align_center)
if barstate.islast and stats and dtype!='Position RSI'
txt = ' •𝗢𝗜: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(denom=='Base Currency' ? OI : OI*close, format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt2 = ' •𝗡𝗟: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_longs, format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt3 = ' •𝗡𝗦: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_shorts, format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt4 = ' •𝗡𝗗: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_delta, format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt5 = ' •𝗢𝗜𝗖: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(denom=='Base Currency' ? OI-OI : (OI-OI ) * close, format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt6 = ' •𝗡𝗟𝗖: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_longs - net_longs , format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt7 = ' •𝗡𝗦𝗖: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_shorts - net_shorts , format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt8 = ' •𝗡𝗗𝗖: ' + (denom=='Quote Currency' ? '$' : '') + str.tostring(net_delta - net_delta , format = format.volume) + ' ' + (denom=='Base Currency' ? str.tostring(string(syminfo.basecurrency)) : '')
txt9 = ' •𝗢𝗜 𝗥𝗦𝗜: ' + str.tostring(math.round(oi_strength,1))
txt10 = ' •𝗡𝗟 𝗥𝗦𝗜: ' + str.tostring(math.round(longs_strength,1))
txt11 = ' •𝗡𝗦 𝗥𝗦𝗜: ' + str.tostring(math.round(shorts_strength, 1))
txt12 = ' •𝗡𝗗 𝗥𝗦𝗜: ' + str.tostring(math.round(delta_strength, 1))
fill_rows(stat_oi, txt, 0, 0)
fill_rows(stat_nl, txt2, 1, 1)
fill_rows(stat_ns, txt3, 2, 2)
fill_rows(stat_nd, txt4, 3, 3)
fill_rows(stat_oi_c, txt5, 4, 4)
fill_rows(stat_nl_c, txt6, 5, 5)
fill_rows(stat_ns_c, txt7, 6, 6)
fill_rows(stat_nd_c, txt8, 7, 7)
fill_rows(stat_oi_r, txt9, 8, 8)
fill_rows(stat_nl_r, txt10, 9, 9)
fill_rows(stat_ns_r, txt11, 10, 10)
fill_rows(stat_nd_r, txt12, 11, 11)
// Divergence Finder
switchdivsrc(divsrc) =>
switch divsrc
'Net Longs' => src
'Net Shorts' => src2
'Net Delta' => src3
'Net Ratio' => src4
np = switchdivsrc(divsrc)
var priceHigh = array.new_float(0), var priceLow = array.new_float(0)
var priceHighIndex = array.new_int (0), var priceLowIndex = array.new_int (0)
var npHigh = array.new_float(0), var npLow = array.new_float(0)
var npHighIndex = array.new_int (0), var npLowIndex = array.new_int (0)
var priceHighTrend = 0, var priceLowTrend = 0
var npHighTrend = 0, var npLowTrend = 0
bool closeRecentHighs = false, bool closeOldHighs = false
bool closeHighs = false, bool closeRecentLows = false
bool closeOldLows = false, bool closeLows = false
curPriceHigh = ta.pivothigh(close, leftPivot, rightPivot)
curPriceLow = ta.pivotlow (close, leftPivot, rightPivot)
curnpHigh = ta.pivothigh(np, leftPivot, rightPivot)
curnpLow = ta.pivotlow (np, leftPivot, rightPivot)
if not na(curPriceHigh)
array.push(priceHigh, curPriceHigh)
array.push(priceHighIndex, bar_index-rightPivot)
if not na(curPriceLow)
array.push(priceLow, curPriceLow)
array.push(priceLowIndex, bar_index-rightPivot)
if not na(curnpHigh)
array.push(npHigh, curnpHigh)
array.push(npHighIndex, bar_index-rightPivot)
if not na(curnpLow)
array.push(npLow, curnpLow)
array.push(npLowIndex, bar_index-rightPivot)
if showdiv
if array.size(priceHigh) >= 2 and not na(curPriceHigh)
if array.get(priceHigh, array.size(priceHigh)-1) >= array.get(priceHigh, array.size(priceHigh)-2)
priceHighTrend := 1
else
priceHighTrend := -1
if array.size(priceLow) >= 2 and not na(curPriceLow)
if array.get(priceLow, array.size(priceLow)-1) >= array.get(priceLow, array.size(priceLow)-2)
priceLowTrend := 1
else
priceLowTrend := -1
if array.size(npHigh) >= 2 and not na(curnpHigh)
if array.get(npHigh, array.size(npHigh)-1) >= array.get(npHigh, array.size(npHigh)-2)
npHighTrend := 1
else
npHighTrend := -1
if array.size(npLow) >= 2 and not na(curnpLow)
if array.get(npLow, array.size(npLow)-1) >= array.get(npLow, array.size(npLow)-2)
npLowTrend := 1
else
npLowTrend := -1
if array.size(priceHighIndex) >= 2 and array.size(npHighIndex) >=2
closeRecentHighs := math.abs(array.get(priceHighIndex, array.size(priceHighIndex)-1) - array.get(npHighIndex, array.size(npHighIndex)-1)) <= pivotDistance
closeOldHighs := math.abs(array.get(priceHighIndex, array.size(priceHighIndex)-2) - array.get(npHighIndex, array.size(npHighIndex)-2)) <= pivotDistance
closeHighs := closeRecentHighs and closeOldHighs
if array.size(priceLowIndex) >= 2 and array.size(npLowIndex) >=2
closeRecentLows := math.abs(array.get(priceLowIndex, array.size(priceLowIndex)-1) - array.get(npLowIndex, array.size(npLowIndex)-1)) <= pivotDistance
closeOldLows := math.abs(array.get(priceLowIndex, array.size(priceLowIndex)-2) - array.get(npLowIndex, array.size(npLowIndex)-2)) <= pivotDistance
closeLows := closeRecentLows and closeOldLows
bool uptrendExhuastion = closeHighs and priceHighTrend > 0 and npHighTrend < 0 and (not na(curnpHigh) or not na(curPriceHigh))
bool uptrendAbsorption = closeHighs and priceHighTrend < 0 and npHighTrend > 0 and (not na(curnpHigh) or not na(curPriceHigh))
bool downtrendExhuastion = closeLows and priceLowTrend < 0 and npLowTrend > 0 and (not na(curnpLow) or not na(curPriceLow))
bool downtrendAbsorption = closeLows and priceLowTrend > 0 and npLowTrend < 0 and (not na(curnpLow) or not na(curPriceLow))
drawDiv(time1, price1, time2, price2, type) =>
dcol = type == 'Uptrend Exhuastion' ? pHH_npLHcol : type == 'Uptrend Absorption' ? pLH_npHHcol : type == 'Downtrend Exhaustion' ? pLL_npHLcol : type == 'Downtrend Absorption' ? pHL_npLLcol : na
line.new(x1=time1, y1=price1, x2=time2, y2=price2, color=dcol, width=1)
if uptrendAbsorption or uptrendExhuastion and showdiv
highTime1 = array.get(npHighIndex, array.size(npHighIndex)-1)
highPrice1 = array.get(npHigh, array.size(npHigh)-1)
highTime2 = array.get(npHighIndex, array.size(npHighIndex)-2)
highPrice2 = array.get(npHigh, array.size(npHigh)-2)
if uptrendExhuastion and pHH_npLH
drawDiv(highTime1, highPrice1, highTime2, highPrice2, 'Uptrend Exhuastion')
if uptrendAbsorption and pLH_npHH
drawDiv(highTime1, highPrice1, highTime2, highPrice2, 'Uptrend Absorption')
if downtrendAbsorption or downtrendExhuastion and showdiv
lowTime1 = array.get(npLowIndex, array.size(npLowIndex)-1)
lowPrice1 = array.get(npLow, array.size(npLow)-1)
lowTime2 = array.get(npLowIndex, array.size(npLowIndex)-2)
lowPrice2 = array.get(npLow, array.size(npLow)-2)
if downtrendExhuastion and pLL_npHL
drawDiv(lowTime1, lowPrice1, lowTime2, lowPrice2, 'Downtrend Exhuastion')
if downtrendAbsorption and pHL_npLL
drawDiv(lowTime1, lowPrice1, lowTime2, lowPrice2, 'Downtrend Absorption')
Gaps-Trendlines-CHOCH-BOS By @crypto_alphabitBINANCE:BTCUSDT
This indicator includes .....
1) Fair value gaps ...
* Bullish gaps
* Bearish gaps
* Automatically removed when the gaps filled
* Gaps color can be changed from setting
2) Recent Trend lines
* Higher trend lines ( from high to high)
* Lower trend lines ( from low to low )
* Higher trend lines breakout ( Bullish Breakout)
* Lower trend lines breakout ( bearish Breakout)
* Coloring breakout candle
* Colors can be changed from setting
* Swing lookback can be changed from setting
* Alert for Bullish Breakout
* Alert for Bearish Breakout
3) COCH & BOS
* Bullish Change of character
* Bearish change of character
* Bullish break of structure
* Bearish break of structure
* Swing lookback can be changed from setting
* Keeping specific number of last drawings
* keeping and removing exact ( CHOCH or BOS) can be managed from setting
* Colors can be changed from setting
* Alert for Bullish CHOCH
* Alert for Bearish CHOCH
* Alert for Bullish BOS
* Alert for Bearish BOS
Thank you for reading .... by @Crypto_alphabit






















