FvgObject█ OVERVIEW
This library provides a suite of methods designed to manage the visual representation and lifecycle of Fair Value Gap (FVG) objects on a Pine Script™ chart. It extends the `fvgObject` User-Defined Type (UDT) by attaching object-oriented functionalities for drawing, updating, and deleting FVG-related graphical elements. The primary goal is to encapsulate complex drawing logic, making the main indicator script cleaner and more focused on FVG detection and state management.
█ CONCEPTS
This library is built around the idea of treating each Fair Value Gap as an "object" with its own visual lifecycle on the chart. This is achieved by defining methods that operate directly on instances of the `fvgObject` UDT.
Object-Oriented Approach for FVGs
Pine Script™ v6 introduced the ability to define methods for User-Defined Types (UDTs). This library leverages this feature by attaching specific drawing and state management functions (methods) directly to the `fvgObject` type. This means that instead of calling global functions with an FVG object as a parameter, you call methods *on* the FVG object itself (e.g., `myFvg.updateDrawings(...)`). This approach promotes better code organization and a more intuitive way to interact with FVG data.
FVG Visual Lifecycle Management
The core purpose of this library is to manage the complete visual journey of an FVG on the chart. This lifecycle includes:
Initial Drawing: Creating the first visual representation of a newly detected FVG, including its main box and optionally its midline and labels.
State Updates & Partial Fills: Modifying the FVG's appearance as it gets partially filled by price. This involves drawing a "mitigated" portion of the box and adjusting the `currentTop` or `currentBottom` of the remaining FVG.
Full Mitigation & Tested State: Handling how an FVG is displayed once fully mitigated. Depending on user settings, it might be hidden, or its box might change color/style to indicate it has been "tested." Mitigation lines can also be managed (kept or deleted).
Midline Interaction: Visually tracking if the price has touched the FVG's 50% equilibrium level (midline).
Visibility Control: Dynamically showing or hiding FVG drawings based on various criteria, such as user settings (e.g., hide mitigated FVGs, timeframe-specific visibility) or external filters (e.g., proximity to current price).
Deletion: Cleaning up all drawing objects associated with an FVG when it's no longer needed or when settings dictate its removal.
Centralized Drawing Logic
By encapsulating all drawing-related operations within the methods of this library, the main indicator script is significantly simplified. The main script can focus on detecting FVGs and managing their state (e.g., in arrays), while delegating the complex task of rendering and updating them on the chart to the methods herein.
Interaction with `fvgObject` and `drawSettings` UDTs
All methods within this library operate on an instance of the `fvgObject` UDT. This `fvgObject` holds not only the FVG's price/time data and state (like `isMitigated`, `currentTop`) but also the IDs of its associated drawing elements (e.g., `boxId`, `midLineId`).
The appearance of these drawings (colors, styles, visibility, etc.) is dictated by a `drawSettings` UDT instance, which is passed as a parameter to most drawing-related methods. This `drawSettings` object is typically populated from user inputs in the main script, allowing for extensive customization.
Stateful Drawing Object Management
The library's methods manage Pine Script™ drawing objects (boxes, lines, labels) by storing their IDs within the `fvgObject` itself (e.g., `fvgObject.boxId`, `fvgObject.mitigatedBoxId`, etc.). Methods like `draw()` create these objects and store their IDs, while methods like `updateDrawings()` modify them, and `deleteDrawings()` removes them using these stored IDs.
Drawing Optimization
The `updateDrawings()` method, which is the most comprehensive drawing management function, incorporates optimization logic. It uses `prev_*` fields within the `fvgObject` (e.g., `prevIsMitigated`, `prevCurrentTop`) to store the FVG's state from the previous bar. By comparing the current state with the previous state, and also considering changes in visibility or relevant drawing settings, it can avoid redundant and performance-intensive drawing operations if nothing visually significant has changed for that FVG.
█ METHOD USAGE AND WORKFLOW
The methods in this library are designed to be called in a logical sequence as an FVG progresses through its lifecycle. A crucial prerequisite for all visual methods in this library is a properly populated `drawSettings` UDT instance, which dictates every aspect of an FVG's appearance, from colors and styles to visibility and labels. This `settings` object must be carefully prepared in the main indicator script, typically based on user inputs, before being passed to these methods.
Here’s a typical workflow within a main indicator script:
1. FVG Instance Creation (External to this library)
An `fvgObject` instance is typically created by functions in another library (e.g., `FvgCalculations`) when a new FVG pattern is identified. This object will have its core properties (top, bottom, startTime, isBullish, tfType) initialized.
2. Initial Drawing (`draw` method)
Once a new `fvgObject` is created and its initial visibility is determined:
Call the `myFvg.draw(settings)` method on the new FVG object.
`settings` is an instance of the `drawSettings` UDT, containing all relevant visual configurations.
This method draws the primary FVG box, its midline (if enabled in `settings`), and any initial labels. It also initializes the `currentTop` and `currentBottom` fields of the `fvgObject` if they are `na`, and stores the IDs of the created drawing objects within the `fvgObject`.
3. Per-Bar State Updates & Interaction Checks
On each subsequent bar, for every active `fvgObject`:
Interaction Check (External Logic): It's common to first use logic (e.g., from `FvgCalculations`' `fvgInteractionCheck` function) to determine if the current bar's price interacts with the FVG.
State Field Updates (External Logic): Before calling the `FvgObjectLib` methods below, ensure that your `fvgObject`'s state fields (such as `isMitigated`, `currentTop`, `currentBottom`, `isMidlineTouched`) are updated using the current bar's price data and relevant functions from other libraries (e.g., `FvgCalculations`' `checkMitigation`, `checkPartialMitigation`, etc.). This library's methods render the FVG based on these pre-updated state fields.
If interaction occurs and the FVG is not yet fully mitigated:
Full Mitigation Update (`updateMitigation` method): Call `myFvg.updateMitigation(high, low)`. This method updates `myFvg.isMitigated` and `myFvg.mitigationTime` if full mitigation occurs, based on the interaction determined by external logic.
Partial Fill Update (`updatePartialFill` method): If not fully mitigated, call `myFvg.updatePartialFill(high, low, settings)`. This method updates `myFvg.currentTop` or `myFvg.currentBottom` and adjusts drawings to show the filled portion, again based on prior interaction checks and fill level calculations.
Midline Touch Check (`checkMidlineTouch` method): Call `myFvg.checkMidlineTouch(high, low)`. This method updates `myFvg.isMidlineTouched` if the price touches the FVG's 50% level.
4. Comprehensive Visual Update (`updateDrawings` method)
After the FVG's state fields have been potentially updated by external logic and the methods in step 3:
Call `myFvg.updateDrawings(isVisibleNow, settings)` on each FVG object.
`isVisibleNow` is a boolean indicating if the FVG should currently be visible.
`settings` is the `drawSettings` UDT instance.
This method synchronizes the FVG's visual appearance with its current state and settings, managing all drawing elements (boxes, lines, labels), their styles, and visibility. It efficiently skips redundant drawing operations if the FVG's state or visibility has not changed, thanks to its internal optimization using `prev_*` fields, which are also updated by this method.
5. Deleting Drawings (`deleteDrawings` method)
When an FVG object is no longer tracked:
Call `myFvg.deleteDrawings(deleteTestedToo)`.
This method removes all drawing objects associated with that `fvgObject`.
This workflow ensures that FVG visuals are accurately maintained throughout their existence on the chart.
█ NOTES
Dependencies: This library relies on `FvgTypes` for `fvgObject` and `drawSettings` definitions, and its methods (`updateMitigation`, `updatePartialFill`) internally call functions from `FvgCalculations`.
Drawing Object Management: Be mindful of TradingView's limits on drawing objects per script. The main script should manage the number of active FVG objects.
Performance and `updateDrawings()`: The `updateDrawings()` method is comprehensive. Its internal optimization (checking `hasStateChanged` based on `prev_*` fields) is crucial for performance. Call it judiciously.
Role of `settings.currentTime`: The `currentTime` field in `drawSettings` is key for positioning time-dependent elements like labels and the right edge of non-extended drawings.
Mutability of `fvgObject` Instances: Methods in this library directly modify the `fvgObject` instance they are called upon (e.g., its state fields and drawing IDs).
Drawing ID Checks: Methods generally check if drawing IDs are `na` before acting on them, preventing runtime errors.
█ EXPORTED FUNCTIONS
method draw(this, settings)
Draws the initial visual representation of the FVG object on the chart. This includes the main FVG box, its midline (if enabled), and a label
(if enabled for the specific timeframe). This method is typically invoked
immediately after an FVG is first detected and its initial properties are set. It uses drawing settings to customize the appearance based on the FVG's timeframe type.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance to be drawn. Core properties (top, bottom,
startTime, isBullish, tfType) should be pre-initialized. This method will
initialize boxId, midLineId, boxLabelId (if applicable), and
currentTop/currentBottom (if currently na) on this object.
settings (drawSettings type from no1x/FvgTypes/1) : A drawSettings object providing all visual parameters. Reads display settings (colors, styles, visibility for boxes, midlines, labels,
box extension) relevant to this.tfType. settings.currentTime is used for
positioning labels and the right boundary of non-extended boxes.
method updateMitigation(this, highVal, lowVal)
Checks if the FVG has been fully mitigated by the current bar's price action.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.isMitigated, this.isVisible,
this.isBullish, this.top, this.bottom. Updates this.isMitigated and
this.mitigationTime if full mitigation occurs.
highVal (float) : The high price of the current bar, used for mitigation check.
lowVal (float) : The low price of the current bar, used for mitigation check.
method updatePartialFill(this, highVal, lowVal, settings)
Checks for and processes partial fills of the FVG.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.isMitigated, this.isVisible,
this.isBullish, this.currentTop, this.currentBottom, original this.top/this.bottom,
this.startTime, this.tfType, this.isLV. Updates this.currentTop or
this.currentBottom, creates/updates this.mitigatedBoxId, and may update this.boxId's
top/bottom to reflect the filled portion.
highVal (float) : The high price of the current bar, used for partial fill check.
lowVal (float) : The low price of the current bar, used for partial fill check.
settings (drawSettings type from no1x/FvgTypes/1) : The drawing settings. Reads timeframe-specific colors for mitigated
boxes (e.g., settings.mitigatedBullBoxColor, settings.mitigatedLvBullColor),
box extension settings (settings.shouldExtendBoxes, settings.shouldExtendMtfBoxes, etc.),
and settings.currentTime to style and position the mitigatedBoxId and potentially adjust the main boxId.
method checkMidlineTouch(this, highVal, lowVal)
Checks if the FVG's midline (50% level or Equilibrium) has been touched.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.midLineId, this.isMidlineTouched,
this.top, this.bottom. Updates this.isMidlineTouched if a touch occurs.
highVal (float) : The high price of the current bar, used for midline touch check.
lowVal (float) : The low price of the current bar, used for midline touch check.
method deleteDrawings(this, deleteTestedToo)
Deletes all visual drawing objects associated with this FVG object.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Deletes drawings referenced by boxId,
mitigatedBoxId, midLineId, mitLineId, boxLabelId, mitLineLabelId,
and potentially testedBoxId, keptMitLineId. Sets these ID fields to na.
deleteTestedToo (simple bool) : If true, also deletes drawings for "tested" FVGs
(i.e., testedBoxId and keptMitLineId).
method updateDrawings(this, isVisibleNow, settings)
Manages the comprehensive update of all visual elements of an FVG object
based on its current state (e.g., active, mitigated, partially filled) and visibility. It handles the drawing, updating, or deletion of FVG boxes (main and mitigated part),
midlines, mitigation lines, and their associated labels. Visibility is determined by the isVisibleNow parameter and relevant settings
(like settings.shouldHideMitigated or timeframe-specific show flags). This method is central to the FVG's visual lifecycle and includes optimization
to avoid redundant drawing operations if the FVG's relevant state or appearance
settings have not changed since the last bar. It also updates the FVG object's internal prev_* state fields for future optimization checks.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance to update. Reads most state fields (e.g.,
isMitigated, currentTop, tfType, etc.) and updates all drawing ID fields
(boxId, midLineId, etc.), this.isVisible, and all this.prev_* state fields.
isVisibleNow (bool) : A flag indicating whether the FVG should be currently visible. Typically determined by external logic (e.g., visual range filter). Affects
whether active FVG drawings are created/updated or deleted by this method.
settings (drawSettings type from no1x/FvgTypes/1) : A fully populated drawSettings object. This method extensively
reads its fields (colors, styles, visibility toggles, timeframe strings, etc.)
to render FVG components according to this.tfType and current state. settings.currentTime is critical for positioning elements like labels and extending drawings.
Visualization
Price AltimeterThis indicator should help visualize the price, inspired by a Digital Altimeter in a Pilots HUD.
It's by default calibrated to Bitcoin, with the small levels showing every $100 and the larger levels setup to display on every $1000. But you can change this to whatever you want by changing the settings for: Small and Large Level Increments.
The default colors are grey, but can be changed to whatever you want, and there are two cause if you want they work as a gradient.
There are options to fade as the values go away from the current price action.
There are options for Forward and Backward Offsets, 0 is the current price and each value represents a candle on whatever time frame your currently on.
Other Options include the Fade Ratio, the Line Width and Style, which are all self explanatory.
Hope you Enjoy!
Backtest it in fast mode to see it in action a little better...
Known Issues:
For some reason it bug's out when either or are displaying more than 19 lines, unsure why so its limited to that for now.
Extra Note on what this may be useful for: I always wanted to make this, but didn't realize how to put things in front of the price action... Offset! Duh! Anyways, I thought of this one because I often it's hard on these charts to really get an idea for absolute price amounts across different time frames, this in an intuitive, at a glance way to see it because the regular price thing on the right always adds values between values when you zoom in and you can sometimes get lost figuring out the proportions of things.
Could also be useful for Scalping?
Month of Year Performance█ OVERVIEW
The Month of Year Performance indicator is designed to visualize and compare the cumulative percentage change for each month of the year. By aggregating monthly returns, it helps uncover seasonal trends and potential anomalies in financial markets.
In financial analysis, a calendar based anomaly refers to recurring patterns or tendencies associated with specific time periods, such as days of the week. By calculating the cumulative percentage change for each month (January through December) and displaying the results both graphically and in a summary table, this indicator helps identify whether certain months
consistently outperform others.
█ FEATURES
Customisable time window via Time Settings.
Calculates cumulative percentage change for each month (January to December) separately.
Built-in error check to ensure the indicator is applied on a Monthly timeframe.
Distinct visual representation for each month using unique colours.
Customisable table settings including location and font size.
Displays a performance summary table with metrics such as performance, average return, % positive, and count.
█ HOW TO USE
Add the indicator to a chart set to a Monthly timeframe.
Select your desired Start Time and End Time in the Time Settings.
Toggle the performance table on or off in the Table Settings.
Adjust the table’s location and font size as needed.
View the cumulative monthly performance plotted in distinct colours.
Colour Scheme:
January: Blue
February: Red
March: Green
April: Orange
May: Purple
June: Fuchsia
July: Teal
August: Yellow
September: Navy
October: Lime
November: Maroon
December: Aqua
Day of Week Performance█ OVERVIEW
The Day of Week Performance indicator is designed to visualise and compare the cumulative percentage change for each day of the week. This indicator explores one of the many calendar based anomalies in financial markets.
In financial analysis, a calendar based anomaly refers to recurring patterns or tendencies associated with specific time periods, such as days of the week. By calculating the cumulative percentage change for each day (Monday through Friday) and displaying the results both graphically and in a summary table, this indicator helps identify whether certain days consistently outperform others.
█ FEATURES
Customisable time window via Time Settings.
Calculates cumulative percentage change for each day (Monday to Friday) separately.
Option to use Sunday instead of Friday for CFDs and Futures analysis.
Distinct visual representation for each day using unique colours.
Customisable table settings including position and font size.
Built-in error checks to ensure the indicator is applied on a Daily timeframe.
█ HOW TO USE
Add the indicator to a chart set to a Daily timeframe.
Select your desired Start Time and End Time in the Time Settings.
Toggle the performance table on or off in the Table Settings.
Adjust the table’s location and font size as needed.
Use the "Use Sunday instead of Friday" option if your market requires it.
View the cumulative performance plotted in distinct colours.
Colour Scheme:
Monday: Blue
Tuesday: Red
Wednesday: Green
Thursday: Orange
Friday: Purple
Even vs Odd Days Performance█ OVERVIEW
The Even vs Odd Days Performance indicator is designed to visualise and compare the performance of even-numbered days versus odd-numbered days. This indicator explores one of the many calendar based anomalies that exist in financial markets.
In the context of financial analysis, a calendar based anomaly refers to patterns or tendencies that are linked to specific time periods, such as days of the week, weeks of the month, or months of the year. This indicator helps explore whether such a calendar based anomaly exists between even and odd days.
By calculating cumulative daily performance and counting the number of days with positive returns, it provides a clear snapshot of whether one set of days tends to outperform the other, potentially highlighting a calendar based anomaly if a significant difference is observed.
█ FEATURES
Customisable time window through input settings.
Tracks cumulative returns for even and odd days separately.
Easily adjust table settings like position and font size via input options.
Clear visual distinction between even and odd day performance using different colours.
Built-in error checks to ensure the indicator is applied to the correct timeframe.
█ HOW TO USE
Add the indicator to a chart with a Daily timeframe.
Choose your start and end dates in the Time Settings.
Enable or disable the performance table in the Table Settings as needed.
View the cumulative performance, with even days in green and odd days in red.
Even vs Odd Weeks Performance█ OVERVIEW
The Even vs Odd Weeks Performance indicator is designed to visualise and compare the performance of even-numbered weeks versus odd-numbered weeks. This indicator explores one of the many calendar based anomalies that exist in financial markets.
In the context of financial analysis, a calendar based anomaly refers to patterns or tendencies that are linked to specific time periods, such as days of the week, weeks of the month, or months of the year. This indicator helps explore whether such a calendar based anomaly exists between even and odd weeks.
By calculating cumulative weekly performance and counting the number of weeks with positive returns, it provides a clear snapshot of whether one set of weeks tends to outperform the other, potentially highlighting a calendar based anomaly if a significant difference is observed.
█ FEATURES
Customisable time window through input settings.
Tracks cumulative returns for even and odd weeks separately.
Easily adjust table settings like position and font size via input options.
Clear visual distinction between even and odd week performance using different colours.
Built-in error checks to ensure the indicator is applied to the correct timeframe.
█ HOW TO USE
Add the indicator to a chart with a Weekly timeframe.
Choose your start and end dates in the Time Settings.
Enable or disable the performance table in the Table Settings as needed.
View the cumulative performance, with even weeks in green and odd weeks in red.
Drawdown Visualisation█ OVERVIEW
The Drawdown Visualisation indicator calculates and displays the instrument’s drawdown (in percent) relative to its all‐time high (ATH) from a user‐defined start date. It provides customisable options for label appearance, threshold lines (0%, –50%, –100%), and can plot historic drawdown levels via pivot detection.
█ USAGE
This indicator should be used with the Percentage Retracement from ATH indicator.
█ KEY FEATURES
Custom Date Settings — Use a custom start date so that only specified price action is considered.
Retracement Level Calculation — Determines ATH and computes multiple retracement levels using percentages from 0% to –100%.
Visual Signals and Customisation — Plots configurable horizontal lines and labels that display retracement percentages and prices.
Time Filtering — Bases calculations on data from the desired time period.
Historic Drawdowns — Display historical drawdowns
█ PURPOSE
Assist traders in visualising the depth of price retracements from recent or historical peaks.
Identify critical zones where the market may find support or resistance after reaching an ATH.
Facilitate more informed entry and exit decisions by clearly demarcating retracement levels on the chart.
█ IDEAL USERS
Swing Traders — Looking to exploit pullbacks following strong upward moves.
Technical Analysts — Interested in pinpointing key retracement levels as potential reversal or continuation points.
Price Action Traders — Focused on the nuances of market peaks and subsequent corrections.
Strategy Developers — Keen to backtest and refine approaches centred on retracement dynamics.
Percentage Retracement from ATH█ OVERVIEW
The Percentage Retracement from ATH indicator is a dynamic trading utility designed to help traders gauge market pullbacks from the peak price. By calculating key retracement levels based on the All-Time High (ATH) and user‑defined percentage inputs, it offers clear visual cues to assist in identifying potential support and resistance zones.
█ KEY FEATURES
Custom Date — Use a custom start date so the indicator only considers specified price action.
Retracement Calculation — Determines ATH and calculates levels based on user‑defined percentages (0% to –100%).
Visual Customisation — Plots configurable horizontal lines and labels showing retracement percentages and prices.
Time Filtering — Uses time filtering to base levels on the desired data period.
█ PURPOSE
Assist traders in visualising the depth of price retracements from recent or historical peaks.
Identify critical zones where the market may find support or resistance after reaching an ATH.
Facilitate more informed entry and exit decisions by clearly demarcating retracement levels on the chart.
█ IDEAL USERS
Swing Traders — Looking to exploit pullbacks following strong upward moves.
Technical Analysts — Interested in pinpointing key retracement levels as potential reversal or continuation points.
Price Action Traders — Focused on the nuances of market peaks and subsequent corrections.
Strategy Developers — Keen to backtest and refine approaches centred on retracement dynamics.
Silen's EMA AreasAre you tired of reading candles? 🧨 Do you want to bring more meaning to your chart? 🧹
Then this is the script for you!
This script does:
- Add several meaningfully pre-configured EMA lines to your chart - up to EMA 300
- Colors the areas between EMA lines in 3d colors - green and red
- The Smaller the EMA, the firmer the color
- Highlights the EMA 300 in a golden color
What is the meaning of this?
Let me introduce a new word to you: EMA FOLDING .
Yes, you heard right. With this indicator you can see in 3D how EMA lines are folding above and below each other, indicating severe mood swings in the chart.
This helps you keep track of what your instrument is actually doing while it enables you to cancel out the noise and messyness of ordinary candles which can be quite random and hard to read.
Once an EMA is fully positive or negatively folded (all ema lines are green and above each other from largest EMA to smallest EMA and vice versa for negatively folded) you can be sure that you are in a Trend or certain mood (for higher timeframes, from 15mins on).
I don't ever want to read any chart without having this indicator on. Whenever I present charts to anybody I use this indicator - and the feedback is insanely positive. People tend to read and understand charts much better with this indicator than just staring at candles.
Why is this indicator different to other EMA indicators and should thereby not be deleted by the TradingView Team due to redundance with other EMA indicators?
- This is not a simple indicator for EMAs
- Rather, this is an indicator to better and easier read the whole chart
- You can detect mood swings very easily which is very hard to do with a normal EMA indicator
- I haven't found any EMA indicator on TradingView that does this job so i sincerely believe it is extremely unique
- I sincerely believe it can help people get a much better understanding of charts without actualy getting into details of EMA's or even needing to know what an EMA is.
This indicator isn't intended for trading purposes, rather it is intended to give you a better and easier understanding of the chart. Of course - you can also use it for your trading but like I said, that is not the primary intended purpose.
This indicator comes pre-configured with quite optimal values (in my opinion) but of course can be fully customized. 🧮
Test it for yourself!
Gradient Candles
The Gradient Candles indicator is crafted to be a comprehensive replacement for default candlesticks, offering users an enhanced and visually stunning alternative. To experience the intended results and fully immerse in the distinctive features of Gradient Candles, it's recommended to hide the default candlesticks. This ensures that traders can fully appreciate the unique color gradient and dynamic visual representation that this indicator brings to chart analysis.
Designed to elevate chart analysis, Gradient Candles not only offer a fresh perspective on price movements but also captivate users with their visually appealing representation of market dynamics. Departing from traditional candlestick coloration, the dynamic adaptation of colors, the 'color.from_gradient()' function plays a pivotal role in translating the current source value into a color that reflects its proximity to the highest and lowest values and corresponding colors. Beyond its analytical capabilities, Gradient Candles transform market analysis into an aesthetically enriching experience, providing traders with a unique and comprehensive tool for their technical analysis toolkit.
Traders can tailor the indicator's appearance to suit their preferences and seamlessly integrate it into their personal trading environment. From color inversion to transparency adjustments and the option to fill candles instead of outlining them, the customization features empower users to create a visual representation that aligns precisely with their unique preferences.
Range PercentageRange Percentage is a simple indicator utility to clearly display and dynamically alert on where a chosen series falls between two bounds, either series themselves or constant values.
To set up, select between series or value for upper and lower bounds. Only the chosen options will be used by the indicator, though you may enter the non-selected option. Configure the thresholds if you wish to use them for visual display or alerting. If you only care about the background color, disable both thresholds and the percentage line and move the indicator into the main pane.
Some sample use cases:
Coloring background on a zoomed-in chart to show to show price change relative to the entire value of an asset, not just the range selected on the y-axis
Get alerts which adjust dynamically as price approaches another series or dynamic value
Determine at a glance where a price falls between your identified support/resistance lines, no matter where you zoom or scroll
Compare relative gain of two assets
Identify trends of a price closing closer to low or high over time
This indicator is often most useful in conjunction with other indicators which produce a plotted series output and can save a lot of time thinking or interpreting. Its usefulness to a trader depends entirely on the rationale for choosing a lower/upper bound and sample series that are meaningful to that trader.
Blockunity Drawdown Visualizer (BDV)Monitor the drawdown (value of the drop between the highest and lowest points) of assets and act accordingly to reduce your risk.
Introducing BDV, the incredibly intuitive metric that visualizes asset drawdowns in the most visually appealing manner. With its color gradient display, BDV allows you to instantly grasp the state of retracement from the asset’s highest price level. But that’s not all – you have the option to display the oscillator’s colorization directly on your chart, enhancing your analysis even further.
The Idea
The goal is to provide the community with the best and most complete tool for visualizing the Drawdown of any asset.
How to Use
Very simple to use, the indicator takes the form of an oscillator, with colors ranging from red to green depending on the Drawdown level. A table summarizes several key data points.
Elements
On the oscillator, you'll find a line with a color gradient showing the asset's Drawdown. The flatter line represents the Max Drawdown (the lowest value reached).
In addition, the table summarizes several data:
The asset's All Time High (ATH).
Current Drawdown.
The Max Drawdown that has been reached.
Settings
First of all, you can activate a "Bar Color" in the settings (You must also uncheck "Borders" and "Wick" in your Chart Settings):
You can display Fibonacci levels on the oscillator. You'll see that levels can be relevant to drawdown. The color of the levels is also configurable.
In the calculation parameters, you can first choose between taking the High of the candles or the Close. By default this is Close, but if you change the parameter to High, the indication next to ATH in the table will change, and you'll see that the values in the table will be affected.
The second calculation parameter (Start Date) lets you modify the effective start date of the ATH, which will affect the drawdown level. Here's an example:
How it Works
First, we calculate the ATH:
var bdv_top = bdv_source
bdv_top := na(bdv_top ) ? bdv_source : math.max(bdv_source, bdv_top )
Then the drawdown is calculated as follows:
bdv = ((bdv_source / bdv_top) * 100) - 100
Then the max drawdown :
bdv_max = bdv
bdv_max := na(bdv_max ) ? bdv : math.min(bdv, bdv_max )
BTC Performance Table / BTC Seasonality Visualization
This script visualizes Bitcoins "seasonality", in form of a colored table (based on the idea from "BigBangTheory")
The history table shows you which months do statistically perform better/worse in comparison to other months.
How to use this script:
Choose ticker "BLX" ("BraveNewCoin Liquid Index for Bitcoin").
Set the charts time frame to weekly or daily. Tables position on the screen and its colors are configurable.
Table explanation:
Cells show whether a gain or a loss occured from month to month, since BTC came out in 2010.
The price difference, between monthly open and monthly close, determines the cell color (negative -> red, positive -> green).
The year column shows total gain (green) or loss (red) for that particular year.
Each value is presented as a rounded percentage number.
How this script works:
The script calculates the price difference between each monthly and yearly open and close, storing those numbers inside arrays.
Then it populates the table, by using those numbers and doing the cell coloring (there will be a yellow cell, in case no change should occur).
German Short-Description
Prozentuale Übersicht in Tabellenform, der monatlichen, sowie jährlichen, Performance des Bitcoin (basierend auf der Idee von "BigBangTheory").
Hierdurch wird die "Saisonalität" des Bitcoin sichtbar. D.h. welche Monate des Jahres, im Vergleich zu anderen Monaten, statistisch gesehen öfter positiv/negativ schließen.
Zwecks vollständiger Darstellung muss der Ticker "BLX" ("BraveNewCoin Liquid Index for Bitcoin") im weekly oder daily time frame aktiv sein.
Swing RibbonA configurable fast and slow moving average combined to help visualize the current trend and potential changes in trend.
Allows for specifying a fixed set of minutes or days instead of just bars so that the visualization is similar when changing time-frames.
Normalized Oscillators Spider Chart [LuxAlgo]This indicator displays a spider chart overlaid on the user’s current chart allowing the visualization of information given by various normalized oscillators. It is possible to customize the spider chart by hiding certain oscillators from within the settings which removes their corresponding spokes from the chart.
Users can control the length settings of each oscillator individually or use a global length setting that applies to every oscillator. An additional meter element is displayed and aims to give the overall sentiment returned by the oscillators. This can also be used to gauge whether the market is trending or ranging.
This is a relatively simple application of a spider chart but can prove to be useful to some users.
1. Settings
RSI: Displays the Relative Strength Index spoke on the spider chart, includes the length setting on the right of the toggle.
%K: Displays the Stochastic Oscillator "%K" spoke on the spider chart, includes the length setting on the right of the toggle.
COR: Displays the Correlation Oscillator spoke on the spider chart, includes the length setting on the right of the toggle.
MFI: Displays the Money Flow Index oscillator spoke on the spider chart, includes the length setting on the right of the toggle.
WPR: Displays the Williams Percent Rank oscillator spoke on the spider chart, includes the length setting on the right of the toggle.
%UP: Displays the percentage of upward variations spoke on the spider chart, includes the length setting on the right of the toggle.
CMO: Displays the Chande Momentum Oscillator spoke on the spider chart, includes the length setting on the right of the toggle.
AOS: Displays the Aroon oscillator spoke on the spider chart, includes the length setting on the right of the toggle.
Global Oscillators Length: Determines whether all oscillators should use the same length settings, determined by the setting on the right of the toggle.
1.1 Style Settings
Spider Chart Length: Determines the horizontal width of the spider chart.
Spider Chart Offset: Offset between the most recent bar and the left extremity of the spider chart.
2. Usage
A spider chart can be a very useful visualization tool when it comes to seeing the individual characteristics of various variables at the same time.
Here, the tool can give a general sentiment on the direction of the trend without adding each indicator to your chart. It is also possible to determine when an oscillator is considered overbought or oversold with this indicator.
The dashed line represents the central value for each oscillator.
Disabling any of the oscillators from the settings will return a spider chart using fewer spokes.
The script also displays a meter that can be used to determine the overall sentiment given by all oscillators. This metric is based on the average value between each oscillator. An overall sentiment closer to 50 would indicate a ranging market.
Moving Average Heatmap Visualization7 different types of moving averages (5 different lengths of each) compared to a base moving average. Base moving average can be configured to be a slew of different types of moving averages (credit to @mortdiggiddy for the code) and have a custom length.
Red = base moving average is over other moving average (bearish)
Green = base moving average is under other moving average (bullish)
lengths for the different MAs are just fibonacci numbers due to lack of creativity.
First 5 moving averages are Simple moving average the next 5 are Exponential moving averages and after that it is weighted moving averages, volume weighted moving average (VWAP), Exponential volume weighted moving average (thanks again @mortdiggiddy ), hull moving averages and lastly zero lag moving averages.
The indicator might lag your chart out a bit so be ready for that.
Have fun!
Trend is your friendThis indicator evaluates the trend based on crosses of two McGinley moving averages. It paints candles accordingly (it does not repaint), so you can see what the indicator is saying more clearly and stay in your trade until you see a period of consolidation or a reversal. You can control how far away those moving averages need to be for you to consider it a trend. If this distance is not met candles color is not changed and it shows you that the market is in a period of consolidation. I also added visualization of RSI, so you can have an easier time finding appropriate profit targets. For stop loss I would recommend placing it a couple points above or below the previous high / low that is located above / below you final target for entry. You can also use a certain percentage that works for you. I tried adding a stop loss based on ATR, but I did not like the results. Using market structure is a better choice in my opinion.
Here is a basic trading strategy for the default settings:
Wait for the indicator to start printing a series of green or red candles. After that you can enter a long or a short around moving averages. Another valid place to entry is the specific RSI zone. If we are in an uptrend buying when RSI is oversold can be beneficial as you expect market to recover. I do not recommend changing RSI from 14. Vice versa for the downtrend. It gives you an edge as you know at what price RSI will be oversold and allows you to place trades in advance. Pretty neat! You need to realize that no indicator or strategy can give you an exact entry. There will always be some margin of error. What I wanted to say is that if there is a strong trend up and you buy around your key moving averages and when RSI is oversold you entered in good places and there is a pretty good chance you will make money.
Time frame settings:
If you want to use tighter stop losses I would recommend sticking to 15m. Do not go lower. It is not worth the stress. 1h and 4h seems to be very good as well, but expect your stop losses to be wider. What I personally tend to do is display 15m, 30m and 1h and compare it. Think of it as a short, mid and long term. That way you can see things little bit better.
Examples:
1H chart BTC
4h chart EUR / USD
1D chart NASDAQ
15m chart BTC (Daytrading)
That last chart shows that even if you were longing while the trend was about to change you still had a good chance to close it with a little profit and switch to short easily. The default settings is what has worked the best for me. Feel free to change them as you see fit and do not forget to let me know if you find something that works better :)
Notes:
Either disable wick display or change it to a neutral color like gray for both green and red candles. Unfortunately pine script does not allow wick painting, so if you have red / green wicks it will look terrible. If RSI visualization makes your candles look too small you can go to settings and disable the display of individual RSI levels. You will still be able to see the zones, but the scale won't be affected.