commonThe "Pineify/common" library presents a specialized toolkit crafted to empower traders and script developers with state-of-the-art time manipulation functions on the TradingView platform. It is instead a foundational utility aimed at enriching your script's ability to process and interpret time-based data with unparalleled precision.
Key Features
String Splitter:
The 'str_split_into_two' function is a universal string handler that separates any given input into two distinct strings based on a specified delimiter. This function is especially useful in parsing time strings or any scenario where a string needs to be divided into logical parts efficiently.
Example:
= str_split_into_two("a:b", ":")
// a = "a"
// b = "b"
Time Parser:
With 'time_to_hour_minute', users can effortlessly convert a time string into numerical hours and minutes. This function is pivotal for those who need to exact specific time series data or wish to schedule their trades down to the minute.
Example:
= time_to_hour_minute("02:30")
// time_hour = 2
// time_minute = 30
Unix Time Converter
The 'time_range_to_unix_time' function transcends traditional boundaries by converting a given time range into Unix timestamp format. This integration of date, time, and timezone, accounts for a comprehensive approach, allowing scripts to make timed decisions, perform historical analyses, and account for international markets across different time zones.
Example:
// Support 'hhmm-hhmm' and 'hh:mm-hh:mm'
= time_range_to_unix_time("09:30-12:00")
Summary:
Each function is meticulously designed to minimize complexity and maximize versatility. Whether you are a programmer seeking to streamline your code, or a trader requiring precise timing for your strategies, our library provides the logical framework that aligns with your needs.
The "Pineify/common" library is the bridge between high-level time concepts and actionable trading insights. It serves a multitude of purposes – from crafting elegant time-based triggers to dissecting complex string data. Embrace the power of precision with "Pineify/common" and elevate your TradingView scripting experience to new heights.
WAKTU
Gradient Value Overlay
This script helps with identifying certain conditions without cluttering too much of the candles.
Some use cases:
It helps identify rsi low and high values.
Directional price movement becoming difficult.
low and high volume.
it uses a percent rank to distinguish low and high values.
It then uses a gradient to match the percentile rank to heatmap type colors.
i.e. dark blue for lowest volume, white for highest volume.
Current options are:
max bars to use.
approximate color - This value will attempt to give an approximation of what the color might be for the candle close.
e.g. If you're on the 1-hour chart, and only 30 minutes have past, it will multiple the current volume by 1.5. As time passes, if no volume comes in eventually, it will multiply current volume by 1.
This approximate value is only set to work with volume-based options.
option - select the type of value you'd like to see the gradient for.
timeframe - get values from a different chart timeframe.
on/off - turns the gradient on or off.
Gradient type - color wheel or heatmap. Currently these are the only two gardient options.
color wheel's colors for low to high values:
color wheel's current colors:
dark blue
purple
pink
red
orange
yellow
green
teal
white
heatmap's current colors from low values to high values:
dark blue
purple
pink
red
orange
yellow
white
reverse gradient - will reverse the colors so dark blue will be the high value and white will be the low value. Some charts based on previous data; you might need to switch the gradient colors.
moving average length while inside timeframe - an exponential moving average is applied to the values. At 1, there is no moving average applied.
Use case for this is to smooth out the gradient.
An example use case - if your currently on the 1-hour chart, you can set the timeframe to 1 minute and then the moving average length inside timeframe to 60. You will then be seeing the color sixty 1-minute bars.
current timeframe moving average length - an exponential moving average applied to current gradient (helps with smoothing gradient).
Smooth, further smooths values.
There is no set rule for what moving average lengths to use. Adjust timeframe, and moving average lengths to get an insight.
The Square of NineThe Square of Nine
█ OVERVIEW
This script is made to make it easy for traders to visualize the movement of price along the square of nine table. This script Places the square of nine table right infront of you in the middle of the screen, which is why it's suggested that you would use it on the side of your main chart.
This script gives you ability to adjust number of revolutions which is the number of rings making the square of nine table up to 9 revs.
You can also change the price unit ( increments ) for each step.
You can use this indicator as a visual reference to track the price action along the square of 9 and make sense of the mechanism behind turning points. It is made to complement both :
- Gann Static Square of 9
- Gann Dynamic Square of 9
You can enable all of the following degrees and adjust their visual appearances on the chart :
360, 45, 90, 135, 180, 225, 270, 315
█ Future Plans and upgrades to this script may include :
1. Adjustable starting price.
2. Astro Integrations.
3. Visuals and matching prices.
and more! feel free to let me know what you'd like to see!
█ How to use :
1. Put the script on your chart
2. Selected your desired levels to activate and the number of desired revolutions.
give the script a few seconds and you should be set.
Daye Quarterly Theory ~ DQT [Liquidity_Pro]Thanks
This indicator puts the time-based research of trader Daye on your chart. Daye studied the ICT killzones and macro times and presented his findings, as “Quarterly Theory” on YouTube. Thank you Daye for sharing!
This indicator is not the first, so S/O to @toodegrees, @a1tmaniac and @joshuuu for their own excellent Quarterly Theory indicators. Last but not least, huge thanks go to ICT for his trading innovation and generous free price action education and to @twingall for his insight, attention to detail and great teamwork coding this indicator.
Daye’s Quarterly Theory
First, the fundamental concept is that all units of time can be divided by four into quarters -- just as we look at the year’s corporate reporting cycle of Q1, Q2, Q3, and Q4.
Dividing the day by four, into six hour quarters and again into 90 minute quarters and again into 22.5 minute ‘Micro’ quarters we reach the smallest unit shown by this indicator. Apply it to your NQ1! or ES1! charts and you may see remarkable confluence with the ICT macro times!
Why would we want to do this? It helps us understand, visualize and predict ICT’s PO3 concept:
• A - Accumulation (required for a cycle to occur)
• M - Manipulation
• D - Distribution
• X - Reversal/Continuation
The bottom line - we want to sell after a manipulation (M) up, or buy after a manipulation down and Quarterly Theory plots times on your chart where this may occur. Every asset is different, so back-test and research it.
Note, this indicator always shows Q1 as the accumulation quarter (by color), but the order is not fixed and instead of AMDX may appear as XAMD, where Q1 is the Reversal/Continuation quarter. We may eventually offer an update to this indicator which would automatically transpose the quarter colors for you.
The Quarters
Yearly:
• Q1 - Jan, Feb, Mar
• Q2 - Apr, May, Jun
• Q3 - Jul, Aug, Sep
• Q4 - Oct, Nov, Dec
Monthly (starts with the first month’s Monday regardless of the date):
• Q1 - Week 1, first Monday of the month
• Q2 - Week 2, second Monday of the month
• Q3 - Week 3, third Monday of the month
• Q4 - Week 4, fourth Monday of the month
Weekly (Daye ignores Friday and Sunday’s price action):
• Q1 - Mon
• Q2 - Tue
• Q3 - Wed
• Q4 - Thu
Daily (times are all EST / New York):
• Q1 - 18:00 - 00:00 Asia
• Q2 - 00:00 - 06:00 London
• Q3 - 06:00 - 12:00 NY AM
• Q4 - 12:00 - 18:00 NY PM
90 Minute:
• Q1 - 18:00 - 19:30
• Q2 - 19:30 - 21:00
• Q3 - 21:00 - 22:30
• Q4 - 22:30 - 00:00
Micro (22.5 minute quarters, DQT only displays Micros on 7 minute TF or lower)
• Q1 - 18:00 - 18:22:30
• Q2 - 18:22:30 - 18:45
• Q3 - 18:45 - 19:07:30
• Q4 - 19:07:30 - 19:30
About the DQT Indicator
This indicator plots the quarterly time boxes in a panel which can be placed above or below your chart. It allows you to add labels with the opening time and dates and also place time of day markers which can be useful for anyone who wants to mark lunch, and of the trading day or perhaps a favorite ICT macro time. It also works on GOLD (CAPITALCOM), DXY (TVC), currencies and stocks in Regular Trading Hour (RTH) mode.
Note the way that the indicator displays quarters is affected by the time frame you are viewing and as a result you may notice imperfections. Also, the indicator is not tuned to work with every broker, so for example with DXY, you will see the TVC feed is displayed nicely but other feeds are not.
Settings
The DQT indicator offers a great deal of flexibility to customize the display of quarters aesthetically. But it’s designed to work out-of-the-box on both light and dark background charts. It's set up to only show 90 minute and micro quarters initially, but in the settings, you can turn on the daily, weekly, monthly, and yearly quarters. Remember you will only see the Micros on the 7 minute TF or lower.
Lastly, the DQT indicator works well with our DOB indicator allowing you to visualize the confluence of high timeframe PDAs or POIs with manipulation quarters.
If you find our indicators useful, please boost, comment and share -- it's very motivational for us to develop them further and publish new ones!
chrono_utilsLibrary "chrono_utils"
📝 Description
Collection of objects and common functions that are related to datetime windows session days and time ranges. The main purpose of this library is to handle time-related functionality and make it easy to reason about a future bar checking if it will be part of a predefined session and/or inside a datetime window. All existing session functionality I found in the documentation e.g. "not na(time(timeframe, session, timezone))" are not suitable for strategy scripts, since the execution of the orders is delayed by one bar, due to the script execution happening at the bar close. Moreover, a history operator with a negative value that looks forward is not allowed in any pinescript expression. So, a prediction for the next bar using the bars_back argument of "time()"" and "time_close()" was necessary. Thus, I created this library to overcome this small but very important limitation. In the meantime, I added useful functionality to handle session-based behavior. An interesting utility that emerged from this development is data anomaly detection where a comparison between the prediction and the actual value is happening. If those two values are different then a data inconsistency happens between the prediction bar and the actual bar (probably due to a holiday, half session day, a timezone change etc..)
🤔 How to Guide
To use the functionality this library provides in your script you have to import it first!
Copy the import statement of the latest release by pressing the copy button below and then paste it into your script. Give a short name to this library so you can refer to it later on. The import statement should look like this:
import jason5480/chrono_utils/2 as chr
To check if a future bar will be inside a window first of all you have to initialize a DateTimeWindow object.
A code example is the following:
var dateTimeWindow = chr.DateTimeWindow.new().init(fromDateTime = timestamp('01 Jan 2023 00:00'), toDateTime = timestamp('01 Jan 2024 00:00'))
Then you have to "ask" the dateTimeWindow if the future bar defined by an offset (default is 1 that corresponds th the next bar), will be inside that window:
// Filter bars outside of the datetime window
bool dateFilterApproval = dateTimeWindow.is_bar_included()
You can visualize the result by drawing the background of the bars that are outside the given window:
bgcolor(color = dateFilterApproval ? na : color.new(color.fuchsia, 90), offset = 1, title = 'Datetime Window Filter')
In the same way, you can "ask" the Session if the future bar defined by an offset it will be inside that session.
First of all, you should initialize a Session object.
A code example is the following:
var sess = chr.Session.new().from_sess_string(sess = '0800-1700:23456', refTimezone = 'UTC')
Then check if the given bar defined by the offset (default is 1 that corresponds th the next bar), will be inside the session like that:
// Filter bars outside the sessions
bool sessionFilterApproval = view.sess.is_bar_included()
You can visualize the result by drawing the background of the bars that are outside the given session:
bgcolor(color = sessionFilterApproval ? na : color.new(color.red, 90), offset = 1, title = 'Session Filter')
In case you want to visualize multiple session ranges you can create a SessionView object like that:
var view = SessionView.new().init(SessionDays.new().from_sess_string('2345'), array.from(SessionTimeRange.new().from_sess_string('0800-1600'), SessionTimeRange.new().from_sess_string('1300-2200')), array.from('London', 'New York'), array.from(color.blue, color.orange))
and then call the draw method of the SessionView object like that:
view.draw()
🏋️♂️ Please refer to the "EXAMPLE DATETIME WINDOW FILTER" and "EXAMPLE SESSION FILTER" regions of the script for more advanced code examples of how to utilize the full potential of this library, including user input settings and advanced visualization!
⚠️ Caveats
As I mentioned in the description there are some cases that the prediction of the next bar is not accurate. A wrong prediction will affect the outcome of the filtering. The main reasons this could happen are the following:
Public holidays when the market is closed
Half trading days usually before public holidays
Change in the daylight saving time (DST)
A data anomaly of the chart, where there are missing and/or inconsistent data.
A bug in this library (Please report by PM sending the symbol, timeframe, and settings)
Special thanks to @robbatt and @skinra for the constructive feedback 🏆. Without them, the exposed API of this library would be very lengthy and complicated to use. Thanks to them, now the user of this library will be able to get the most, with only a few lines of code!
ATH Drawdown Indicator by Atilla YurtsevenThe ATH (All-Time High) Drawdown Indicator, developed by Atilla Yurtseven, is an essential tool for traders and investors who seek to understand the current price position in relation to historical peaks. This indicator is especially useful in volatile markets like cryptocurrencies and stocks, offering insights into potential buy or sell opportunities based on historical price action.
This indicator is suitable for long-term investors. It shows the average value loss of a price. However, it's important to remember that this indicator only displays statistics based on past price movements. The price of a stock can remain cheap for many years.
1. Utility of the Indicator:
The ATH Drawdown Indicator provides a clear view of how far the current price is from its all-time high. This is particularly beneficial in assessing the magnitude of a pullback or retracement from peak levels. By understanding these levels, traders can gauge market sentiment and make informed decisions about entry and exit points.
2. Risk Management:
This indicator aids in risk management by highlighting significant drawdowns from the ATH. Traders can use this information to adjust their position sizes or set stop-loss orders more effectively. For instance, entering trades when the price is significantly below the ATH could indicate a higher potential for recovery, while a minimal drawdown from the ATH may suggest caution due to potential overvaluation.
3. Indicator Functionality:
The indicator calculates the percentage drawdown from the ATH for each trading period. It can display this data either as a line graph or overlaid on candles, based on user preference. Horizontal lines at -25%, -50%, -75%, and -100% drawdown levels offer quick visual cues for significant price levels. The color-coding of candles further aids in visualizing bullish or bearish trends in the context of ATH drawdowns.
4. ATH Level Indicator (0 Level):
A unique feature of this indicator is the 0 level, which signifies that the price is currently at its all-time high. This level is a critical reference point for understanding the market's peak performance.
5. Mean Line Indicator:
Additionally, this indicator includes a 'Mean Line', representing the average percentage drawdown from the ATH. This average is calculated over more than a thousand past bars, leveraging the law of large numbers to provide a reliable mean value. This mean line is instrumental in understanding the typical market behavior in relation to the ATH.
Disclaimer:
Please note that this ATH Drawdown Indicator by Atilla Yurtseven is provided as an open-source tool for educational purposes only. It should not be construed as investment advice. Users should conduct their own research and consult a financial advisor before making any investment decisions. The creator of this indicator bears no responsibility for any trading losses incurred using this tool.
Please remember to follow and comment!
Trade smart, stay safe
Atilla Yurtseven
itradesize /\ Model x RTH Gap
I’m happy to announce my model and sharing it with you as an indicator.
About the model
The model is based on a range from 18:00 until 1:30. If you are keen you probably know that it's something that based on a bit of Daye's Theory. As Daily Q4 is from 18:00 until 0:00 and I've added a 90's Q1 to it as well that's why it ended up at 1:30.
It's an accumulation range and where we are looking for some opportunities above or below it when the algo is trying to fake the traders as the high and the low of the range are both important zones for liquidity pools. This model works on almost every pair but I've been mostly focusing on indices, especially on ES, NQ, and EUR/USD.
Do not trade before 1:30 AM and do not trade this model after 6:00 AM. So any tradable setup must be valid until 6:00 AM.
*All the mentioned times are based on America/NewYork timezone.
A simple sell setup
∆ If it takes the high of the model, then look for short opportunities.
∆ The best reliable scenario is when a high is taken while retracing back to an HTF PD Array so it will end up in a failure swing, Judas swing, you name it.
∆ When a high is taken you should wait for a market structure shift then it should give a nice displacement where it should retrace.
∆ The imbalance after the shift can be on every timeframe, based on your trade idea.
∆ If there are more imbalances, your decision on which to go with (as if there is a BPR, Breaker, OB, etc.. - can change the view of an FVG).
The same story goes for a buy setup.
∆ The first target is always the EQ of the model's range.
∆ The second target could be liquidity inside the EQ and the other side of the model (optional).
∆ The third target is the other side of the model.
∆ You can always leave a runner there if you eyeing some levels outside the model.
Additional information
∆ You can use silver bullet range as an extra confirmation when you looking for the actual displacement.
∆ An RTH range is also added to the indicator (starts drawing at 9:30 when the futures market opens) as it can be used to trade in the NY session and it is a must-have thing when trading indices.
∆ The colors of every label are switched automatically based on your chart's coloring.
Daye Quarterly Theory by toodegrees> Introduction and Acknowledgements
The Daye Quarterly Theory° tool encompasses the cyclical Time aspect of the markets as studied and developed by Daye (traderdaye on Twitter).
I am not the creator of this Theory, and I do not hold the answers to all the questions you may have; I suggest you to study it from Daye's tweets and material.
I collaborated directly with Daye to bring a comprehensive Time tool to Tradingview.
S/O to @a1tmaniac and @joshuuu for their previous works on this Theory.
> Tool Description
This is purely a graphical aid for traders to be able to quickly determine Daye's Quarterly Cycles, and save Time while on the charts.
The disruptive value of this tool is that it reliably plots forwards in Time, allowing you to strategize and tape read efficiently; as well as calculating all the Cycles, from Micro Sessions, to the Year.
> Quarterly Theory by Daye
The underlying idea is that Time is to be divided in Quarters for correct interpretation of Market Cycles. The specific starting point of a Cycle will depend on the Timeframe at hand.
Daye being one of the most prominent Inner Circle Trader students, these ideas stem from ICT's concepts themselves, and are to be used hand in hand (PD Array Matrix, PO3, Institutional Price Levels, ...).
These Quarters represent:
A - Accumulation (required for a cycle to occur)
M - Manipulation
D - Distribution
X - Reversal/Continuation
The latter are going to always be in this specific sequence; however the cycle can be transposed to have its beginning in X, trivially followed by A, M, and finally D.
This feature is not automatic and at the subjective discretion of the Analyst.
Note: this theory has been developed on Futures, hence its validity and reliability may change depending on the market Time.
This tool does provide a dynamic and auto-adapting aspect to different market types and Times, however they must be seen as experimental.
> Quarterly Cycles
The Quarterly Cycles currently supported are: Yearly, Monthly, Weekly, Daily, 90 Minute, Micro Sessions.
– Yearly Cycle:
Analogously to financial quarters, the year is divided in four sections of three months each
Q1 - January, February, March
Q2 - April, May, June (True Open, April Open)
Q3 - July, August, September
Q4 - October, November, December
Note: this Cycle is the most difficult to optimize as Timeframes become more granular due to the sheer length of its duration. With Time and advancements it will become more accurate. This is the only Cycle for which accuracy is not 100%.
– Monthly Cycle:
Considering that we have four weeks in a month, we start the cycle on the first month’s Monday (regardless of the calendar Day).
Q1 - Week 1, first Monday of the month
Q2 - Week 2, second Monday of the month (True Open, Daily Candle Open Price)
Q3 - Week 3, third Monday of the month
Q4 - Week 4, fourth Monday of the month
– Weekly Cycle:
Daye determined that although the trading week is composed by 5 trading days, we should ignore Friday, and the small portion of Sunday’s price action.
Q1 - Monday
Q2 - Tuesday (True Open, Daily Candle Open Price)
Q3 - Wednesday
Q4 - Thursday
– Daily Cycle:
The Day can be broken down into 6H quarters. These Times roughly define the sessions of the Trading Day, reinforcing the Theory’s validity.
Q1 - 18:00 - 00:00, Asian Session
Q2 - 00:00 - 06:00, London Session (True Open, Midnight New York Time)
Q3 - 06:00 - 12:00, NY Session
Q4 - 12:00 - 18:00, PM Session
Note: these Times are based on Futures Trading in New York Time, these will vary depending on the market type (experimental).
– 90 Minute Cycle:
Merely dividing one of the Daily Cycle’s Quarters we obtain 90 minute quarters. The first one in a Trading Day – 90min Cycles of the Asian Session – follows as an example, in New York Time.
Q1 - 18:00 - 19:30
Q2 - 19:30 - 21:00 (True Open)
Q3 - 21:00 - 22:30
Q4 - 22:30 - 00:00
– Micro Cycle:
Lastly, dividing a 90 Minute Cycle yields 22.5 Minute Quarters, known as Micro Sessions. An example breaking down the 90 Minute Cycle from 18:00 to 19:30 follows.
Q1 - 18:00 - 18:22:30
Q2 - 18:22:30 - 18:45 (True Open)
Q3 - 18:45 - 19:07:30
Q4 - 19:07:30 - 19:30
Note: trivially, these may not be exact unless the Timeframe is in the seconds, to correctly account for the half minute in each quarter – this said the tool is able to plot these anyways, although slight inaccuracy needs to be taken account depending on the Timeframe.
It is important to remember and be aware that the current chart’s Timeframe will heavily impact the plotted Time Cycles. This tool is in its initial form and it will be improved and adapted as traders start using it on a daily basis.
> Tool Settings
Plot Settings:
"Plot Type" will allow you to decide how the Cycles will be displayed. Out of the box the tool will be plotted on a separate pane, at the bottom of the chart; you can decide the orientation of the cycles from longest cycle at the bottom (Bottom Pane), or top (Top Pane). Alternatively you can move the tool to the chart and have the cycles plot on price (Move To -> Existing Pane Above), specifically above price (Top), or below (Bottom). The cycles will auto adjust their position based on the visible price action.
"Historical Cycles" will show previous Historical Cycles, up to where available in terms of script memory.
"Plot Size" will allow you to vary the height of the Cycle’s boxes
"Show Labels" will give you an auto-adapting legend which will help you determine which Cycle is which if you get lost.
The remaining Settings are self explanatory, allowing you to change colors, and choose which Cycles to see.
The source of the code is hidden due to the use of private libraries of mine. Happy to answer any questions in terms of code, where I will not be able to divulge any detail that concerns said libraries. Thank you for understanding!
Major thanks to Daye for his Time and Knowledge, it was a pleasure to collaborate and work together on this tool.
GLGT!
ICT Time Indicator - MinimalisticThis indicator is intended to make backtesting and journaling a lot easier.
This script will automatically plot the sessions you selec.t
You don't have to worry about your timezone because this indicator will automatically handle that.
For best results please don't go any higher than the Hourly.
I aimed to keep this indicator very minimalistic to reduce the 'lipstick' on your chart.
Enabling any of the follow settings will quickly show you on your chart the times you want to be looking at:
Morning Session
Lunch
Afternoon Session
Marco 0950-1010
Marco 1050-1110
Marco 1450-1510
Silver Bullet London Open
Silver Bullet AM
Silver Bullet PM
You can also customize the color of any time session to suite your color scheme.
If you have any requests please leave a comment (I'm sure there are more marcos) :)
Personal Trading Hours (timezone Europe/Amsterdam)This Personal Trading Hours indicator is intended to specify the times you can trade and make them visible on the chart. Multiple sessions can be specified per specific day of the week and you can give each day its own color if you want.
This can be used perfectly if you are backtesting your strategy manually. You can indicate exactly when you have time to look at the charts and therefore only perform your backtest at those times. Making mistakes that you open en close trades during your sleeptime or worktime in your backtest are gone.
But this indicator is also suitable for live trading.
Filter out the times when you don't want to trade, for example during lunchtime, during opening hours of the exchanges or when you know that big news events will take place during your tradingweek. All the timesessions you do want to trade you can make visible on you chart.
The timezone that is used for this indicator is the timezone: Europe/Amsterdam and therefor only usable for traders in this timezone.
You can use this indicator for timeframes lower then the Daily timeframe with the normal settings. If you want to use this indicator on the Daily timeframe, all the settings in the upper part of the settingsmenu must be unchecked and only the part at the bottom of the settingsmenu can then be used.
This indicator doesn't work on timeframes higher than the Daily timeframe.
If you do not use all the tradingsessions on each day, you have to make sure that all the boxes are filled. So unused session boxes must have the same timeperiodes as the used boxes, otherwise the whole day will be highlighted on the chart.
Realtime Divergence for Any Indicator - By John BartleThe main purpose of this script is to show historical and real-time divergences for any oscillating indicator. The secondary purpose is to give the user a lot of precise control over identifying divergences and determining what they are. This is an improved version of my other script which is similarly called "Realtime Divergence for Any Indicator"
There are four types of divergences that are offered:
Bull divergence
Hidden bull divergence
Bear divergence
Hidden Bear divergence
There are three types of potential(real-time) divergences which include:
1) Without right side bars for rightside pivots. Plus without waiting for the rightside pivot bar to complete
2) Without right side bars for rightside pivots. Plus with waiting for the rightside pivot bar to complete
3) With right side bars for rightside pivots. Plus without waiting for the rightside pivot right-most bar to complete
A definite divergence occurs when all specified bars are accounted for and fully formed.
Potential divergences use dashed lines and definite(historical) divergences use solid lines.
In addition to several other categories of settings to filter out unwanted divergences or manipulate the search process, this script also offers Alerts. Remember that alerts must not only be set within this scripts settings but also your "Alerts" panel on your right. It's strange but BOTH must be set for alerts to work...
Other interesting Things To Know:
1)I actually don't trade and so I have no need of a paid account. Unpaid accounts don't have the playback feature so I haven't really tested this script out very well. Sorry. Just let me know if something seems off and IF I have time I'll try to fix it.
2)Keep in mind that Pinescript limits the number of lines that can be shown at one time. This means that if your settings allow for a large number of divergence lines they will be removed from the leftward side of your chart but appear in the rightward side.
3) The time and the values for the price or oscillator are not the same things as each other nor are they physical things with physical space. This means that slopes of lines using the time as X and value as Y can not have definite angles. Consequently, under the setting "DIVERGENCES: SLOPE ANGLE EXCLUSION" YOU have to decide what slope equals what angle by using the setting called "Normalization Factor".
4) Remember that some individual settings apply to both the oscillator and price chart. This means that even if the setting's conditions are fulfilled in one they may not be fulfilled in the other.
5) Under the category "DIVERGENCES: INTERSECTION ALLOWANCE", if you set the "Measurement Type" to Relative Percentage then FYI any single given length will equate to an increasingly smaller percentage the further away from zero it is. Because of this, I think "Reletive Percentage" is probably only useful for price charts or oscillators with big values. Maybe >200 is OK ?
Errors:
1) If you get the error mentioning that the script must complete execution within X amount of time, this is because this is a big script and sometimes takes longer than your service plan's allotted time limit. You can just disable some of the settings to reduce the scripts amount of work and time. The biggest time savers will be to disable some lines and labels
2) If you get an error saying the script accessed a negative index(e.g. ) then try temporarily increasing the "Add More Array Elements" setting to 100-200. Sometimes it fixes the problem.
3) You may sometimes temporarily get an error that reads: "Pine cannot determine the referencing length of a series. Try using max_bars_back in the study or strategy function".
If this happens there are several things that you can do:
3A) Create a copy of my script. Then edit the section of code that looks like this ")//, max_bars_back = INSERT_YOUR_QUANTITY_HERE)" and transform it to look like this new code ", max_bars_back = INSERT_YOUR_QUANTITY_HERE)" then repeatedly try replacing "INSERT_YOUR_QUANTITY_HERE" with an increasingly larger number greater than 244 but less than 5000.
This method will increase your system resources and could cause other problems. Try changing the code back after a few hours and see if all is well again. It is a Pinescript limitation issue and happens when certain functions or variables don't get used at least once within the first 244 bars.
3B) Adjust your settings to hopefully find a divergence within the first 244 bars. If one is found then the problematic variables or functions should get used and the Pinescript 244 bar limitation should be temporarily resolved.
3C) Wait for X number of new bars to occur. If a divergence is eventually found within the first 244 bars that should solve the issue.
Tips:
1) If the amount that a setting changes value is undesirable for each time you click it then you can change that amount in the code. To do that, you'll need your own copy of my script. To make your own copy just click on "create a working copy" in the brown colored strip area above the code. Then within approximately the first 108 lines find the title of the setting you want to change. Then look to it's right to find the parameter called "step =". Change what the step equals to whatever you want. FYI, you can hover your mouse over the blue colored code and a popup will tell you what parameters(i.e. settings) that function(e.g. "input.int()") has available.
Papercuts Time Sampled Higher Timeframe EMA Without SecurityThis EMA uses a higher time sampled method instead of using security to gather higher timeframe data.
Its quite fast and worked well with the timeframes prescribed, up to 8hrs, after 8hrs, the formatting gets more complicated and i probably wouldn't use it anyway.
You can use this as a guide to avoid security and even f_security with this method.
NOTE: This includes the non repainting f_security call so that i woudl be able to check my results against what it does, thats not nessecary to keep at all.
There is some minor differences in data, but its so minor it doesnt bother me, though it would be interesting to know what the difference actually is. If anyone figures that out, leave a comment and let me know!
This is meant to be an example for others to build and learn and play with.. so enjoy!
Daylight Saving Time [Open Source]Are you tired of manually tracking daylight saving time transitions on your trading charts? Say goodbye to confusion and hello to a smarter approach with our innovative indicator.
Designed to streamline your trading experience, this indicator automatically detects and highlights the exact moments when daylight saving time shifts occur, ensuring you stay on top of time changes without the hassle.
Key Features:
Customizable Display: Choose between two distinct display modes - "Flag" or "Emoticons" - to suit your visual preference and enhance your chart's clarity.
Global Compatibility: Tailor the indicator to your region by selecting your country for daylight saving time calculations. Choose from popular options like the European Union (EU) or the United States and Canada (US_CA).
Seamless Transitions: No more guessing when daylight saving time starts or ends. Our indicator will automatically mark the transition points, helping you to avoid costly trading mistakes due to incorrect time calculations.
Background Coloring: Elevate your chart's visibility by optionally coloring the background during the transition periods. With a simple toggle, you can make sure you never miss an important shift.
Experience a new level of trading precision and accuracy with the "Daylight Saving Time Indicator". Take control of your trading strategy by focusing on the market instead of time changes. Try it now and witness the difference it makes in your trading routine!
About Daylight Saving Time:
Daylight Saving Time (DST) is a practice observed by many countries to make better use of daylight during the longer days of summer. The EU and California (US_CA) have specific rules for DST transitions:
EU DST Rules:
DST begins on the last Sunday of March.
DST ends on the last Sunday of October.
US_CA DST Rules:
DST begins on the second Sunday of March.
DST ends on the first Sunday of November.
About the code
The code is briefly commented. Please feel free to use or further customize it ... And, of course, I would be happy to be named and/or linked. If you're satisfied, maybe buy me a coffee ;-)
I'm curious to see how this indicator will develop with more ideas - Please keep me updated by commenting below or by sending me a message.
Time Cycles IndicatorThis script is used to analyze the seasonality of any asset (commodities, stocks, indices).
To use the script select a timeframe D or W and select the months you are interested in the script settings. You will see all the candles that are part of those months highlighted in the chart.
You can use this script to understand if assets have a cyclical behavior in certain months of the year.
Day of Month - Volatility Report█ OVERVIEW
The indicator analyses the volatility and reports the statistics by the days of the month.
█ CONCEPTS
The markets move every day. But how does a market move during a month?
Here are some ideas to explore:
Does the volatility kick in with the start of a new month?
Do the markets slow down at the end of the month?
Which period of the month is the most volatile?
How does this relate to your best and worst trades?
When should you take a break?
DAX
EURGBP
Binance Coin
█ FEATURES
Comparison modes
Compare how each day moves relative to the monthly volatility or the average daily volatility.
Configurable outputs
Output the report statistics as mean or median.
Range filter
Select the period to report from.
█ HOW TO USE
Plot the indicator and visit the 1D, 24H, or 1440 minutes timeframe.
█ NOTES
Gaps
The indicator includes the volatility from gaps.
Trading session
The indicator analyses each day from the daily chart, defined by the exchange trading session (see Symbol Info).
Extended trading session
The indicator can include the extended hours when activated on the chart, using the 24H or 1440 minutes timeframe.
Overnight session
The indicator supports overnight sessions (open and close on different calendar days). For example, EURUSD will report Monday’s volatility from Sunday open at 17:00 to Monday close at 17:00.
This is a PREMIUM indicator. In complement, you might find useful my free Time of Day - Volatility Report .
Time Profile [QuantVue]The Time Profile indicator provides traders with a comprehensive view of volume and time-based price activity. The indicator combines two essential components into one indicator: the volume profile and the time profile.
The volume profile represents the distribution of trading volume at different price levels over a specified period and is displayed as a circle on the chart.
It provides a visual representation of where the majority of trading volume occurred and often highlights significant support and resistance levels. The volume profile is calculated as the closing price of the highest volume intraday bar, based on the user selected lower time frame.
On the other hand, the time profile focuses on analyzing the time spent at certain price levels. The indicator divides the current bars range into 10 blocks and counts the number of user selected lower time frame closes within each time block.
The block with the most lower time frame closes in it is deemed the time point of control. Traders can use this information to identify time blocks where price movement was most significant.
The time profile is drawn on the Y axis of the current bar to allow for an easy visualization of where price spent most of its time. Historical time profiles are also noted on previous bars with a dash marking the level.
The Time Profile indicator offers several customization options. Traders can adjust the timeframe for the lower time frame data, decide whether to display the time profile, and customize colors for visual clarity.
Additionally, traders can choose to highlight instances where the Volume POC and Time POC align, indicating a strong concentration of volume and price activity.
Don't hesitate to reach out with any questions or concerns.
We hope you enjoy!
Cheers.
Script TimerWanna know how long your script takes to execute.
Just put this function at the end of your code and it will tell you how much time it takes to run your algo from start to end.
Data will show in the data window panel measured in seconds
Draw Line For High Low Custom Range Interactive█ OVERVIEW
This indicator is an educational indicator to make pine coders easier to how to use interactive inputs with User-Defined Type (UDT) especially when dealing input.time.
█ NOTES
This indicator is not perfect but it is a good starting point or template to start develop custom range interactive indicator.
█ INSPIRATIONS
ABC 123 Harmonic Ratio Custom Range Interactive
XABCD Harmonic Pattern Custom Range Interactive
PriceTimeInteractive
█ CREDITS
CAGR Custom Range
Pine scripts are now interactive
█ FEATURES
1. High Low points are determined based on points selected.
2. Line will be drawn after points are correctly arranged.
3. Label show error once wrong point is selected, move the point as instructed in example.
█ EXAMPLES / USAGE
ICT Time Windows by Scuba SteveJust an easy to use time based indicator that allows you to track ICT London Open Killzone, New York Open killzone, AM session Silver Bullet time window & PM Session Silver Bullet Time Window, and last but not least the Last Hour of trading which often has nice moves.
time between close 1.0 - find active charts
Title: Time Between Close (TBC) Indicator
Description:
The Time Between Close (TBC) Indicator is designed to help traders visualize the time between candle closes in seconds. The timeframe option default is set to 1 second. This is in order to check how often a candle is produced on the one second timeframe regardless of what timeframe your chart is on. These values of time between candles are then averaged using the moving average length.
So if you have a moving average length of 60, it will look at the past 60 candles and count the time between each candle, and give you an average in seconds. The shortest time between candles that it can go is 1 second.
The increment option should only be adjusted to a higher timeframes when you need to see further back because the existing plot is very short.
Note, this indicator is not suitable for BTC as BTC generally always has several ticks per second and the indicator will always show up as 1 second.
1. Timeframe options: Set the timeframe for measuring the time between candle closes (default: 1 second).
2. Moving average length: Choose between simple moving average (SMA) or exponential moving average (EMA) for calculating the average time between candle closes.
3. Time increment option: Adjust the time increment for the color gradient (default: 5 seconds). Increase this value for higher timeframes to see further back when the existing plot is too short.
4. Customizable label sizes, label distances, and horizontal line transparencies.
To get an idea of the gradient,
These are the colors from fastest moving to slowest:
Blue
Light Blue
Cyan
Light Green
Green
Yellow-Green
Yellow
Orange
Red-Orange
Red
Tape (Time and Sales)OVERVIEW
This indicator is a synthesized "Tape" (aka. Time and Sales) from real time market data. It's specifically designed to be performant, expediting trading insights and decisions.
The table contains color-coded price action, volume size, and a timestamp data for each chart update. Because chart updates are independent of exchange orders, 1 chart update may combine more than 1 exchange and/or order. Even so, you're able to see very small and fast order flow changes, made possible by measuring real time volume differentials, and correlating them with price action.
Real time volume differentials are required for this indicator to be most useful. This is not ideal for historical analysis or TradingViews Replay feature.
INPUTS
You can can configure:
Table Position and Text Size
The Timestamp (visibility, format, timezone)
The number of lines to print
Volume Parameters (minimum size, large sizes, decimal precision)
Highlighting and Enlarging large sized prints
All the colors
DEV NOTES
This script illustrates:
The complimentary nature of loops and arrays
A method for iterative table management
MF Time Travel (Delay or Forward Charts) by MigueFinanceThis indicator allows you to "Time Travel" aka. delay or advance (or forward) the on-screen chart/indicator as well as well as to do the same with other additional charts that can be configured in the settings.
This might be very useful when comparing with other (or the same) indicator in time, if you consider probably an incoming move based on another time performance.
About the Settings:
The moved in time charts can also be expanded or contracted, as well as they can be moved vertically (offset).
To Delay put positive values on the weeks settings, to Advance put Negative values on the same.
The Expansion or Contraction Factor is simply a multiplier of amplitude so you can multiply by number like 0.5, 2, etc
The Vertical Offset simply moves up and down the indicator.
The Labels will also tell you the number of weeks and years that were changed so as to have a reference, as well as the indicator being used.
MathEasingFunctionsLibrary "MathEasingFunctions"
A collection of Easing functions.
Easing functions are commonly used for smoothing actions over time, They are used to smooth out the sharp edges
of a function and make it more pleasing to the eye, like for example the motion of a object through time.
Easing functions can be used in a variety of applications, including animation, video games, and scientific
simulations. They are a powerful tool for creating realistic visual effects and can help to make your work more
engaging and enjoyable to the eye.
---
Includes functions for ease in, ease out, and, ease in and out, for the following constructs:
sine, quadratic, cubic, quartic, quintic, exponential, elastic, circle, back, bounce.
---
Reference:
easings.net
learn.microsoft.com
ease_in_sine_unbound(v)
Sinusoidal function, the position over elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_sine(v)
Sinusoidal function, the position over elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_sine_unbound(v)
Sinusoidal function, the position over elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_sine(v)
Sinusoidal function, the position over elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_sine_unbound(v)
Sinusoidal function, the position over elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_sine(v)
Sinusoidal function, the position over elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quad_unbound(v)
Quadratic function, the position equals the square of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quad(v)
Quadratic function, the position equals the square of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quad_unbound(v)
Quadratic function, the position equals the square of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quad(v)
Quadratic function, the position equals the square of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quad_unbound(v)
Quadratic function, the position equals the square of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quad(v)
Quadratic function, the position equals the square of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_cubic_unbound(v)
Cubic function, the position equals the cube of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_cubic(v)
Cubic function, the position equals the cube of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_cubic_unbound(v)
Cubic function, the position equals the cube of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_cubic(v)
Cubic function, the position equals the cube of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_cubic_unbound(v)
Cubic function, the position equals the cube of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_cubic(v)
Cubic function, the position equals the cube of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quart_unbound(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quart(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quart_unbound(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quart(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quart_unbound(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quart(v)
Quartic function, the position equals the formula `f(t)=t^4` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quint_unbound(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_quint(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quint_unbound(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_quint(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quint_unbound(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_quint(v)
Quintic function, the position equals the formula `f(t)=t^5` of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_expo_unbound(v)
Exponential function, the position equals the exponential formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_expo(v)
Exponential function, the position equals the exponential formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_expo_unbound(v)
Exponential function, the position equals the exponential formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_expo(v)
Exponential function, the position equals the exponential formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_expo_unbound(v)
Exponential function, the position equals the exponential formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_expo(v)
Exponential function, the position equals the exponential formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_circ_unbound(v)
Circular function, the position equals the circular formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_circ(v)
Circular function, the position equals the circular formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_circ_unbound(v)
Circular function, the position equals the circular formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_circ(v)
Circular function, the position equals the circular formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_circ_unbound(v)
Circular function, the position equals the circular formula of elapsed time (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_circ(v)
Circular function, the position equals the circular formula of elapsed time (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_back_unbound(v)
Back function, the position retreats a bit before resuming (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_back(v)
Back function, the position retreats a bit before resuming (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_back_unbound(v)
Back function, the position retreats a bit before resuming (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_back(v)
Back function, the position retreats a bit before resuming (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_back_unbound(v)
Back function, the position retreats a bit before resuming (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_back(v)
Back function, the position retreats a bit before resuming (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_elastic_unbound(v)
Elastic function, the position oscilates back and forth like a spring (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_elastic(v)
Elastic function, the position oscilates back and forth like a spring (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_elastic_unbound(v)
Elastic function, the position oscilates back and forth like a spring (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_elastic(v)
Elastic function, the position oscilates back and forth like a spring (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_elastic_unbound(v)
Elastic function, the position oscilates back and forth like a spring (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_elastic(v)
Elastic function, the position oscilates back and forth like a spring (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_bounce_unbound(v)
Bounce function, the position bonces from the boundery (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_bounce(v)
Bounce function, the position bonces from the boundery (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_bounce_unbound(v)
Bounce function, the position bonces from the boundery (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_out_bounce(v)
Bounce function, the position bonces from the boundery (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_bounce_unbound(v)
Bounce function, the position bonces from the boundery (unbound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
ease_in_out_bounce(v)
Bounce function, the position bonces from the boundery (bound).
Parameters:
v (float) : `float` Elapsed time.
Returns: Ratio of change.
select(v, formula, effect, bounded)
Parameters:
v (float)
formula (string)
effect (string)
bounded (bool)