FvgTypes█ OVERVIEW
This library serves as a foundational module for Pine Script™ projects focused on Fair Value Gaps (FVGs). Its primary purpose is to define and centralize custom data structures (User-Defined Types - UDTs) and enumerations that are utilized across various components of an FVG analysis system. By providing standardized types for FVG characteristics and drawing configurations, it promotes code consistency, readability, and easier maintenance within a larger FVG indicator or strategy.
█ CONCEPTS
The library introduces several key data structures (User-Defined Types - UDTs) and an enumeration to organize Fair Value Gap (FVG) related data logically. These types are central to the functioning of FVG analysis tools built upon this library.
Timeframe Categorization (`tfType` Enum)
To manage and differentiate FVGs based on their timeframe of origin, the `tfType` enumeration is defined. It includes:
`LTF`: Low Timeframe (typically the current chart).
`MTF`: Medium Timeframe.
`HTF`: High Timeframe.
This allows for distinct logic and visual settings to be applied depending on the FVG's source timeframe.
FVG Data Encapsulation (`fvgObject` UDT)
The `fvgObject` is a comprehensive UDT designed to encapsulate all pertinent information and state for an individual Fair Value Gap throughout its lifecycle. Instead of listing every field, its conceptual structure can be understood as holding:
Core Definition: The FVG's fundamental price levels (top, bottom) and its formation time (`startTime`).
Classification Attributes: Characteristics such as its direction (`isBullish`) and whether it qualifies as a Large Volume FVG (`isLV`), along with its originating timeframe category (`tfType`).
Lifecycle State: Current status indicators including full mitigation (`isMitigated`, `mitigationTime`), partial fill levels (`currentTop`, `currentBottom`), midline interaction (`isMidlineTouched`), and overall visibility (`isVisible`).
Drawing Identifiers: References (`boxId`, `midLineId`, `mitLineLabelId`, etc.) to the actual graphical objects drawn on the chart to represent the FVG and its components.
Optimization Cache: Previous-bar state values (`prevIsMitigated`, `prevCurrentTop`, etc.) crucial for optimizing drawing updates by avoiding redundant operations.
This comprehensive structure facilitates easy access to all FVG-related information through a single object, reducing code complexity and improving manageability.
Drawing Configuration (`drawSettings` UDT)
The `drawSettings` UDT centralizes all user-configurable parameters that dictate the visual appearance of FVGs across different timeframes. It's typically populated from script inputs and conceptually groups settings for:
General Behavior: Global FVG classification toggles (e.g., `shouldClassifyLV`) and general display rules (e.g., `shouldHideMitigated`).
FVG Type Specific Colors: Colors for standard and Large Volume FVGs, both active and mitigated (e.g., `lvBullColor`, `mitigatedBearBoxColor`).
Timeframe-Specific Visuals (LTF, MTF, HTF): Detailed parameters for each timeframe category, covering FVG boxes (visibility, colors, extension, borders, labels), midlines (visibility, style, color), and mitigation lines (visibility, style, color, labels, persistence after mitigation).
Contextual Information: The current bar's time (`currentTime`) for accurate positioning of time-dependent drawing elements and timeframe display strings (`tfString`, `mtfTfString`, `htfTfString`).
This centralized approach allows for extensive customization of FVG visuals and simplifies the management of drawing parameters within the main script. Such centralization also enhances the maintainability of the visual aspects of the FVG system.
█ NOTES
User-Defined Types (UDTs): This library extensively uses UDTs (`fvgObject`, `drawSettings`) to group related data. This improves code organization and makes it easier to pass complex data between functions and libraries.
Mutability and Reference Behavior of UDTs: When UDT instances are passed to functions or methods in other libraries (like `fvgObjectLib`), those functions might modify the fields of the passed object if they are not explicitly designed to return new instances. This is because UDTs are passed by reference and are mutable in Pine Script™. Users should be aware of this standard behavior to prevent unintended side effects.
Optimization Fields: The `prev_*` fields in `fvgObject` are crucial for performance optimization in the drawing logic. They help avoid unnecessary redrawing of FVG elements if their state or relevant settings haven't changed.
No Direct Drawing Logic: `FvgTypes` itself does not contain any drawing logic. It solely defines the data structures. The actual drawing and manipulation of these objects are handled by other libraries (e.g., `fvgObjectLib`).
Centralized Definitions: By defining these types in a separate library, any changes to the structure of FVG data or settings can be made in one place, ensuring consistency across all dependent scripts and libraries.
█ EXPORTED TYPES
fvgObject
fvgObject Represents a Fair Value Gap (FVG) object.
Fields:
top (series float) : The top price level of the FVG.
bottom (series float) : The bottom price level of the FVG.
startTime (series int) : The start time (timestamp) of the bar where the FVG formed.
isBullish (series bool) : Indicates if the FVG is bullish (true) or bearish (false).
isLV (series bool) : Indicates if the FVG is a Large Volume FVG.
tfType (series tfType) : The timeframe type (LTF, MTF, HTF) to which this FVG belongs.
isMitigated (series bool) : Indicates if the FVG has been fully mitigated.
mitigationTime (series int) : The time (timestamp) when the FVG was mitigated.
isVisible (series bool) : The current visibility status of the FVG, typically managed by drawing logic based on filters.
isMidlineTouched (series bool) : Indicates if the price has touched the FVG's midline (50% level).
currentTop (series float) : The current top level of the FVG after partial fills.
currentBottom (series float) : The current bottom level of the FVG after partial fills.
boxId (series box) : The drawing ID for the main FVG box.
mitigatedBoxId (series box) : The drawing ID for the box representing the partially filled (mitigated) area.
midLineId (series line) : The drawing ID for the FVG's midline.
mitLineId (series line) : The drawing ID for the FVG's mitigation line.
boxLabelId (series label) : The drawing ID for the FVG box label.
mitLineLabelId (series label) : The drawing ID for the mitigation line label.
testedBoxId (series box) : The drawing ID for the box of a fully mitigated (tested) FVG, if kept visible.
keptMitLineId (series line) : The drawing ID for a mitigation line that is kept after full mitigation.
prevIsMitigated (series bool) : Stores the isMitigated state from the previous bar for optimization.
prevCurrentTop (series float) : Stores the currentTop value from the previous bar for optimization.
prevCurrentBottom (series float) : Stores the currentBottom value from the previous bar for optimization.
prevIsVisible (series bool) : Stores the visibility status from the previous bar for optimization (derived from isVisibleNow passed to updateDrawings).
prevIsMidlineTouched (series bool) : Stores the isMidlineTouched status from the previous bar for optimization.
drawSettings
drawSettings A structure containing settings for drawing FVGs.
Fields:
shouldClassifyLV (series bool) : Whether to classify FVGs as Large Volume (LV) based on ATR.
shouldHideMitigated (series bool) : Whether to hide FVG boxes once they are fully mitigated.
currentTime (series int) : The current bar's time, used for extending drawings.
lvBullColor (series color) : Color for Large Volume Bullish FVGs.
mitigatedLvBullColor (series color) : Color for mitigated Large Volume Bullish FVGs.
lvBearColor (series color) : Color for Large Volume Bearish FVGs.
mitigatedLvBearColor (series color) : Color for mitigated Large Volume Bearish FVGs.
shouldShowBoxes (series bool) : Whether to show FVG boxes for the LTF.
bullBoxColor (series color) : Color for LTF Bullish FVG boxes.
mitigatedBullBoxColor (series color) : Color for mitigated LTF Bullish FVG boxes.
bearBoxColor (series color) : Color for LTF Bearish FVG boxes.
mitigatedBearBoxColor (series color) : Color for mitigated LTF Bearish FVG boxes.
boxLengthBars (series int) : Length of LTF FVG boxes in bars (if not extended).
shouldExtendBoxes (series bool) : Whether to extend LTF FVG boxes to the right.
shouldShowCurrentTfBoxLabels (series bool) : Whether to show labels on LTF FVG boxes.
shouldShowBoxBorder (series bool) : Whether to show a border for LTF FVG boxes.
boxBorderWidth (series int) : Border width for LTF FVG boxes.
boxBorderStyle (series string) : Border style for LTF FVG boxes (e.g., line.style_solid).
boxBorderColor (series color) : Border color for LTF FVG boxes.
shouldShowMidpoint (series bool) : Whether to show the midline (50% level) for LTF FVGs.
midLineWidthInput (series int) : Width of the LTF FVG midline.
midpointLineStyleInput (series string) : Style of the LTF FVG midline.
midpointColorInput (series color) : Color of the LTF FVG midline.
shouldShowMitigationLine (series bool) : Whether to show the mitigation line for LTF FVGs.
(Line always extends if shown)
mitLineWidthInput (series int) : Width of the LTF FVG mitigation line.
mitigationLineStyleInput (series string) : Style of the LTF FVG mitigation line.
mitigationLineColorInput (series color) : Color of the LTF FVG mitigation line.
shouldShowCurrentTfMitLineLabels (series bool) : Whether to show labels on LTF FVG mitigation lines.
currentTfMitLineLabelOffsetX (series float) : The horizontal offset value for the LTF mitigation line's label.
shouldKeepMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated LTF FVGs.
mitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated LTF FVGs.
tfString (series string) : Display string for the LTF (e.g., "Current TF").
shouldShowMtfBoxes (series bool) : Whether to show FVG boxes for the MTF.
mtfBullBoxColor (series color) : Color for MTF Bullish FVG boxes.
mtfMitigatedBullBoxColor (series color) : Color for mitigated MTF Bullish FVG boxes.
mtfBearBoxColor (series color) : Color for MTF Bearish FVG boxes.
mtfMitigatedBearBoxColor (series color) : Color for mitigated MTF Bearish FVG boxes.
mtfBoxLengthBars (series int) : Length of MTF FVG boxes in bars (if not extended).
shouldExtendMtfBoxes (series bool) : Whether to extend MTF FVG boxes to the right.
shouldShowMtfBoxLabels (series bool) : Whether to show labels on MTF FVG boxes.
shouldShowMtfBoxBorder (series bool) : Whether to show a border for MTF FVG boxes.
mtfBoxBorderWidth (series int) : Border width for MTF FVG boxes.
mtfBoxBorderStyle (series string) : Border style for MTF FVG boxes.
mtfBoxBorderColor (series color) : Border color for MTF FVG boxes.
shouldShowMtfMidpoint (series bool) : Whether to show the midline for MTF FVGs.
mtfMidLineWidthInput (series int) : Width of the MTF FVG midline.
mtfMidpointLineStyleInput (series string) : Style of the MTF FVG midline.
mtfMidpointColorInput (series color) : Color of the MTF FVG midline.
shouldShowMtfMitigationLine (series bool) : Whether to show the mitigation line for MTF FVGs.
(Line always extends if shown)
mtfMitLineWidthInput (series int) : Width of the MTF FVG mitigation line.
mtfMitigationLineStyleInput (series string) : Style of the MTF FVG mitigation line.
mtfMitigationLineColorInput (series color) : Color of the MTF FVG mitigation line.
shouldShowMtfMitLineLabels (series bool) : Whether to show labels on MTF FVG mitigation lines.
mtfMitLineLabelOffsetX (series float) : The horizontal offset value for the MTF mitigation line's label.
shouldKeepMtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated MTF FVGs.
mtfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated MTF FVGs.
mtfTfString (series string) : Display string for the MTF (e.g., "MTF").
shouldShowHtfBoxes (series bool) : Whether to show FVG boxes for the HTF.
htfBullBoxColor (series color) : Color for HTF Bullish FVG boxes.
htfMitigatedBullBoxColor (series color) : Color for mitigated HTF Bullish FVG boxes.
htfBearBoxColor (series color) : Color for HTF Bearish FVG boxes.
htfMitigatedBearBoxColor (series color) : Color for mitigated HTF Bearish FVG boxes.
htfBoxLengthBars (series int) : Length of HTF FVG boxes in bars (if not extended).
shouldExtendHtfBoxes (series bool) : Whether to extend HTF FVG boxes to the right.
shouldShowHtfBoxLabels (series bool) : Whether to show labels on HTF FVG boxes.
shouldShowHtfBoxBorder (series bool) : Whether to show a border for HTF FVG boxes.
htfBoxBorderWidth (series int) : Border width for HTF FVG boxes.
htfBoxBorderStyle (series string) : Border style for HTF FVG boxes.
htfBoxBorderColor (series color) : Border color for HTF FVG boxes.
shouldShowHtfMidpoint (series bool) : Whether to show the midline for HTF FVGs.
htfMidLineWidthInput (series int) : Width of the HTF FVG midline.
htfMidpointLineStyleInput (series string) : Style of the HTF FVG midline.
htfMidpointColorInput (series color) : Color of the HTF FVG midline.
shouldShowHtfMitigationLine (series bool) : Whether to show the mitigation line for HTF FVGs.
(Line always extends if shown)
htfMitLineWidthInput (series int) : Width of the HTF FVG mitigation line.
htfMitigationLineStyleInput (series string) : Style of the HTF FVG mitigation line.
htfMitigationLineColorInput (series color) : Color of the HTF FVG mitigation line.
shouldShowHtfMitLineLabels (series bool) : Whether to show labels on HTF FVG mitigation lines.
htfMitLineLabelOffsetX (series float) : The horizontal offset value for the HTF mitigation line's label.
shouldKeepHtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated HTF FVGs.
htfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated HTF FVGs.
htfTfString (series string) : Display string for the HTF (e.g., "HTF").
Buscar en scripts para "bar"
Institutional Volume Profile# Institutional Volume Profile (IVP) - Advanced Volume Analysis Indicator
## Overview
The Institutional Volume Profile (IVP) is a sophisticated technical analysis tool that combines traditional volume profile analysis with institutional volume detection algorithms. This indicator helps traders identify key price levels where significant institutional activity has occurred, providing insights into market structure and potential support/resistance zones.
## Key Features
### 🎯 Volume Profile Analysis
- **Point of Control (POC)**: Identifies the price level with the highest volume activity
- **Value Area**: Highlights the price range containing a specified percentage (default 70%) of total volume
- **Multi-Row Distribution**: Displays volume distribution across 10-50 price levels for detailed analysis
- **Customizable Period**: Analyze volume profiles over 10-500 bars
### 🏛️ Institutional Volume Detection
- **Pocket Pivot Volume (PPV)**: Detects bullish institutional buying when up-volume exceeds recent down-volume peaks
- **Pivot Negative Volume (PNV)**: Identifies bearish institutional selling when down-volume exceeds recent up-volume peaks
- **Accumulation Detection**: Spots potential accumulation phases with high volume and narrow price ranges
- **Distribution Analysis**: Identifies distribution patterns with high volume but minimal price movement
### 🎨 Visual Customization Options
- **Multiple Color Schemes**: Heat Map, Institutional, Monochrome, and Rainbow themes
- **Bar Styles**: Solid, Gradient, Outlined, and 3D Effect rendering
- **Volume Intensity Display**: Visual intensity based on volume magnitude
- **Flexible Positioning**: Left or right side profile placement
- **Current Price Highlighting**: Real-time price level indication
### 📊 Advanced Visual Features
- **Volume Labels**: Display volume amounts at key price levels
- **Gradient Effects**: Multi-step gradient rendering for enhanced visibility
- **3D Styling**: Shadow effects for professional appearance
- **Opacity Control**: Adjustable transparency (10-100%)
- **Border Customization**: Configurable border width and styling
## How It Works
### Volume Distribution Algorithm
The indicator analyzes each bar within the specified period and distributes its volume proportionally across the price levels it touches. This creates an accurate representation of where trading activity has been concentrated.
### Institutional Detection Logic
- **PPV Trigger**: Current up-bar volume > highest down-volume in lookback period + above volume MA
- **PNV Trigger**: Current down-bar volume > highest up-volume in lookback period + above volume MA
- **Accumulation**: High volume + narrow range + bullish close
- **Distribution**: Very high volume + minimal price movement
### Value Area Calculation
Starting from the POC, the algorithm expands both upward and downward, adding volume until reaching the specified percentage of total volume (default 70%).
## Configuration Parameters
### Profile Settings
- **Profile Period**: 10-500 bars (default: 50)
- **Number of Rows**: 10-50 levels (default: 24)
- **Profile Width**: 10-100% of screen (default: 30%)
- **Value Area %**: 50-90% (default: 70%)
### Institutional Analysis
- **PPV Lookback Days**: 5-20 periods (default: 10)
- **Volume MA Length**: 10-200 periods (default: 50)
- **Institutional Threshold**: 1.0-2.0x multiplier (default: 1.2)
### Visual Controls
- **Bar Style**: Solid, Gradient, Outlined, 3D Effect
- **Color Scheme**: Heat Map, Institutional, Monochrome, Rainbow
- **Profile Position**: Left or Right side
- **Opacity**: 10-100%
- **Show Labels**: Volume amount display toggle
## Interpretation Guide
### Volume Profile Elements
- **Thick Horizontal Bars**: High volume nodes (strong support/resistance)
- **Thin Horizontal Bars**: Low volume nodes (weak levels)
- **White Line (POC)**: Strongest support/resistance level
- **Blue Highlighted Area**: Value Area (fair value zone)
### Institutional Signals
- **Blue Triangles (PPV)**: Bullish institutional buying detected
- **Orange Triangles (PNV)**: Bearish institutional selling detected
- **Color-Coded Bars**: Different colors indicate institutional activity types
### Color Scheme Meanings
- **Heat Map**: Red (high volume) → Orange → Yellow → Gray (low volume)
- **Institutional**: Blue (PPV), Orange (PNV), Aqua (Accumulation), Yellow (Distribution)
- **Monochrome**: Grayscale intensity based on volume
- **Rainbow**: Color-coded by price level position
## Trading Applications
### Support and Resistance
- POC acts as dynamic support/resistance
- High volume nodes indicate strong price levels
- Low volume areas suggest potential breakout zones
### Institutional Activity
- PPV above Value Area: Strong bullish signal
- PNV below Value Area: Strong bearish signal
- Accumulation patterns: Potential upward breakouts
- Distribution patterns: Potential downward pressure
### Market Structure Analysis
- Value Area defines fair value range
- Profile shape indicates market sentiment
- Volume gaps suggest potential price targets
## Alert Conditions
- PPV Detection at current price level
- PNV Detection at current price level
- PPV above Value Area (strong bullish)
- PNV below Value Area (strong bearish)
## Best Practices
1. Use multiple timeframes for confirmation
2. Combine with price action analysis
3. Pay attention to volume context (above/below average)
4. Monitor institutional signals near key levels
5. Consider overall market conditions
## Technical Notes
- Maximum 500 boxes and 100 labels for optimal performance
- Real-time calculations update on each bar close
- Historical analysis uses complete bar data
- Compatible with all TradingView chart types and timeframes
---
*This indicator is designed for educational and informational purposes. Always combine with other analysis methods and risk management strategies.*
Test OHLCV LibraryThis indicator, "Test OHLCV Library," serves as a practical example of how to use the OHLCVData library to fetch historical candle data from a specific timeframe (like 4H) in a way that is largely impervious to the chart's currently selected time frame.
Here's a breakdown of its purpose and how it addresses request.security limitations:
Indicator Purpose:
The main goal of this indicator is to demonstrate and verify that the OHLCVData library can reliably provide confirmed historical OHLCV data for a user-specified timeframe (e.g., 4H), and that a collection of these data points (the last 10 completed candles) remains consistent even when the user switches the chart's time frame (e.g., from 5-second to Daily).
It does this by:
Importing the OHLCVData library.
Using the library's getTimeframeData function on every bar of the chart.
Checking the isTargetBarClosed flag returned by the library to identify the exact moment a candle in the target timeframe (e.g., 4H) has closed.
When isTargetBarClosed is true, it captures the confirmed OHLCV data provided by the library for that moment and stores it in a persistent var array.
It maintains a list of the last 10 captured historical 4H candle opens in this array.
It displays these last 10 confirmed opens in a table.
It uses the isAdjustedToChartTF flag from the library to show a warning if the chart's time frame is higher than the target timeframe, indicating that the data fetched by request.security is being aligned to that higher resolution.
Circumventing request.security Limitations:
The primary limitation of request.security that this setup addresses is the challenge of getting a consistent, non-repainting collection of historical data points from a different timeframe when the chart's time frame is changed.
The Problem: Standard request.security calls, while capable of fetching data from other timeframes, align that data to the bars of the current chart. When you switch the chart's time frame, the set of chart bars changes, and the way the requested data aligns to these new bars changes. If you simply collected data on every chart bar where request.security returned a non-na value, the resulting collection would differ depending on the chart's resolution. Furthermore, using request.security without lookahead=barmerge.lookahead_off or an offset ( ) can lead to repainting on historical bars, where values change as the script recalculates.
How the Library/Indicator Setup Helps:
Confirmed Data: The OHLCVData library uses lookahead=barmerge.lookahead_off and, more importantly, provides the isTargetBarClosed flag. This flag is calculated using a reliable method (checking for a change in the target timeframe's time series) that accurately identifies the precise chart bar corresponding to the completion of a candle in the target timeframe (e.g., a 4H candle), regardless of the chart's time frame.
Precise Capture: The indicator only captures and stores the OHLCV data into its var array when this isTargetBarClosed flag is true. This means it's capturing the confirmed, finalized data for the target timeframe candle at the exact moment it closes.
Persistent Storage: The var array in the indicator persists its contents across the bars of the chart's history. As the script runs through the historical bars, it selectively adds confirmed 4H candle data points to this array only when the trigger is met.
Impervious Collection: Because the array is populated based on the completion of the target timeframe candles (detected reliably by the library) rather than simply collecting data on every chart bar, the final contents of the array (the list of the last 10 confirmed 4H opens) will be the same regardless of the chart's time frame. The table then displays this static collection.
In essence, this setup doesn't change how request.security fundamentally works or aligns data to the chart's bars. Instead, it uses the capabilities of request.security (fetching data from another timeframe) and Pine Script's execution model (bar-by-bar processing, var persistence) in a specific way, guided by the library's logic, to build a historical collection of data points that represent the target timeframe's candles and are independent of the chart's display resolution.
Casa_SessionsLibrary "Casa_Sessions"
Advanced trading session management library that enhances TradingView's default functionality:
Key Features:
- Accurate session detection for futures markets
- Custom session hour definitions
- Drop-in replacements for standard TradingView session functions
- Flexible session map customization
- Full control over trading windows and market hours
Perfect for traders who need precise session timing, especially when working
with futures markets or custom trading schedules.
SetSessionTimes(session_type_input, custom_session_times_input, syminfo_type, syminfo_root, syminfo_timezone)
Parameters:
session_type_input (simple string) : Input string for session selection:
- 'Custom': User-defined session times
- 'FX-Tokyo': Tokyo forex session
- 'FX-London': London forex session
- 'FX-New York': NY forex session
- 'Overnight Session (ON)': After-hours trading
- 'Day Session (RTH)': Regular trading hours
custom_session_times_input (simple string) : Session parameter for custom time windows
Only used when session_type_input is 'Custom'
syminfo_type (simple string)
syminfo_root (simple string)
syminfo_timezone (simple string)
Returns:
session_times: Trading hours for selected session
session_timezone: Market timezone (relevant for forex)
getSessionMap()
Get futures trading session hours map
Keys are formatted as 'symbol:session', examples:
- 'ES:market' - Regular trading hours (RTH)
- 'ES:overnight' - Extended trading hours (ETH)
- 'NQ:market' - NASDAQ futures RTH
- 'CL:overnight' - Crude Oil futures ETH
Returns: Map
Key: Symbol:session identifier
Value: Session hours in format "HH:MM-HH:MM"
getSessionString(session, symbol, sessionMap)
Returns a session string representing the session hours (and days) for the requested symbol (or the chart's symbol if the symbol value is not provided). If the session string is not found in the collection, it will return a blank string.
Parameters:
session (string) : A string representing the session hour being requested. One of: market (regular trading hours), overnight (extended/electronic trading hours), postmarket (after-hours), premarket
symbol (string) : The symbol to check. Optional. Defaults to chart symbol.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
inSession(session, sessionMap, barsBack)
Returns true if the current symbol is currently in the session parameters defined by sessionString.
Parameters:
session (string) : A string representing the session hour being requested. One of: market (regular trading hours), overnight (extended/electronic trading hours), postmarket (after-hours), premarket
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
barsBack (int) : Private. Only used by futures to check islastbar. Optional. The default is 0.
ismarket(sessionMap)
Returns true if the current bar is a part of the regular trading hours (i.e. market hours), false otherwise. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isfirstbar()
Returns true if the current bar is the first bar of the day's session, false otherwise. If extended session information is used, only returns true on the first bar of the pre-market bars. Works for futures (TradingView's methods do not).
Returns: bool
islastbar()
Returns true if the current bar is the last bar of the day's session, false otherwise. If extended session information is used, only returns true on the last bar of the post-market bars. Works for futures (TradingView's methods do not).
Returns: bool
ispremarket(sessionMap)
Returns true if the current bar is a part of the pre-market, false otherwise. On non-intraday charts always returns false. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
ispostmarket(sessionMap)
Returns true if the current bar is a part of the post-market, false otherwise. On non-intraday charts always returns false. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isfirstbar_regular(sessionMap)
Returns true on the first regular session bar of the day, false otherwise. The result is the same whether extended session information is used or not. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
islastbar_regular(sessionMap)
Returns true on the last regular session bar of the day, false otherwise. The result is the same whether extended session information is used or not. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isovernight(sessionMap)
Returns true if the current bar is a part of the pre-market or post-market, false otherwise. On non-intraday charts always returns false.
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
getSessionHighAndLow(session, sessionMap)
Returns a tuple containing the high and low print during the specified session.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: A tuple containing
getSessionHigh(session, sessionMap)
Convenience function to return the session high. Necessary if you want to call this function from within a request.security expression where you can't return a tuple.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: The high of the session
getSessionLow(session, sessionMap)
Convenience function to return the session low. Necessary if you want to call this function from within a request.security expression where you can't return a tuple.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: The low of the session
Volume Flow Indicator Signals | iSolani
Volume Flow Indicator Signals | iSolani: Decoding Trend Momentum with Volume Precision
In markets where trends are fueled by institutional participation, discerning genuine momentum from false moves is critical. The Volume Flow Indicator Signals | iSolani cuts through this noise by synthesizing price action with volume dynamics, generating high-confidence signals when capital flows align with directional bias. This tool reimagines traditional volume analysis by incorporating volatility-adjusted thresholds and dual-layer smoothing, offering traders a laser-focused approach to trend identification.
Core Methodology
The indicator employs a multi-stage calculation to quantify volume-driven momentum:
Volatility-Adjusted Filter: Measures price changes via log returns, scaling significance using a 30-bar standard deviation multiplied by user-defined sensitivity (default: 2x).
Volume Normalization: Caps extreme volume spikes at 3x the 50-bar moving average, preventing distortion from anomalous trades.
Directional Volume Flow: Assigns positive/negative values to volume based on whether price movement exceeds volatility-derived thresholds.
Dual Smoothing: Applies consecutive SMA (3-bar) and EMA (14-bar) to create the Volume Flow Indicator (VFI) and its signal line, filtering out transient fluctuations.
Breaking New Ground
This implementation introduces three key innovations:
Adaptive Noise Gates: Unlike static volume oscillators, the sensitivity coefficient dynamically adjusts to market volatility, reducing false signals during choppy conditions.
Institutional Volume Capping: The vcoef parameter limits the influence of outlier volume spikes, focusing on sustained institutional activity rather than one-off trades.
Non-Repainting Signals: Generates single-per-trend labels (buy below bars, sell above) to avoid chart clutter while maintaining visual clarity.
Engine Under the Hood
The script executes through five systematic stages:
Data Preparation: Computes HLC3 typical price and its logarithmic rate of change.
Threshold Calculation: Derives dynamic cutoff levels using 30-period volatility scaled by user sensitivity.
Volume Processing: Filters raw volume through a 50-bar SMA, capping extremes at 3x average.
VFI Construction: Sums directional volume flow over 50 bars, smoothed with a 3-bar SMA.
Signal Generation: Triggers alerts when VFI crosses zero, confirmed by a 14-bar EMA crossover.
Standard Configuration
Optimized defaults balance responsiveness and reliability:
Volume MA: 50-bar smoothing window
Sensitivity: 2.0 (doubles volatility threshold)
Signal Smoothing: 14-bar EMA
Volume Cap: 3x average (hidden parameter)
VFI Smoothing: Enabled (3-bar SMA)
By fusing adaptive volume filtering with price confirmation logic, the Volume Flow Indicator Signals | iSolani transforms raw market data into institutional-grade trend signals. Its ability to mute choppy price action while amplifying high-conviction volume moves makes it particularly effective for spotting early trend reversals in equities, forex, and futures markets.
CHAKRA RISS ENGULFING CANDLESTICK STRATEGYChakra RISS Engulfing Candlestick Strategy
Type: Technical Indicator & Strategy
Platform: TradingView
Script Version: Pine Script v6
Overview:
The Chakra RISS Engulfing Candlestick Strategy combines a momentum-based approach using the Relative Strength Index (RSI) with Engulfing Candlestick Patterns to generate buy and sell signals. The strategy filters trades based on price movement relative to a 50-period Simple Moving Average (SMA), making it a trend-following strategy.
The indicator uses color-coded bars to visually represent market conditions, helping traders easily identify bullish and bearish trends. The strategy is designed to be dynamic, adapting to changing market conditions and filtering out noise using key technical indicators.
How It Works:
RSI-Based Color Conditions:
Green Bars: When the RSI crosses above a specified UpLevel (default: 50), indicating a bullish momentum and signaling potential buy conditions.
Red Bars: When the RSI crosses below a specified DownLevel (default: 50), indicating a bearish momentum and signaling potential sell conditions.
Buy Signal:
Triggered when the following conditions are met:
RSI crosses from below the UpLevel (default: 50) to above it, signaling increasing bullish momentum.
The close price is above the 50-period Simple Moving Average (SMA), confirming an uptrend.
The Buy Signal is plotted below the bar with a green arrow and a "BUY" label.
Sell Signal:
Triggered when the following conditions are met:
RSI crosses from above the DownLevel (default: 50) to below it, signaling increasing bearish momentum.
The close price is below the 50-period Simple Moving Average (SMA), confirming a downtrend.
The Sell Signal is plotted above the bar with a red arrow and a "SELL" label.
Stop Loss and Take Profit:
For long trades (buy signals), the stop loss is placed below the previous bar's low, and the take profit is set at 3% above the entry price.
For short trades (sell signals), the stop loss is placed above the previous bar's high, and the take profit is set at 3% below the entry price.
Dynamic Bar Coloring:
The bar colors change dynamically based on RSI levels:
Green Bars: Indicating a potential uptrend (bullish).
Red Bars: Indicating a potential downtrend (bearish).
These visual cues help traders quickly identify market trends and potential reversals.
Trend Filtering:
The 50-period Simple Moving Average (SMA) is used to filter trades based on the overall market trend:
Buy signals are only considered when the price is above the moving average, indicating an uptrend.
Sell signals are only considered when the price is below the moving average, indicating a downtrend.
Alerting System:
Alerts can be set for both buy and sell signals. These alerts notify traders in real-time when potential trades are generated, allowing them to act promptly.
Alerts can be configured to send notifications through email, SMS, or a webhook for integration with other services like IFTTT or Zapier.
Key Features:
RSI and Moving Average-Based Signals: Combines RSI with a moving average for more accurate trade signals.
Stop Loss and Take Profit: Dynamic risk management with custom stop loss and take profit levels based on previous high and low prices.
Buy and Sell Alerts: Provides real-time alerts when a buy or sell signal is triggered.
Trend Confirmation: Uses the 50-period Simple Moving Average to filter signals and confirm the direction of the trend.
Visual Bar Color Changes: Makes it easy to identify bullish or bearish trends with color-coded bars.
Usage:
This strategy is suitable for traders who prefer a trend-following approach and want to combine momentum indicators (RSI) with price action (Engulfing Candlestick patterns). It is particularly useful in volatile markets where quick identification of trend changes can lead to profitable trades.
Best Used For: Day trading, swing trading, and trend-following strategies.
Timeframes: Works well on various timeframes, from 1-minute charts for scalping to daily charts for swing trading.
Markets: Can be applied to any market with sufficient liquidity (stocks, forex, crypto, etc.).
Settings:
UpLevel: The RSI level above which the market is considered bullish (default: 50).
DownLevel: The RSI level below which the market is considered bearish (default: 50).
SMA Length: The period of the Simple Moving Average used to filter trades (default: 50).
Risk Management: Customizable stop loss and take profit settings based on price action (default: 3% above/below the entry price).
Wick Strategy AnalyzerOverview
This indicator analyzes candle wick patterns and evaluates their outcomes over a user-definable range (default is 1 year). Labels are rendered on the chart to mark events that meet the specified wick condition.
Features
Customizable Bar Range - users can specify the range of bars to include in the analysis. Default is 365 bars back from the most recent bar (bar 0)
Visual Indicators - labels are rendered to mark conditions & outcomes.
Wick Condition Met - an Orange label below the wick candle displaying the wick’s percentage size.
Outcome Labels - rendered above the candle after wick condition met candles
P (Green): Pass
F (Red): Fail
N (Navy): Neutral
I (Blue): Indicates the current candle has not yet closed, so the outcome is undetermined.
Input Parameters
Wick Threshold - minimum wick size required to qualify as a wick condition.
Success Margin - Defines the margin for classifying outcomes as Pass, Fail, or Neutral. E.g., a success margin of 0.01 requires the next candle's close to exceed the wick candle's close by 1% in order to be a Pass.
Bar Offset Start - starting offset from the last bar for analysis. A value of -1 will include all bars.
Bar Offset End - ending offset from the last bar for analysis. Bars outside this range are excluded.
Example Scenario
Goal: Analyze how candles with a wick size of at least 3.5% perform within a success margin of 1% over the past 540 days.
Setup:
Set Wick Threshold to 0.035
Set Success Margin to 0.01
Set Bar Range Start to 0
Set Bar Range End to 540.
Expected Output
Candles with a wick of at least 3.5% are labeled.
Outcome labels (P, F, or N) indicate performance.
ToolsPosLibrary "ToolsPos"
Library for general purpose position helpers
new_pos(state, price, when, index)
Returns new PosInfo object
Parameters:
state (series PosState) : Position state
price (float) : float Entry price
when (int) : int Entry bar time UNIX. Default: time
index (int) : int Entry bar index. Default: bar_index
Returns: PosInfo
new_tp(pos, price, when, index, info)
Returns PosInfo object with new take profit info object
Parameters:
pos (PosInfo) : PosInfo object
price (float) : float Entry price
when (int) : int Entry bar time UNIX. Default: time
index (int) : int Entry bar index. Default: bar_index
info (Info type from aybarsm/Tools/14) : Info holder object. Default: na
Returns: PosInfo
new_re(pos, price, when, index, info)
Returns PosInfo object with new re-entry info object
Parameters:
pos (PosInfo) : PosInfo object
price (float) : float Entry price
when (int) : int Entry bar time UNIX. Default: time
index (int) : int Entry bar index. Default: bar_index
info (Info type from aybarsm/Tools/14) : Info holder object. Default: na
Returns: PosInfo
PosTPInfo
PosTPInfo - Position Take Profit info object
Fields:
price (series float) : float Take profit price
when (series int) : int Take profit bar time UNIX. Default: time
index (series int) : int Take profit bar index. Default: bar_index
info (Info type from aybarsm/Tools/14) : Info holder object
PosREInfo
PosREInfo - Position Re-Entry info object
Fields:
price (series float) : float Re-entry price
when (series int) : int Re-entry bar time UNIX. Default: time
index (series int) : int Take profit bar index. Default: bar_index
info (Info type from aybarsm/Tools/14) : Info holder object
PosInfo
PosInfo - Position info object
Fields:
state (series PosState) : Position state
price (series float) : float Entry price
when (series int) : int Entry bar time UNIX. Default: time
index (series int) : int Entry bar index. Default: bar_index
tp (array) : PosTPInfo Take profit info. Default: na
re (array) : PosREInfo Re-entry info. Default: na
info (Info type from aybarsm/Tools/14) : Info holder object
Mean Price
^^ Plotting switched to Line.
This method of financial time series (aka bars) downsampling is literally, naturally, and thankfully the best you can do in terms of maximizing info gain. You can finally chill and feed it to your studies & eyes, and probably use nothing else anymore.
(HL2 and occ3 also have use cases, but other aggregation methods? Not really, even if they do, the use cases are ‘very’ specific). Tho in order to understand why, you gotta read the following wall, or just believe me telling you, ‘I put it on my momma’.
The true story about trading volumes and why this is all a big misdirection
Actually, you don’t need to be a quant to get there. All you gotta do is stop blindly following other people’s contextual (at best) solutions, eg OC2 aggregation xD, and start using your own brain to figure things out.
Every individual trade (basically an imprint on 1D price space that emerges when market orders hit the order book) has several features like: price, time, volume, AND direction (Up if a market buy order hits the asks, Down if a market sell order hits the bids). Now, the last two features—volume and direction—can be effectively combined into one (by multiplying volume by 1 or -1), and this is probably how every order matching engine should output data. If we’re not considering size/direction, we’re leaving data behind. Moreover, trades aren’t just one-price dots all the time. One trade can consume liquidity on several levels of the order book, so a single trade can be several ticks big on the price axis.
You may think now that there are no zero-volume ticks. Well, yes and no. It depends on how you design an exchange and whether you allow intra-spread trades/mid-spread trades (now try to Google it). Intra-spread trades could happen if implemented when a matching engine receives both buy and sell orders at the same microsecond period. This way, you can match the orders with each other at a better price for both parties without even hitting the book and consuming liquidity. Also, if orders have different sizes, the remaining part of the bigger order can be sent to the order book. Basically, this type of trade can be treated as an OTC trade, having zero volume because we never actually hit the book—there’s no imprint. Another reason why it makes sense is when we think about volume as an impact or imbalance act, and how the medium (order book in our case) responds to it, providing information. OTC and mid-spread trades are not aggressive sells or buys; they’re neutral ticks, so to say. However huge they are, sometimes many blocks on NYSE, they don’t move the price because there’s no impact on the medium (again, which is the order book)—they’re not providing information.
... Now, we need to aggregate these trades into, let’s say, 1-hour bars (remember that a trade can have either positive or negative volume). We either don’t want to do it, or we don’t have this kind of information. What we can do is take already aggregated OHLC bars and extract all the info from them. Given the market is fractal, bars & trades gotta have the same set of features:
- Highest & lowest ticks (high & low) <- by price;
- First & last ticks (open & close) <- by time;
- Biggest and smallest ticks <- by volume.*
*e.g., in the array ,
2323: biggest trade,
-1212: smallest trade.
Now, in our world, somehow nobody started to care about the biggest and smallest trades and their inclusion in OHLC data, while this is actually natural. It’s the same way as it’s done with high & low and open & close: we choose the minimum and maximum value of a given feature/axis within the aggregation period.
So, we don’t have these 2 values: biggest and smallest ticks. The best we can do is infer them, and given the fact the biggest and smallest ticks can be located with the same probability everywhere, all we can do is predict them in the middle of the bar, both in time and price axes. That’s why you can see two HL2’s in each of the 3 formulas in the code.
So, summed up absolute volumes that you see in almost every trading platform are actually just a derivative metric, something that I call Type 2 time series in my own (proprietary ‘for now’) methods. It doesn’t have much to do with market orders hitting the non-uniform medium (aka order book); it’s more like a statistic. Still wanna use VWAP? Ok, but you gotta understand you’re weighting Type 1 (natural) time series by Type 2 (synthetic) ones.
How to combine all the data in the right way (khmm khhm ‘order’)
Now, since we have 6 values for each bar, let’s see what information we have about them, what we don’t have, and what we can do about it:
- Open and close: we got both when and where (time (order) and price);
- High and low: we got where, but we don’t know when;
- Biggest & smallest trades: we know shit, we infer it the way it was described before.'
By using the location of the close & open prices relative to the high & low prices, we can make educated guesses about whether high or low was made first in a given bar. It’s not perfect, but it’s ultimately all we can do—this is the very last bit of info we can extract from the data we have.
There are 2 methods for inferring volume delta (which I call simply volume) that are presented everywhere, even here on TradingView. Funny thing is, this is actually 2 parts of the 1 method. I wonder how many folks see through it xD. The same method can be used for both inferring volume delta AND making educated guesses whether high or low was made first.
Imagine and/or find the cases on your charts to understand faster:
* Close > open means we have an up bar and probably the volume is positive, and probably high was made later than low.
* Close < open means we have a down bar and probably the volume is negative, and probably low was made later than high.
Now that’s the point when you see that these 2 mentioned methods are actually parts of the 1 method:
If close = open, we still have another clue: distance from open/close pair to high (HC), and distance from open/close pair to low (LC):
* HC < LC, probably high was made later.
* HC > LC, probably low was made later.
And only if close = open and HC = LC, only in this case we have no clue whether high or low was made earlier within a bar. We simply don’t have any more information to even guess. This bar is called a neutral bar.
At this point, we have both time (order) and price info for each of our 6 values. Now, we have to solve another weighted average problem, and that’s it. We’ll weight prices according to the order we’ve guessed. In the neutral bar case, open has a weight of 1, close has a weight of 3, and both high and low have weights of 2 since we can’t infer which one was made first. In all cases, biggest and smallest ticks are modeled with HL2 and weighted like they’re located in the middle of the bar in a time sense.
P.S.: I’ve also included a "robust" method where all the bars are treated like neutral ones. I’ve used it before; obviously, it has lesser info gain -> works a bit worse.
simple swing indicator-KTRNSE:NIFTY
1. Pivot High/Low as Lines:
Purpose: Identifies local peaks (pivot highs) and troughs (pivot lows) in price and draws horizontal lines at these levels.
How it Works:
A pivot high occurs when the price is higher than the surrounding bars (based on the pivotLength parameter).
A pivot low occurs when the price is lower than the surrounding bars.
These pivots are drawn as horizontal lines at the price level of the pivot.
Visualization:
Pivot High: A red horizontal line is drawn at the price level of the pivot high.
Pivot Low: A green horizontal line is drawn at the price level of the pivot low.
Example:
Imagine the price is trending up, and at some point, it forms a peak. The script identifies this peak as a pivot high and draws a red line at the price of that peak. Similarly, if the price forms a trough, the script will draw a green line at the low point.
2. Moving Averages (20-day and 50-day):
Purpose: Plots the 20-day and 50-day simple moving averages (SMA) on the chart.
How it Works:
The 20-day SMA smooths the closing price over the last 20 days.
The 50-day SMA smooths the closing price over the last 50 days.
These lines provide an overview of short-term and long-term price trends.
Visualization:
20-day SMA: A blue line showing the 20-day moving average.
50-day SMA: An orange line showing the 50-day moving average.
Example:
When the price is above both moving averages, it indicates an uptrend. If the price crosses below these averages, it might signal a downtrend.
3. Supertrend:
Purpose: The Supertrend is an indicator based on the Average True Range (ATR) and is used to track the market trend.
How it Works:
When the market is in an uptrend, the Supertrend line will be green.
When the market is in a downtrend, the Supertrend line will be red.
Visualization:
Uptrend: The Supertrend line will be plotted in green.
Downtrend: The Supertrend line will be plotted in red.
Example:
If the price is above the Supertrend, the market is considered to be in an uptrend, and if the price is below the Supertrend, the market is in a downtrend.
4. Momentum (Rate of Change):
Purpose: Measures the rate at which the price changes over a set period, showing if the momentum is positive or negative.
How it Works:
The Rate of Change (ROC) measures how much the price has changed over a certain number of periods (e.g., 14).
Positive ROC indicates upward momentum, and negative ROC indicates downward momentum.
Visualization:
Positive ROC: A purple line is plotted above the zero line.
Negative ROC: A purple line is plotted below the zero line.
Example:
If the ROC line is above zero, it means the price is increasing, suggesting bullish momentum. If the ROC is below zero, it indicates bearish momentum.
5. Volume:
Purpose: Displays the volume of traded assets, giving insight into the strength of price movements.
How it Works:
The script will color the volume bars based on whether the price closed higher or lower than the previous bar.
Green bars indicate bullish volume (closing price higher than the previous bar), and red bars indicate bearish volume (closing price lower than the previous bar).
Visualization:
Bullish Volume: Green volume bars when the price closes higher.
Bearish Volume: Red volume bars when the price closes lower.
Example:
If you see a green volume bar, it suggests that the market is participating in an uptrend, and the price has closed higher than the previous period. Red bars indicate a downtrend or selling pressure.
6. MACD (Moving Average Convergence Divergence):
Purpose: The MACD is a trend-following momentum indicator that shows the relationship between two moving averages of the price.
How it Works:
The MACD Line is the difference between the 12-period EMA (Exponential Moving Average) and the 26-period EMA.
The Signal Line is the 9-period EMA of the MACD Line.
The MACD Histogram shows the difference between the MACD line and the Signal line.
Visualization:
MACD Line: A blue line representing the difference between the 12-period and 26-period EMAs.
Signal Line: An orange line representing the 9-period EMA of the MACD line.
MACD Histogram: A red or green histogram that shows the difference between the MACD line and the Signal line.
Example:
When the MACD line crosses above the Signal line, it’s considered a bullish signal. When the MACD line crosses below the Signal line, it’s considered a bearish signal.
Full Chart Example:
Imagine you're looking at a price chart with all the indicators:
Pivot High/Low Lines are drawn as red and green horizontal lines.
20-day and 50-day SMAs are plotted as blue and orange lines, respectively.
Supertrend shows a green or red line indicating the trend.
Momentum (ROC) is shown as a purple line oscillating around zero.
Volume bars are green or red based on whether the close is higher or lower.
MACD appears as a blue line and orange line, with a red or green histogram showing the MACD vs. Signal line difference.
How the Indicators Work Together:
Trend Confirmation: If the price is above the Supertrend line and both SMAs are trending up, it indicates a strong bullish trend.
Momentum: If the ROC is positive and the MACD line is above the Signal line, it further confirms bullish momentum.
Volume: Increasing volume, especially with green bars, suggests that the trend is being supported by active participation.
By using these combined indicators, you can get a comprehensive view of the market's trend, momentum, and potential reversal points (via pivot highs and lows).
[AWC] Vector -AYNETThis Pine Script code is a custom indicator designed for TradingView. Its purpose is to visualize the opening and closing prices of a specific timeframe (e.g., weekly, daily, or monthly) by drawing lines between these price points whenever a new bar forms in the specified timeframe. Below is a detailed explanation from a scientific perspective:
1. Input Parameters
The code includes user-defined inputs to customize its functionality:
tf1: This input defines the timeframe (e.g., 'W' for weekly, 'D' for daily). It determines the periodicity for analyzing price data.
icol: This input specifies the color of the lines drawn on the chart. Users can select from predefined options such as black, red, or blue.
2. Color Assignment
A switch statement maps the user’s color selection (icol) to the corresponding color object in Pine Script. This mapping ensures that the drawn lines adhere to the user's preference.
3. New Bar Detection
The script uses the ta.change(time(tf1)) function to determine when a new bar forms in the specified timeframe (tf1):
ta.change checks if the timestamp of the current bar differs from the previous one within the selected timeframe.
If the value changes, it indicates that a new bar has formed, and further calculations are triggered.
4. Data Request
The script employs request.security to fetch price data from the specified timeframe:
o1: Retrieves the opening price of the previous bar.
c1: Calculates the average price (high, low, close) of the previous bar using the hlc3 formula.
These values represent the key price levels for visualizing the line.
5. Line Drawing
When a new bar is detected:
The script uses line.new to create a line connecting the previous bar's opening price (o1) and the closing price (c1).
The line’s properties are defined as follows:
x1, y1: The starting point corresponds to the opening price at the previous bar index.
x2, y2: The endpoint corresponds to the closing price at the current bar index.
color: Uses the user-defined color (col).
style: The line style is set to line.style_arrow_right.
Additionally, the lines are stored in an array (lines) for later reference, enabling potential modifications or deletions.
6. Visual Outcome
The script visually represents price movements over the specified timeframe:
Each line connects the opening and closing price of a completed bar in the given timeframe.
The lines are drawn dynamically, updating whenever a new bar forms.
Scientific Context
This script applies concepts of time series analysis and visualization in financial data:
Time Segmentation: By isolating specific timeframes (e.g., weekly), the script provides a focused analysis of price behavior.
Price Dynamics: Connecting opening and closing prices highlights key price transitions within each period.
User Customization: The inclusion of inputs allows for adaptable use, accommodating different analytical preferences.
Applications
Trend Analysis: Identifies how price evolves between opening and closing levels across periods.
Market Behavior Comparison: Facilitates the observation of patterns or anomalies in price transitions over time.
Technical Indicators: Serves as a supplementary tool for decision-making in trading strategies.
If further enhancements or customizations are needed, let me know! 😊
Parabolic (Brachistochrone) Curve IndicatorOverview of the Script
The script is designed to plot an approximation of the Brachistochrone curve between two points on a TradingView chart. The Brachistochrone curve represents the path of fastest descent under gravity between two points not aligned vertically. In physics, this curve is a segment of a cycloid.
Understanding the Brachistochrone Curve
Definition: The Brachistochrone curve is the curve along which a particle will descend from one point to another in the least time under gravity, without friction.
Mathematical Representation: The solution to the Brachistochrone problem is a cycloid, which is the curve traced by a point on the rim of a circular wheel as it rolls along a straight line.
Relevance to Trading: While the Brachistochrone curve originates from physics, plotting it on a price-time chart can offer a unique visual representation of the fastest possible movement between two price levels.
How the Script Works
Inputs
Start and End Bars:
startBar: The number of bars back from the current bar to define the starting point.
endBar: The number of bars back from the current bar to define the ending point.
Curve Customization:
numPoints: The number of points used to plot the curve (affects smoothness).
curveColor: The color of the curve.
curveWidth: The width of the curve lines.
Labels:
showTimeLabels: A toggle to display labels along the curve for reference.
Calculations
Determine Start and End Points:
The script calculates the coordinates (x_start, y_start, x_end, y_end) of the start and end points based on the specified bar offsets.
x_start and x_end correspond to bar indices (time).
y_start and y_end correspond to price levels.
Calculate Differences and Parameters:
Horizontal and Vertical Differences:
delta_x = x_end - x_start
delta_y = y_end - y_start
Ensure Descending Motion:
If the end point is higher than the start point (i.e., delta_y is positive), the script swaps the start and end points to ensure the curve represents a descent.
Cycloid Parameters:
Angle (theta): Calculated using theta = atan(delta_y / delta_x), representing the inclination of the curve.
Radius (R): The radius of the generating circle for the cycloid, calculated with R = delta_x / (π * cos(theta)).
Generate Points Along the Cycloid:
Parameter t: Varies from 0 to t_end, where t_end is set to π to represent half a cycloid (a common segment for the Brachistochrone).
Cycloid Equations:
Horizontal Component (x_t): x_t = R * (t - sin(t))
Vertical Component (y_t): y_t = R * (1 - cos(t))
Adjust Coordinates:
The script adjusts the cycloid coordinates to align with the chart's axes:
x_plot = x_start + x_t * cos(theta)
y_plot = y_start + y_t * sin(theta)
The x_plot values are converted to integer bar indices to match the chart's x-axis.
Plotting the Curve
Drawing Lines:
The script connects consecutive points using lines to form the curve.
It uses the line.new function, specifying the start and end coordinates of each line segment.
Adding Labels (Optional):
If showTimeLabels is enabled, the script places labels at intervals along the curve to indicate progress or parameter values.
Adjustments for Accurate Visualization
Handling Ascending Paths:
To adhere to the physical definition of the Brachistochrone curve, the script ensures that the ending point is below the starting point in terms of price.
If not, it swaps the points to represent a descending path.
Parameter Constraints:
The script ensures that calculations involving trigonometric functions remain within valid ranges to prevent mathematical errors (e.g., division by zero or invalid arguments for acos).
Scaling Considerations:
Adjustments are made to account for the differences in scaling between time (x-axis) and price (y-axis) on the chart.
The script maps spatial coordinates to the chart's axes appropriately.
Limitations and Considerations
Theoretical Nature:
The Brachistochrone curve is a theoretical concept from physics and doesn't necessarily predict actual price movements in financial markets.
Chart Scaling:
The visual appearance of the curve may be affected by the chart's scaling settings. Users may need to adjust the chart's zoom or scale to view the curve properly.
Data Range:
The start and end bars must be within the range of available data on the chart. If the specified bars are out of range, the script may not plot the curve.
Computational Limits:
TradingView imposes limits on the number of drawing objects (lines, labels) that can be displayed. The script accounts for this, but extremely high numPoints values may lead to performance issues.
Usage Instructions
Adding the Indicator:
The script is added to the chart as a custom indicator in TradingView's Pine Script Editor.
Configuring Inputs:
Start and End Bars: Users specify the bar offsets for the start and end points. It's important that the end point is below the start point in price to represent a descent.
Curve Customization: Users can adjust the number of points for smoothness and customize the curve's color and width.
Labels: Users can choose to display or hide labels along the curve.
Observing the Curve:
After configuring the inputs, the curve will be plotted between the two specified points.
Users can observe the curve to understand the theoretical fastest descent between the two price levels.
Potential Applications
Educational Tool:
The script serves as a visual aid to understand the properties of the Brachistochrone curve and cycloid.
Analytical Insights:
While not predictive, the curve might inspire new ways of thinking about price movements, momentum, or acceleration in markets.
Visualization:
It provides a unique way to visualize the relationship between time and price over a specific interval.
Conclusion
The script effectively adapts the mathematical concept of the Brachistochrone curve to a financial chart by carefully mapping spatial coordinates to time and price axes. By accounting for the unique characteristics of TradingView charts and implementing necessary mathematical adjustments, the script plots the curve between two user-defined points, offering a novel and educational visualization.
Prometheus Fractal-Based TrendThe Fractal-Based Trend indicator is a tool that uses fractals to try and detect which direction an underlying will continue to go.
Calculation:
A bullish fractal occurs when the current bar's high is lower than the previous bar high, and the previous bar's high is higher than both the high from two bars ago and the high from three bars ago.
A bearish fractal happens when the current bar's low is higher than the previous bar's low, and the previous bar's low is lower than both the low from two bars ago and the low from three bars ago.
When a bullish or bearish fractal forms, the corresponding value stored is the previous bar high for a bearish fractal or the previous bar's low for a bullish fractal.
The trade scenarios are when these fractals occur, a green or red label being plotted on the chart for whatever direction it predicts.
Trade examples:
We see on this daily chart of AMEX:SPY that the fractals represent the potential for a directional trade that can last a few days. The more volatile a chart is the more of these fractals we can see.
We see on this 5 minute chart for NASDAQ:TSLA there is way more activity, there are more sporadic candles on a lower time frame, so we can see more anomalies in the price action.
We see this to be true for BITSTAMP:BTCUSD even on a daily time frame, since it is very volatile. There are a lot of these labels plotted.
This is the perspective we aim to provide. We encourage traders to not follow indicators blindly. No indicator is 100% accurate. This one can give you a different perspective of price strength with volatility. We encourage any comments about desired updates or criticism!
Kurutoga Histogram with HTF and LTF
Kurutoga Histogram:
The Kurutoga Histogram is a technical analysis indicator designed to measure price divergence from the 50% level of a recent price range. By calculating how far the current price is from the midpoint of a selected base length of candles, the histogram provides insight into the momentum, strength, and potential reversals in the market. Additionally, it can be applied across multiple timeframes to provide a comprehensive view of both short- and long-term market dynamics.
Key Components:
Base Length:
The base length is the number of candles (bars) over which the high and low prices are observed. The default base length is typically 14 periods, but it can be adjusted according to the trader's preference.
This base length defines the range from which the 50% level, or midpoint, is calculated.
50% Level (Midpoint):
The midpoint is the average of the highest high and the lowest low over the selected base length. This 50% level acts as an equilibrium point around which the price fluctuates.
Formula:
Midpoint = (Highest High + Lowest Low) / 2
The price’s distance from this midpoint is an indicator of how strong the current trend or divergence is.
Price Divergence:
The main calculation of the histogram is the difference between the current closing price and the midpoint of the price range.
Formula:
Divergence = Close Price − Midpoint
A positive divergence (price above the midpoint) indicates bullish strength, while a negative divergence (price below the midpoint) indicates bearish strength.
Multi-Timeframe Analysis:
The Kurutoga Histogram can be applied to both the current timeframe and a higher timeframe (HTF), allowing traders to gauge price movement in both short-term and long-term contexts.
By comparing the histograms of multiple timeframes, traders can determine if there is alignment (confluence) between trends, which can strengthen trade signals or provide additional confirmation.
Color-Coded Histogram:
Blue Bars (Positive Divergence): Represent that the price is above the 50% level, indicating bullish momentum. Taller blue bars suggest stronger upward momentum, while shrinking bars suggest weakening strength.
Red Bars (Negative Divergence): Represent that the price is below the 50% level, indicating bearish momentum. Taller red bars suggest stronger downward momentum, while shrinking bars suggest a potential reversal or consolidation.
The histogram’s color intensity and transparency can be adjusted to enhance the visual effect, distinguishing between current timeframe (LTF) and higher timeframe (HTF) divergence.
Interpretation:
Bullish Signals: When the histogram bars are blue and growing, the price is gaining momentum above the midpoint of its recent range. This could signal an ongoing uptrend.
Bearish Signals: When the histogram bars are red and growing, the price is gaining momentum below the midpoint, signaling an ongoing downtrend.
Momentum Shifts: When the histogram bars shrink in size (whether blue or red), it could indicate that the current trend is losing strength and may reverse or enter consolidation.
Neutral or Sideways Movement: When the histogram bars hover around zero, it means the price is trading near the midpoint of its recent range, often signaling a lack of strong momentum in either direction.
Multi-Timeframe Confluence:
When the current timeframe (LTF) histogram aligns with the higher timeframe (HTF) histogram (e.g., both are showing strong bullish or bearish divergence), it may provide stronger confirmation of the trend's strength.
Divergence between timeframes (e.g., bullish on LTF but bearish on HTF) may suggest that price movements on lower timeframes are not yet reflected in the broader trend, signaling caution.
Applications:
Trend Identification: The Kurutoga Histogram is highly useful for detecting when the price is trending away from its equilibrium point, providing insight into the strength of ongoing trends.
Momentum Analysis: By measuring the divergence from the 50% level, the histogram helps traders identify when momentum is increasing or decreasing.
Reversal Detection: Shrinking histogram bars can signal weakening momentum, which often precedes trend reversals.
Consolidation and Breakouts: When the histogram remains near zero for an extended period, it suggests consolidation, which often precedes a breakout in either direction.
Advantages:
Clear Visuals: The use of a color-coded histogram makes it easy to visually assess whether the market is gaining bullish or bearish momentum.
Multi-Timeframe Utility: The ability to compare current timeframe signals with higher timeframe signals adds an extra layer of confirmation, reducing false signals.
Dynamic Adjustment: By adjusting the base length, traders can fine-tune the sensitivity of the indicator to match different markets or trading styles.
Limitations:
Lagging Indicator: Like most divergence indicators, the Kurutoga Histogram may lag slightly behind actual price movements, especially during fast, volatile markets.
Requires Confirmation: This indicator works best when used in conjunction with other technical tools like moving averages, support/resistance levels, or volume indicators, to avoid relying on divergence alone.
Conclusion:
The Kurutoga Histogram is a versatile and visually intuitive tool for measuring price divergence from a key equilibrium point, helping traders to assess the strength of trends and identify potential reversal points. Its use across multiple timeframes provides deeper insights, making it a valuable addition to any trading strategy that emphasizes momentum and trend following.
Volume Density AnalysisVolume Density Analysis
Overview
The "Volume Density Analysis" indicator is designed to provide traders with insights into volume dynamics relative to price movements. By analyzing the density of volume against price spread, this indicator helps identify potential reversal points and extreme volume conditions, enhancing decision-making in trading strategies.
Key Features
Volume Density Calculation: The indicator computes the density of volume by dividing the total volume by the price spread (high - low) for each bar. This allows for a more nuanced understanding of volume activity in relation to price movements.
Extremum Detection: Users can specify the number of bars to consider when identifying extreme volume conditions, allowing for tailored analysis based on market behavior.
Reversal Bar Conditions: The indicator includes options to determine if low or high volume bars must coincide with reversal patterns, providing additional context for potential trade signals.
Dynamic Coloring*: The histogram displays colored bars based on specific conditions:
Blue Bars: Indicate the lowest and highest volume density within a specified range, highlighting significant volume extremes.
Gray Bars: Represent lower or higher volume density that meets reversal criteria.
Green and Red Bars: Indicate bullish or bearish reversal signals based on historical density patterns.
User Inputs
nl: Number of previous lower bars to consider for comparison (default is 8).
nh: Number of previous higher bars to consider for comparison (default is 8).
ext: Number of bars for detecting extremum volume (default is 30).
LReversalBar: Boolean option to determine if low volume bar spread must indicate a reversal.
HReversalBar: Boolean option to determine if high volume bar spread must indicate a reversal.
Suggested Timeframes
M15: Without reversal considerations, use `nl=3`, `nh=3`, and `ext=20`.
M5: Without reversal considerations, use `nl=4`, `nh=4`, and `ext=35`.
M1: Use `nl=8`, `nh=8`, and `ext=58` for more detailed analysis.
Rempi Volume
Greetings, dear traders. I present to your attention the concept of a Rempi Volume indicator + info table.
Rempi Volume displays volume in a color palette, where:
gray color - very weak volume,
blue color - weak volume,
green color - normal volume,
orange color - high volume,
red color - very high volume,
purple color - ultra high volume
The indicator also supports the function of displaying a moving average, the default is 20.
The indicator can color bars on the main price chart, depending on how much volume is currently inside the bar.
The Rempi Volume indicator table has the following information for the trader:
Current Bar -information about the current bar: its volume in real time, as well as the percentage of buyers and sellers.
Previous Bar - information about the previous bar: its volume, as well as the percentage of buyers and sellers. (data is updated at bar close)
10 Bar Volume Comparison - data on the volume of buyers or sellers for the previous 10 bars on the chart.
Volume Change - changing the amount of volume between the current and previous bar, in real time.
Average Volume - average trading volume for the current day.
Market Volatility - market volatility and recommendations.
Current Trend - current trend on the market.
RSI - RSI indicator and recommendations.
/////////////////////////////////////////////////////////////
Приветствую вас уважаемые трейдеры. Вашему вниманию представляю концепт индикатора объемов Rempi Volume + информативная таблица.
Rempi Volume отображает объем в цветовой палитре , где:
серый цвет - очень слабый объем,
голубой цвет - слабый объем,
зеленый цвет - нормальный объем,
оранжевый цвет - высокий объем,
красный цвет - очень высокий объем,
фиолетовый цвет - ультра высокий объем
Также индикатор поддерживает функцию отображения скользящей средней, по умолчанию равна 20.
Индикатор может окрашивать бары на основном графике цены, в зависимости ,какой объем в данный момент внутри бара.
Таблица индикатора Rempi Volume имеет следующую информацию для трейдера:
Current Bar - информация о текущем баре: его объем в режиме реального времени, а также процентное соотношение покупателей и продавцов.
Previous Bar - информация о предыдущем баре: его объем , а также процентное соотношение покупателей и продавцов. ( данные обновляются на закрытии бара )
10 Bar Volume Comparison - данные об объеме покупателей или продавцов за предыдущие 10 баров на графике.
Volume Change - изменение количества объема между текущим и предыдущим баром,в режиме реального времени.
Average Volume - средний объем торгов за текущий день.
Market Volatility - волатильность рынка и рекомендации.
Current Trend - текущее направление рынка.
RSI - показатель RSI и рекомендации.