[ChasinAlts] SuppRe-me ZonesHello fellow tradeurs, I couldn't find one similar on TV so wanted to make it.. Took me a little while to figure some things out as I am in new coding territory with this script. I had a hard time finding ways to make only a partial zone/box disappear if price only crossed part of it. Nonetheless, I figured it out so I hope you enjoy the outcome. Now, allow me to take a second to first explain the utility that is this script...or at least expose my reasoning when I decided to go ahead with this little project and take the precious time necessary to learn parts of pine that I did not previously know how to deal with. Ultimately, I built this for the 1s-15s TF(except for the "Consecutive Bars/Large Bars" Boxes...Those were meant to use on both these second TFs and Higher TFs.... ). The reasoning behind all of this was to give me a more definitive answer to all of my questions regarding the speed at which it would take price to revisit areas that it very abruptly went to/left on a VERY short TF (like the 1sec charts)...or even if it EVER would). To determine this I wanted to draw lines starting at the end of large wicks, draw boxes spanning the entire span of large wicks, and lastly to draw boxes spanning the entire span of very large bodies. For this last one, not only did I want to draw a box on a single candle that possessed a large body but also if there were consecutive red candles in a row, their bodies could be summed up and if this summation exceeds the minimum body % threshold then it too counts just like a single large candled body would if it was larger than the threshold. All in all I really enjoyed this script and most importantly the data that it produces. What I found after coding the script was that (again on the 1 sec- 15 sec charts) was that price very quickly (relatively speaking I suppose) came back over these box/zoned areas and that the lines drawn from the tip of the large wicks would at some point in the near future act as very good support and resistance for price to either bounce off of or breakout from.
Now, with each of these objects you can choose to delete them when price crosses the object or have them continuously drawn on the chart...your call...but it gets awful messy sometimes if you let them continue printing.
Peace and love people...peace and love,
-ChasinAlts
Cerca negli script per "the script"
Portfolio Laboratory [Kioseff Trading]Hello!
This script looks to experiment with historical portfolio performance. However, a hypothetical cash balance is not used; weighted percentage increases and decreases are used.
You can select up to 10 assets to include in the portfolio. Long and short positions are possible.
Show in the image are the portfolio's weight, the total return of the portfolio and the total return of the asset on the chart over the selected timeframe.
Shown in the image above are the constituents of the portfolio, which can include any asset, the weighted percentage gain/loss of the constituents in addition to 10 major indices and their respective total percentage gain/loss over the timeframe.
Shown in the image above are the dividend yield % of the portfolio and relevant portfolio metrics - ex-post calculations are applied and are predicated on simple returns.
Shown in the image above is a portfolio of all short positions; portfolio calculations adjusted to the modifications.
Also shown is a change in the index the portfolio is calculated against. I have been asked a few times to include NIFTY 50 in my scripts - I made sure this was achieved, lol!
Show in the image is a performance line of performance of percentage increases/decreases for the index calculated against, the asset on the chart, and the portfolio.
All lines start simultaneously on the selected start date at the close price of the session for the asset on your chart.
However, the right-hand scale, whether displaying price or percent, cannot be used to assess the performance of each line - they are useful for visualization only and can extend below zero on a low-priced asset. Calculations will not execute correctly when selecting a start date prior to any asset in the portfolio's first trading session; calculations do not begin on the first bar of the asset on your chart.
I decided to code the script this way so statistics remain fixed when moving from asset to asset!
To compensate for this limitation, I included a label plot and background color change at the first session in which all assets in the portfolio had at least one bar of price data. You can adjust the calculation start date to the date portrayed on the label to test al possible price data!
The statistics table, and the performance lines, can be hidden in the user input section.
I plan on putting a bit more work into this script. I have some ideas on what to include; however, any input is greatly appreciated! If there's something you would like me to include please let me know.
@scheplick mentioned me in a script he recently coded:
My inspiration came from his script! I thank him for that!
benchLibrary "bench"
A simple banchmark library to analyse script performance and bottlenecks.
Very useful if you are developing an overly complex application in Pine Script, or trying to optimise a library / function / algorithm...
Supports artificial looping benchmarks (of fast functions)
Supports integrated linear benchmarks (of expensive scripts)
One important thing to note is that the Pine Script compiler will completely ignore any calculations that do not eventually produce chart output. Therefore, if you are performing an artificial benchmark you will need to use the bench.reference(value) function to ensure the calculations are executed.
Please check the examples towards the bottom of the script.
Quick Reference
(Be warned this uses non-standard space characters to get the line indentation to work in the description!)
```
// Looping benchmark style
benchmark = bench.new(samples = 500, loops = 5000)
data = array.new_int()
if bench.start(benchmark)
while bench.loop(benchmark)
array.unshift(data, timenow)
bench.mark(benchmark)
while bench.loop(benchmark)
array.unshift(data, timenow)
bench.mark(benchmark)
while bench.loop(benchmark)
array.unshift(data, timenow)
bench.stop(benchmark)
bench.reference(array.get(data, 0))
bench.report(benchmark, '1x array.unshift()')
// Linear benchmark style
benchmark = bench.new()
data = array.new_int()
bench.start(benchmark)
for i = 0 to 1000
array.unshift(data, timenow)
bench.mark(benchmark)
for i = 0 to 1000
array.unshift(data, timenow)
bench.stop(benchmark)
bench.reference(array.get(data, 0))
bench.report(benchmark,'1000x array.unshift()')
```
Detailed Interface
new(samples, loops) Initialises a new benchmark array
Parameters:
samples : int, the number of bars in which to collect samples
loops : int, the number of loops to execute within each sample
Returns: int , the benchmark array
active(benchmark) Determing if the benchmarks state is active
Parameters:
benchmark : int , the benchmark array
Returns: bool, true only if the state is active
start(benchmark) Start recording a benchmark from this point
Parameters:
benchmark : int , the benchmark array
Returns: bool, true only if the benchmark is unfinished
loop(benchmark) Returns true until call count exceeds bench.new(loop) variable
Parameters:
benchmark : int , the benchmark array
Returns: bool, true while looping
reference(number, string) Add a compiler reference to the chart so the calculations don't get optimised away
Parameters:
number : float, a numeric value to reference
string : string, a string value to reference
mark(benchmark, number, string) Marks the end of one recorded interval and the start of the next
Parameters:
benchmark : int , the benchmark array
number : float, a numeric value to reference
string : string, a string value to reference
stop(benchmark, number, string) Stop the benchmark, ending the final interval
Parameters:
benchmark : int , the benchmark array
number : float, a numeric value to reference
string : string, a string value to reference
report(Prints, benchmark, title, text_size, position)
Parameters:
Prints : the benchmarks results to the screen
benchmark : int , the benchmark array
title : string, add a custom title to the report
text_size : string, the text size of the log console (global size vars)
position : string, the position of the log console (global position vars)
unittest_bench(case) Cache module unit tests, for inclusion in parent script test suite. Usage: bench.unittest_bench(__ASSERTS)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
unittest(verbose) Run the bench module unit tests as a stand alone. Usage: bench.unittest()
Parameters:
verbose : bool, optionally disable the full report to only display failures
Relative Volume (rVol), Better Volume, Average Volume ComparisonThis is the best version of relative volume you can find a claim which is based on the logical soundness of its calculation.
I have amalgamated various volume analysis into one synergistic script. I wasn't going to opensource it. But, as one of the lucky few winners of TradingClue 2. I felt obligated to give something back to the community.
Relative volume traditionally compares current volume to prior bar volume or SMA of volume. This has drawbacks. The question of relative volume is "Volume relative to what?" In the traditional scripts you'll find it displays current volume relative to the last number of bars. But, is that the best way to compare volume. On a daily chart, possibly. On a daily chart this can work because your units of time are uniform. Each day represents a full cycle of volume. However, on an intraday chart? Not so much.
Example: If you have a lookback of 9 on an hourly chart in a 24 hour market, you are then comparing the average volume from Midnight - 9 AM to the 9 AM volume. What do you think you'll find? Well at 9:30 when NY exchanges open the volume should be consistently and predictably higher. But though rVol is high relative to the lookback period, its actually just average or maybe even below average compared to prior NY session opens. But prior NY session opens are not included in the lookback and thus ignored.
This problem is the most visibly noticed when looking at the volume on a CME futures chart or some equivalent. In a 24 hour market, such as crypto, there are website's like skew can show you the volume disparity from time of day. This led me to believe that the traditional rVol calculation was insufficient. A better way to calculate it would be to compare the 9:30 am 30m bar today to the last week's worth of 9:30 am 30m bars. Then I could know whether today's volume at 9:30 am today is high or low based on prior 9:30 am bars. This seems to be a superior method on an intraday basis and is clearly superior in markets with irregular volume
This led me to other problems, such as markets that are open for less than 24 hours and holiday hours on traditional market exchanges. How can I know that the script is accurately looking at the correct prior relevant bars. I've created and/or adapted solutions to all those problems and these calculations and code snippets thus have value that extend beyond this rVol script for other pinecoders.
The Script
This rVol script looks back at the bars of the same time period on the viewing timeframe. So, as we said, the last 9:30 bars. Averages those, then divides the: . The result is a percentage expressed as x.xxx. Thus 1.0 mean current volume is equal to average volume. Below 1.0 is below the average and above 1.0 is above the average.
This information can be viewed on its own. But there are more levels of analysis added to it.
Above the bars are signals that correlate to the "Better Volume Indicator" developed by, I believe, the folks at emini-watch and originally adapted to pinescript by LazyBear. The interpretation of these symbols are in a table on the right of the indicator.
The volume bars can also be colored. The color is defined by the relationship between the average of the rVol outputs and the current volume. The "Average rVol" so to speak. The color coding is also defined by a legend in the table on the right.
These can be researched by you to determine how to best interpret these signals. I originally got these ideas and solid details on how to use the analysis from a fellow out there, PlanTheTrade.
I hope you find some value in the code and in the information that the indicator presents. And I'd like to thank the TradingView team for producing the most innovative and user friendly charting package on the market.
(p.s. Better Volume is provides better information with a longer lookback value than the default imo)
Credit for certain code sections and ideas is due to:
LazyBear - Better Volume
Grimmolf (From GitHub) - Logic for Loop rVol
R4Rocket - The idea for my rVol 1 calculation
And I can't find the guy who had the idea for the multiples of volume to the average. Tag him if you know him
Final Note: I'd like to leave a couple of clues of my own for fellow seekers of trading infamy.
Indicators: indicators are like anemometers (The things that measure windspeed). People talk bad about them all the time because they're "lagging." Well, you can't tell what the windspeed is unless the wind is blowing. anemometers are lagging indicators of wind. But forecasters still rely on them. You would use an indicator, which I would define as a instrument of measure, to tell you the windspeed of the markets. Conversely, when people talk positively about indicators they say "This one is great and this one is terrible." This is like a farmer saying "Shovels are great, but rakes are horrible." There are certain tools that have certain functions and every good tool has a purpose for a specific job. So the next time someone shares their opinion with you about indicators. Just smile and nod, realizing one day they'll learn... hopefully before they go broke.
How to forecast: Prediction is accomplished by analyzing the behavior of instruments of measure to aggregate data (using your anemometer). The data is then assembled into a predictive model based on the measurements observed (a trading system). That predictive model is tested against reality for it's veracity (backtesting). If the model is predictive, you can optimize your decision making by creating parameter sets around the prediction that are synergistic with the implications of the prediction (risk, stop loss, target, scaling, pyramiding etc).
<3
Multiband - Market TimerThis strategy is made for market timing in the bull markets. Hence, more ideal to use it with index ETFs or high conviction large caps.
This makes use of different custom indicators:
Multi Band Channel - Overbought/Oversold Oscillator
VixFix Linear regression
Regular Linear Regression.
Multi Band Oscillator is used for identifying overbought/oversold state of the instrument. This is used in conjunction with VIXFix Linear Regression to to find market bottoms for entry conditions.
Few parameters are explained below:
CheckBandDistance - If checked checks for narrow bands and ignore signals when crossover happens in narrow bands.
ConsiderOversoldDaysCounter/ConsiderOverboughtDaysCounter - If checked, considers oversold and overbought crossovers only if instrument stays in oversold/overbought state for that many bars.
UseLinearRegressionToOpen/UseLinearRegressionToClose - If checked, combines linear regression along with overbought/oversold condition for entry and exits.
UseVixFixToOpen - Uses VixFixLinear regression to identify market bottom and this condition will be combined with oversold/overbought state. When using VixFixLinearRegression signal, we can allow generating entry signals during non crossover bars. Vix Fix Entry Range sets the max bar for multi band state to be for generating signal. For example, if Vix Fix Entry Range is set to oversold, signal is generated based on VixFix if price is below oversold.
ExitStrategy - This can be trailing/reversal or combined. If set to reversal, exit will happen on state moving out of oversold region. If set to Trailing, stop will be based on trailing stops. Indicator shows what is the present stop value. If set to combined, exit will happen on stages. 30% of the remaining position gets closed upon reversals. State may go into oversold and return back many times before having full exit. If this happens, each time, 30% of the position will be closed. Full position closure happens on hitting training stop.
Candles are colored based on linear regression.
Green -> positive and moving up
Lime -> Positive moving down
Orange -> Negative moving up
Red -> Negative moving down
Purple -> Possible VixFix peak - aka Market bottom
Another snapshot of the script along with Linear regression and VIXFix-LinReg indicators:
Related scripts are found here:
I have not put additional indicators to identify trend. But, can be combined with higher timeframe trend filters to generate better signals. Making this as invite only script as I find it very lucrative to time index ETFs. Please PM me if you want to try this script.
Tic Tac Toe (For Fun)Hello All,
I think all of you know the game "Tic Tac Toe" :) This time I tried to make this game, and also I tried to share an example to develop a game script in Pine. Just for fun ;)
Tic Tac Toe Game Rules:
1. The game is played on a grid that's 3 squares by 3 squares.
2. You are "O", the computer is X. Players take turns putting their marks in empty squares.
3. if a player makes 3 of her marks in a row (up, down, across, or diagonally) the he is the winner.
4. When all 9 squares are full, the game is over (draw)
So, how to play the game?
- The player/you can play "O", meaning your mark is "O", so Xs for the script. please note that: The script plays with ONLY X
- There is naming for all squears, A1, A2, A3, B1, B2, B3, C1, C2, C3. you will see all these squares in the options.
- also You can set who will play first => "Human" or "Computer"
if it's your turn to move then you will see "You Move" text, as seen in the following screenshot. for example you want to put "O" to "A1" then using options set A1 as O
How the script play?
it uses MinMax algorithm with constant depth = 4. And yes we don't have option to make recursive functions in Pine at the moment so I made four functions for each depth. this idea can be used in your scripts if you need such an algorithm. if you have no idea about MinMax algorithm you can find a lot of articles on the net :)
The script plays its move automatically if its turn to play. you will just need to set the option that computer played (A1, C3, etc)
if it's computer turn to play then it calculates and show the move it wants to play like "My Move : B3 <= X" then using options you need to set B3 as X
Also it checks if the board is valid or not:
I have tested it but if you see any bug let me know please
Enjoy!
RSI with Self-Adjusting Linear Regression Bands (Expo)RSI with Self-Adjusting Linear Regression Bands (Expo) makes use of RSI and Linear Regression to create an RSI that follows the current trend. The indicator has an upper and lower self-adjusting Linear Regression Band that act as RSI boundaries.
HOW TO USE
The indicator can be used in multiple ways, for instance, to find overbought and oversold areas. Or to identify trends as well as pullbacks in trends.
INDICATOR IN ACTION
This indicator is a modification of RafaelZioni's work "Linear Regression Trend bands"
Credit to: RafaelZioni
I hope you find this indicator useful , and please comment or contact me if you like the script or have any questions/suggestions for future improvements. Thanks!
I will continually work on this indicator, so please share your experience and feedback as it will enable me to make even better improvements. Thanks to everyone that has already contacted me regarding my scripts. Your feedback is valuable for future developments!
-----------------
Disclaimer
Copyright by Zeiierman.
The information contained in my scripts/indicators/ideas does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My scripts/indicators/ideas are only for educational purposes!
Tradingedge Academy REVERSAL CATCHER (RECAT)Core idea behind designing this tool is to CATCH REVERSALS in the live market.
Reversal can be a TREND REVERSAL or a TEMPORARY PULL BACK. This tool works perfectly in both situations.
HOW TO USE:
AFTER YOU APPLY THE SCRIPT.
1. WAIT FOR THE FORMATION BLUE/YELLOW COLOURED BARS AT DAY HIGH/LOW.
Accuracy is highest when the REVERSALS are caught at DAY HIGH/LOW. I would suggest you to work only on DAY HIGH/LOW candles.
Do not jump into the trade. Wait for the candle to close.
2. BLUE represents the start of a BEARISH TREND or simply "SELL SIGNAL".
YELLOW represents the beginning of a BULLISH TREND or simply "BUY SIGNAL".
3. If the BLUE candle is formed at DAY HIGH.
SELL below it's LOW with DAY HIGH as Stoploss. (Keep some BUFFER).
If the YELLOW candle is formed at DAY LOW.
BUY above it's HIGH with DAY LOW as Stoploss. (Keep some BUFFER).
4. TARGET
Risk : Reward = 1:1
Trail Stoploss for 1:2, 1:2.5, 1:3
NOTE:
RECAT can be used in any timeframe. However, lower timeframes tend to have more noise as compared to 15mins and above.
RECAT can be used with all the SCRIPTS. However, high volume scripts give better results.
THERE IS ABSOLUTELY NO REPAINTING AFTER THE CANDLE IS CLOSED.
CONTACT ME FOR ACCESS.
DETAILS IN SIGNATURE.
On Balance Volume Flow (Expo)On Balance Volume Flow (Expo) identifies buying and selling pressure at extreme points. On Balance Volume Flow (Expo) is primarily used to identify potential turning points and areas of congestion.
Vwap can be enabled as an input source instead of using Volume.
The indicator can be used standalone or as a part of your current trading strategy.
HOW TO USE
1. Use the indicator to identify potential turning points and areas of congestion.
2. Use the indicator to get a feel of how price movements and volume are related.
INDICATOR IN ACTION
1-hour chart
Works on any market
I hope you find this indicator useful , and please comment or contact me if you like the script or have any questions/suggestions for future improvements. Thanks!
I will continually work on this indicator, so please share your experience and feedback as it will enable me to make even better improvements. Thanks to everyone that has already contacted me regarding my scripts. Your feedback is valuable for future developments!
ACCESS THE INDICATOR
• Contact me on TradingView or use the links below
-----------------
Disclaimer
Copyright by Zeiierman.
The information contained in my scripts/indicators/ideas does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My scripts/indicators/ideas are only for educational purposes!
Auto Support/Resistance Levels (Expo)Auto Support/Resistance Levels (Expo) automatically identifies and displays key support and resistance levels.
The user can enable short- term, medium-term, and long- term Auto SR Levels.
The indicator can be used standalone or as a part of your current trading strategy.
Real-time
No repainting
Works on any market
HOW TO USE
1. Use the indicator to identify key Support and Resistance Levels
INDICATOR IN ACTION
Daily chart
I hope you find this indicator useful , and please comment or contact me if you like the script or have any questions/suggestions for future improvements. Thanks!
I will continually work on this indicator, so please share your experience and feedback as it will enable me to make even better improvements. Thanks to everyone that has already contacted me regarding my scripts. Your feedback is valuable for future developments!
ACCESS THE INDICATOR
• Contact me on TradingView or use the links below
-----------------
Disclaimer
Copyright by Zeiierman.
The information contained in my scripts/indicators/ideas does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My scripts/indicators/ideas are only for educational purposes!
Fearzone & Greedzone Levels - Contrarian & Breakout (Expo)"Be fearful when others are greedy, and greedy when others are fearful" - Warren Buffett. Fearzone & Greedzone Levels - Contrarian & Breakout (Expo) is a contrarian and breakout indicator that gives us an indication when fear and greed begins to take over in the market. Traders should be prepared for increased volatility and good trading opportunities.
This indicator can both be used to identify potential reversal points and be used to identify breakouts from previous Fear and Greed Levels.
The Fearzone and Greedzone can be visualized with candlesticks or with circles depending on what you prefer.
Alert conditions are added.
HOW TO USE
1. Use the indicator to identify when investors are fearful and greedy.
2. Use the indicator to identify potential reversal points.
3. Use the indicator to identify potential breakouts.
INDICATOR IN ACTION
4 hour chart
4 hour chart
I hope you find this indicator useful , and please comment or contact me if you like the script or have any questions/suggestions for future improvements. Thanks!
I will continually work on this indicator, so please share your experience and feedback as it will enable me to make even better improvements. Thanks to everyone that has already contacted me regarding my scripts. Your feedback is valuable for future developments!
-----------------
Disclaimer
Copyright by Zeiierman.
The information contained in my scripts/indicators/ideas does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My scripts/indicators/ideas are only for educational purposes!
GreedZone indicator - Contrarian Indicator"Be fearful when others are greedy, and greedy when others are fearful" - Warren Buffett. Greedzone is a contrarian indicator that gives us an indication when greed begins to take over in the market. Traders should be prepared for increased volatility and good trading opportunities.
The Greedzone is visualized with green candlesticks above the price.
HOW TO USE
1. Use the indicator to identify when investors are greedy.
2. Use the indicator to identify potential reversal points.
INDICATOR IN ACTION
1 hour chart
5 min chart
I hope you find this indicator useful , and please comment or contact me if you like the script or have any questions/suggestions for future improvements. Thanks!
I will continually work on this indicator, so please share your experience and feedback as it will enable me to make even better improvements. Thanks to everyone that has already contacted me regarding my scripts. Your feedback is valuable for future developments!
-----------------
Disclaimer
Copyright by Zeiierman.
The information contained in my scripts/indicators/ideas does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My scripts/indicators/ideas are only for educational purposes!
ProfitBee59 v5.0ProfitBee59 v5.0 for TradingView (pb5 ai) helps you do tedious works on your technical charts. It does CC59 counting and prints out positive or negative number on each price bar. When the counting arrives at -9 or +9, it creates respectable support and resistance ( SNR ) levels on the chart. It draws a pair of fast/slow average lines with pink/red colors for corresponding downtrend and yellow/green for uptrend. A yellow cross sign shows a crossing point between these fast/slow average line. It also draws a mega average line in gray to give a mega trend picture. Pb5 ai provides time/price analyseses. Up/Dn arrows are printed out at high probability buy/sell regions. In addition, other auxiliary tools such as Max/Min finder used to find the candlesticks with local max/min prices or Gap finder used to locate discontinuity between candlesticks.
For Forex trading, other intraday parameters are also available including the day opening level, high/low of yesterday and intraday brown background marking time interval for key trading hours in Asian-London-New York markets.
Smart phone/tablet and PC notifications of events occurring in the chart can be sent to you by server-side alerts so that you don't have to stay in front of the screen all the time.
=================================================================
The script ProfitBee59 v5.0 for TradingView (pb5 ai) is locked and protected. Contact the author for your access.
=================================================================
How to install the script:
------------------------------
*Go to the bottom of this page and click on "Add to Favorite Scripts".
*Remove older version of the script by clicking on the "X" button behind the indicator line at the top left corner of the chart window.
*Open a new chart at and click on the "Indicators" tab.
*Click on the "Favorites" tab and choose "ProfitBee59 v5.0".
*Right click anywhere on the graph, choose "Color Theme", the select "Dark".
*Right click anywhere on the graph, choose "Settings".
*In "Symbol" tab, set "Precision" to 1/100 for stock price or 1/100000 for Forex and set "Time Zone" to your local time.
*In "Scales" tab, check "Indicator Last Value Label".
*In "Events" tab, check "Show Dividends on Chart", "Show Splits on Chart" and "Show Earnings on Chart".
*At the bottom of settings window, click on "Template", "Save As...", then name this theme of graph setting for future call up such as "My chart setting".
*Click OK.
ProfitBee59 v4.0ProfitBee59 v4.0 for TradingView helps you do tedious works on your technical charts. It does CC59 counting and prints out positive or negative number on each price bar. When the counting arrives at -9 or +9, it creates respectable support and resistance ( SNR ) levels on the chart. It also analyses the candlesticks for high probability buy/sell regions and draws green/red color on an average line. In addition, other auxiliary tool such as Max/Min finder can be used to find the candlesticks with local max/min prices.
For Forex trading, other intraday parameters are also available including the day opening level, high/low of yesterday, high/low of the day before yesterday and intraday brown background marking time interval for key trading hours in Asian-London-New York markets.
Smart phone/tablet and PC notifications of events occurring in the chart can be sent to you by server-side alerts so that you don't have to stay in front of the screen all the time.
=================================================================
The script ProfitBee59 v4.0 for TradingView is locked and protected. Contact the author for your access.
=================================================================
How to install the script:
------------------------------
*Go to the bottom of this page and click on "Add to Favorite Scripts".
*Remove older version of the script by clicking on the "X" button behind the indicator line at the top left corner of the chart window.
*Open a new chart at and click on the "Indicators" tab.
*Click on the "Favorites" tab and choose "ProfitBee59 v4.0".
*Right click anywhere on the graph, choose "Color Theme", the select "Dark".
*Right click anywhere on the graph, choose "Settings".
*In "Symbol" tab, set "Precision" to 1/100 for stock price or 1/100000 for Forex and set "Time Zone" to your local time.
*In "Status line" tab, uncheck "Indicator Arguments".
*In "Scales" tab, check "Indicator Last Value Label".
*In "Events" tab, check "Show Dividends on Chart", "Show Splits on Chart" and "Show Earnings on Chart".
*At the bottom of settings window, click on "Template", "Save As...", then name this theme of graph setting for future call up such as "My chart setting".
*Click OK.
[Autoview][BackTest]Dual MA Ribbons R0.12 by JustUncleLThis is an implementation of a strategy based on two MA Ribbons, a Fast Ribbon and a Slow Ribbon. This strategy can be used on Normal candlestick charts or Renko charts (if you are familiar with them).
The strategy revolves around a pair of scripts: One to generate alerts signals for Autoview and one for Backtesting, to tune your settings.
The risk management options are performed within the script to set SL(StopLoss), TP(TargetProfit), TSL(Trailing Stop Loss) and TTP (Trailing Target Profit). The only requirement for Autoview is to Buy and Sell as directed by this script, no complicated syntax is required.
The Dual Ribbons are designed to capture the inferred behavior of traders and investors by using two groups of averages:
> Traders MA Ribbon: Lower MA and Upper MA (Aqua=Uptrend, Blue=downtrend, Gray=Neutral), with center line Avg MA (Orange dotted line).
> Investors MAs Ribbon: Lower MA and Upper MA (Green=Uptrend, Red=downtrend, Gray=Neutral), with center line Avg MA (Fuchsia dotted line).
> Anchor time frame (0=current). This is the time frame that the MAs are calculated for. This way 60m MA Ribbons can be viewed on a 15 min chart to establish tighter Stop Loss conditions.
Trade Management options:
Option to specify Backtest start and end time.
Trailing Stop, with Activate Level (as % of price) and Trailing Stop (as % of price)
Target Profit Level, (as % of price)
Stop Loss Level, (as % of price)
BUY green triangles and SELL dark red triangles
Trade Order closed colour coded Label:
>> Dark Red = Stop Loss Hit
>> Green = Target Profit Hit
>> Purple = Trailing Stop Hit
>> Orange = Opposite (Sell) Order Close
Trade Management Indication:
Trailing Stop Activate Price = Blue dotted line
Trailing Stop Price = Fuschia solid stepping line
Target Profit Price = Lime '+' line
Stop Loss Price = Red '+' line
Dealing With Renko Charts:
If you choose to use Renko charts, make sure you have enabled the "IS This a RENKO Chart" option, (I have not so far found a way to Detect the type of chart that is running).
If you want non-repainting Renko charts you MUST use TRADITIONAL Renko Bricks. This type of brick is fixed and will not change size.
Also use Renko bricks with WICKS DISABLED. Wicks are not part of Renko, the whole idea of using Renko bricks is not to see the wick noise.
Set you chart Time Frame to the lowest possible one that will build enough bricks to give a reasonable history, start at 1min TimeFrame. Renko bricks are not dependent on time, they represent a movement in price. But the chart candlestick data is used to create the bricks, so lower TF gives more accurate Brick creation.
You want to size your bricks to 2/1000 of the pair price, so for ETHBTC the price is say 0.0805 then your Renko Brick size should be about 2*0.0805/1000 = 0.0002 (round up).
You may find there is some slippage in value, but this can be accounted for in the Backtest by setting your commission a bit higher, for Binance for example I use 0.2%
Special thanks goes to @CryptoRox for providing the initial Risk management Framework in his "How to automate this strategy for free using a chrome extension" example.
VWAP forex Yesterday Hi/Low update fix This script is an updte fix of an earlier script that stopped functioning when TradingView updated Pine script. This script plots Forex (24 hour session) VWAP, yesterday's high, low, open and close (HLOC),
the day before's HLOC -
Also plots higher timeframe 20 emas
1 minute 5, 15, 60 period 20 ema
5 minute 15, 60 period 20 ema
15 minute 60, 120 , 240 period 20 ema
60 minute 120, 240 period 20 ema
120 minute 240, D period 20 ema
240 minute D period 20 ema
Also signals inside bars (high is less than or equal to the previous bar's high and the low is greater than or equal to the previous low) the : true inside bars have a maroon triangle below the bar as well as a ">" above the bar.
If subsequest bars are inside the last bar before the last true inside bar they also are marked with an ">"
This is probably a slight variation from the way Leaf_West plots the inside bars.
It appears that he marks all bars that are inside the original bar until one a bar has a high or low
outside the original bar. But I would need to see an example on his charts.
The Time Session Glitch and the Fix FX_IDC, COINBASE and BITSTAMP:
The script will correctly default to 1700 hrs to 1700hrs EDT/EST session for FXCM.
Strangely some securities appear to erroneously start their session at 1200 hrs ie. My guess is that they are somehow tied to GMT+0 instead of New York time (GMT+5). See this for yourself by selecting EURUSD using the FXCM exchange (FX:EURUSD) and then EURUSD from the IDC exchange (FX_IDC:EURUSD). The FX-IDC session opening range starts 5 hours before it actually should at 1700 hrs EDT/EST. To correct for this I have implemented an automatic fix (default) and a user selected "5 hour time shift adjust. ment needed on some securities".
There is also a 4 hour time shift button which might be necessary when New York reverts from Eastern Standard Time to Eastern Daylight Time (1 hour difference) in March (and then back again in November). In the default auto adjust mode you will need to select the 1 hour time shift. That is if this glitch still exists at that time.
I have looked at other scripts, other than my own and where the script is available, that need to use information about the opening bar and all have the same time shift issue
COINBASE and BITSTAMP open at 0000 hours GMT. Since I use lines instead of circles or crosses I had to make a small adjustment to plot the lines correctly.
If it needs work let me know.
Jayy
alpha Renko intraday wave timeI was asked to share my experimental Renko intraday wave time. So here it is warts and all. The same for the rest - except the Weis cumulative volume.
Renko wave time is in minutes. This script is strictly intraday and has not been played with extensively.
You must use traditional Renko and set the script wave size to the same size as the Renko brick size.
If you click on the sideways wishbone or "V" in the middle upper part of the chart you will get all of the scripts in this particular sandbox. After clicking the sideways wish bone click on "make it mine". You will then have the whole sandbox. The only published script is the Weis cumulative wave.
The "Boys MAs" is supposed to be a script for daily charts and from within some kind of consolidation. In any case I am intrigued by some signals. You have a variety of sandbox options in the format section of the boys MAs.
These codes are pretty rough with lots of abandoned lines of script.
Long/Short Ratio Aggregated (Lite)Description — Long/Short Ratio Aggregated (Lite)
This indicator provides a cross-exchange, open-interest-weighted aggregation of the Long/Short Ratio (LSR) for the cryptocurrency asset currently on your chart. It is designed to unify fragmented derivatives positioning data from multiple major exchanges into a single normalized signal that more accurately reflects real market sentiment and positioning bias across platforms.
Concept and Originality
Traditional Long/Short Ratio indicators are exchange-specific. They show how many traders are long versus short, but only within the scope of one venue (e.g., Binance or Bybit). This makes them incomplete and often misleading for directional bias analysis, since different exchanges host different participant profiles, levels of leverage, and quote-currency exposures.
This script addresses that limitation by:
Aggregating LSR data across multiple exchanges (Binance and Bybit).
Weighting each ratio by Open Interest (OI) — ensuring exchanges with higher open positions contribute proportionally more to the overall sentiment.
Normalizing all contract types (USDT, USDC, and USD-margined) into a consistent base-currency format.
This step corrects for structural differences between coin- and stablecoin-margined instruments, producing a true like-for-like comparison.
The result is a globalized Long/Short Ratio, normalized by exposure and liquidity, suitable for multi-venue orderflow estimation and directional bias assessment.
Note for moderators: I know there are already other scripts out there, but they may not support Open Interest Weighting or the same number of pairs. They also might not support proper normalization like in my script.
Calculation Methodology
For each supported exchange and contract type:
The script retrieves the latest Long/Short Ratio (LSR) and Open Interest (OI) values.
OI is used as the weighting factor, creating a proportional representation of positioning volume.
Values denominated in USD are normalized into base currency using close-price adjustment.
The final value is computed as:
Weighted LSR = (Σ (LSRᵢ × OIᵢ)) / (Σ OIᵢ)
This ensures that if, for example, Binance has twice the open interest of Bybit, its LSR contributes twice as much to the total weighted sentiment.
Interpretation
Value > 1.0 → Market participants are net-long (bullish bias).
Value < 1.0 → Market participants are net-short (bearish bias).
Strength of deviation from 1.0 indicates positioning imbalance magnitude.
Because the ratio is OI-weighted, large players or heavily margined exchanges influence the output proportionally more than smaller, low-volume venues — making this metric a better reflection of true market positioning rather than isolated retail sentiment.
Usage and Applications
Use this indicator as a component in:
Orderflow and sentiment confirmation, alongside price action and volume.
Funding rate correlation studies.
Intraday reversals or exhaustion zones, when combined with volatility or OI delta metrics.
Overlaying or combining this indicator with open interest change, cumulative volume delta, or funding rate divergence allows traders to build a high-resolution understanding of positioning shifts and crowd behavior.
Notes
The “Lite” version is optimized for execution and accessibility, focusing on accuracy while staying within Pine Script’s computational limits.
Exchange data availability may vary by symbol; unsupported pairs automatically return na and are automatically not included in the weighted calculation.
In summary:
This indicator transforms fragmented, exchange-specific Long/Short Ratio into a unified, OI-weighted global sentiment measure — a foundational tool for traders seeking to quantify derivative-side orderflow bias with cross-venue accuracy.
MTF EMA Smooth Indicator By : KaizenotradingPH (Open Source)This indicator script can display three different timeframe MTF EMA indicators simultaneously. The special thing of this script is that it has smoothing feature that can smooth the MTF EMA but only in minutes and hours timeframe (script limitation). You can enable the anti repainting as well which reference the previous bar. These features are useful for customize strategies scripts to avoid repainting. Additionally, this script have customizable length for the three MTF EMA indicators.
This is the open source version of the script.
Lunar calendar day Crypto Trading StrategyLunar calendar day Crypto Trading Strategy
This strategy explores the potential impact of the lunar calendar on cryptocurrency price cycles.
It implements a simple but unconventional rule:
Buy on the 5th day of each lunar month
Sell on the 26th day of the lunar month
No trades between January 1 (solar) and Lunar New Year’s Day (holiday buffer period)
Research background
Several academic studies have investigated the influence of lunar cycles on financial markets. Their findings suggest:
Returns tend to be higher around the full moon compared to the new moon.
Periods between the full moon and the waning phase often show stronger average returns than the waxing phase.
This strategy combines those observations into a practical implementation by testing fixed entry (lunar day 5) and exit (lunar day 26) points, while excluding the transition period from solar New Year to Lunar New Year, effectively capturing mid-month lunar effects.
How it works
The script includes a custom lunar date calculation function, reconstructing lunar months and days for each year (2020–2026).
On lunar day 5, the strategy opens a long position with 100% of equity.
On lunar day 26, the strategy closes the position.
No trades are executed between Jan 1 and Lunar New Year’s Day.
All trades include:
Commission: 0.1%
Slippage: 3 ticks
Position sizing uses the entire equity (100%) for simplicity, but this is not recommended for live trading.
Why this is original
Unlike mashups of built-in indicators, this script:
Implements a full lunar calendar system inside Pine Script.
Translates academic findings on lunar effects into an applied backtest.
Adds a realistic trading filter (holiday gap) based on cultural/seasonal calendar rules.
Provides researchers and traders with a framework to explore non-traditional, time-based signals.
Notes
This is an experimental, research-oriented strategy, not financial advice.
Results are highly dependent on the chosen period (2020–2026).
Using 100% equity per trade is for simplification only and is not a viable money management practice.
The purpose is to investigate whether cyclical patterns linked to lunar time can provide any statistical edge in ETHUSDT.
IU Trailing Stop Loss MethodsThe 'IU Trailing Stop Loss Methods' it's a risk management tool which allows users to apply 12 trailing stop-loss (SL) methods for risk management of their trades and gives live alerts when the trailing Stop loss has hit. Below is a detailed explanation of each input and the working of the Script.
Main Inputs:
- bar_time: Specifies the date from which the trade begins and entry price will be the open of the first candle.
- entry_type: Choose between 'Long' or 'Short' positions.
- trailing_method: Select the trailing stop-loss method. Options include ATR, Parabolic SAR, Supertrend, Point/Pip based, Percentage, EMA, Highest/Lowest, Standard Deviation, and multiple target-based methods.
- exit_after_close: If checked, exits the trade only after the candle closes.
Optional Inputs:
ATR Settings:
- atr_Length: Length for the ATR calculation.
- atr_factor: ATR multiplier for SL calculation.
Parabolic SAR Settings:
- start, increment, maximum: Parameters for the Parabolic SAR indicator.
Supertrend Settings:
- supertrend_Length, supertrend_factor: Length and factor for the Supertrend indicator.
Point/Pip Based:
- point_base: Set trailing SL in points/pips.
Percentage Based:
- percentage_base: Set SL as a percentage of entry price.
EMA Settings:
- ema_Length: Length for EMA calculation.
Standard Deviation Settings:
- std_Length, std_factor: Length and factor for standard deviation calculation.
Highest/Lowest Settings:
- highest_lowest_Length: Length for the highest/lowest SL calculation.
Target-Based Inputs:
- ATR, Point, Percentage, and Standard Deviation based target SL settings with customizable lengths and multipliers.
Entry Logic:
- Trades initiate based on the entry_type selected and the specified bar_time.
- If Long is selected, a long trade is initiated when the conditions match, and vice versa for Short.
Trailing Stop-Loss (SL) Methods Explained:
The strategy dynamically adjusts stop-loss based on the chosen method. Each method has its calculation logic:
- ATR: Stop-loss calculated using ATR multiplied by a user-defined factor.
- Parabolic SAR: Uses the Parabolic SAR indicator for trailing stop-loss.
- Supertrend: Utilizes the Supertrend indicator as the stop-loss line.
- Point/Pip Based: Fixed point-based stop-loss.
- Percentage Based: SL set as a percentage of entry price.
- EMA: SL based on the Exponential Moving Average.
- Highest/Lowest: Uses the highest high or lowest low over a specified period.
- Standard Deviation: SL calculated using standard deviation.
Exit Conditions:
- If exit_after_close is enabled, the position will only close after the candle confirms the stop-loss hit.
- If exit_after_close is disabled, the strategy will close the trade immediately when the SL is breached.
Visualization:
The script plots the chosen trailing stop-loss method on the chart for easy visualization.
Target-Based Trailing SL Logic:
- When a position is opened, the strategy calculates the initial stop-loss and progressively adjusts it as the price moves favorably.
- Each SL adjustment is stored in an array for accurate tracking and visualization.
Alerts and Labels:
- When the Entry or trailing stop loss is hit this scripts draws a label and give alert to the user that trailing stop has been hit for the trade.
Note - on the historical data The Script will show nothing if the entry and the exit has happened on the same candle, because we don't know what was hit first SL or TP (basically how the candle was formed on the lower timeframe).
Summary:
This script offers flexible trailing stop-loss options for traders who want dynamic risk management in their strategies. By offering multiple methods like ATR, SAR, Supertrend, and EMA, it caters to various trading styles and risk preferences.
Systematic Investment Tracker by Ceyhun Gonul### English Description
**Systematic Investment Tracker with Enhanced Features**
This script, titled **Systematic Investment Tracker with Enhanced Features**, is a TradingView tool designed to support systematic investments across different market conditions. It provides traders with two customizable investment strategies — **Continuous Buying** and **Declining Buying** — and includes advanced dynamic investment adjustment features for each.
#### Detailed Explanation of Script Features and Originality
1. **Two Investment Strategies**:
- **Continuous Buying**: This strategy performs purchases consistently at each interval, as set by the user, regardless of market price changes. It follows the principle of dollar-cost averaging, allowing users to build an investment position over time.
- **Declining Buying**: Unlike Continuous Buying, this strategy triggers purchases only when the asset's price has declined from the previous interval's closing price. This approach helps users capitalize on lower price points, potentially improving average costs during downward trends.
2. **Dynamic Investment Adjustment**:
- For both strategies, the script includes a **Dynamic Investment Adjustment** feature. If enabled, this feature increases the purchasing amount by 50% if the current price has fallen by a specific user-defined percentage relative to the previous price. This allows users to accumulate a larger position when the asset is declining, which may benefit long-term cost-averaging strategies.
3. **Customizable Time Frames**:
- Users can specify a **start and end date** for investment, allowing them to restrict or backtest strategies within a specific timeframe. This feature is valuable for evaluating strategy performance over specific market cycles or historical periods.
4. **Graphical Indicators and Labels**:
- The script provides graphical labels on the chart that display purchase points. These indicators help users visualize their investment entries based on the strategy selected.
- A summary **performance label** is also displayed, providing real-time updates on the total amount spent, accumulated quantity, average cost, portfolio value, and profit percentage for each strategy.
5. **Language Support**:
- The script includes English and Turkish language options. Users can toggle between these languages, allowing the summary label text and descriptions to be displayed in their preferred language.
6. **Performance Comparison Table**:
- An optional **Performance Comparison Table** is available, offering a side-by-side analysis of net profit, total investment, and profit percentage for both strategies. This comparison table helps users assess which strategy has yielded better returns, providing clarity on each approach's effectiveness under the chosen parameters.
#### How the Script Works and Its Uniqueness
This closed-source script brings together two established investment strategies in a single, dynamic tool. By integrating continuous and declining purchase strategies with advanced settings for dynamic investment adjustment, the script offers a powerful, flexible tool for both passive and active investors. The design of this script provides unique benefits:
- Enables automated, systematic investment tracking, allowing users to build positions gradually.
- Empowers users to leverage declines through dynamic adjustments to optimize average cost over time.
- Presents an easy-to-read performance label and table, enabling an efficient and transparent performance comparison for informed decision-making.
---
### Türkçe Açıklama
**Gelişmiş Özellikli Sistematik Yatırım Takipçisi**
**Gelişmiş Özellikli Sistematik Yatırım Takipçisi** adlı bu TradingView scripti, çeşitli piyasa koşullarında sistematik yatırım stratejilerini desteklemek üzere tasarlanmış bir araçtır. Script, kullanıcıya iki özelleştirilebilir yatırım stratejisi — **Sürekli Alım** ve **Düşen Alım** — ve her strateji için gelişmiş dinamik yatırım ayarlama seçenekleri sunar.
#### Script Özelliklerinin Detaylı Açıklaması ve Özgünlük
1. **İki Yatırım Stratejisi**:
- **Sürekli Alım**: Bu strateji, fiyat değişimlerine bakılmaksızın kullanıcının belirlediği her aralıkta sabit bir miktar yatırım yapar. Bu yaklaşım, uzun vadede pozisyonu kademeli olarak oluşturmak isteyenler için idealdir.
- **Düşen Alım**: Sürekli Alım’ın aksine, bu strateji yalnızca fiyat bir önceki aralığın kapanış fiyatına göre düştüğünde alım yapar. Bu yöntem, yatırımcıların daha düşük fiyatlardan alım yaparak ortalama maliyeti potansiyel olarak iyileştirmelerine yardımcı olur.
2. **Dinamik Yatırım Ayarlaması**:
- Her iki strateji için de **Dinamik Yatırım Ayarlaması** özelliği bulunmaktadır. Bu özellik aktif edildiğinde, mevcut fiyatın bir önceki fiyata göre kullanıcı tarafından belirlenen bir yüzde oranında düşmesi durumunda alım miktarını %50 artırır. Bu durum, uzun vadede maliyet ortalaması stratejilerine katkıda bulunur.
3. **Özelleştirilebilir Tarih Aralığı**:
- Kullanıcılar, yatırımı belirli bir tarih aralığında sınırlandırmak veya test etmek için bir **başlangıç ve bitiş tarihi** belirleyebilir. Bu özellik, strateji performansını geçmiş piyasa döngüleri veya belirli dönemlerde değerlendirmek için kullanışlıdır.
4. **Grafiksel İşaretleyiciler ve Etiketler**:
- Script, grafik üzerinde alım noktalarını gösteren işaretleyiciler sağlar. Bu görsel göstergeler, kullanıcıların seçilen stratejiye göre yatırım girişlerini görselleştirmesine yardımcı olur.
- Ayrıca, her strateji için harcanan toplam tutar, biriken miktar, ortalama maliyet, portföy değeri ve kâr yüzdesi gibi bilgileri gerçek zamanlı olarak gösteren bir **performans etiketi** sunar.
5. **Dil Desteği**:
- Script, İngilizce ve Türkçe dillerini desteklemektedir. Kullanıcılar, performans etiketi metninin ve açıklamalarının tercih ettikleri dilde görüntülenmesi için dil seçimini yapabilir.
6. **Performans Karşılaştırma Tablosu**:
- İsteğe bağlı olarak kullanılabilen bir **Performans Karşılaştırma Tablosu**, her iki strateji için net kâr, toplam yatırım ve kâr yüzdesi gibi bilgileri yan yana analiz eder. Bu tablo, kullanıcıların hangi stratejinin daha yüksek getiri sağladığını değerlendirmesine yardımcı olur.
#### Scriptin Çalışma Prensibi ve Özgünlüğü
Bu script, iki yatırım stratejisini gelişmiş bir araçta birleştirir. Sürekli ve düşen fiyatlara dayalı alım stratejilerini dinamik yatırım ayarlama özelliğiyle entegre ederek yatırımcılar için güçlü ve esnek bir çözüm sunar. Script’in tasarımı aşağıdaki benzersiz faydaları sağlamaktadır:
- Otomatik, sistematik yatırım takibi yaparak kullanıcıların pozisyonlarını kademeli olarak oluşturmalarına olanak tanır.
- Dinamik ayarlama ile düşüşlerden yararlanarak zaman içinde ortalama maliyeti optimize etme olanağı sağlar.
- Her iki stratejinin performansını basit ve anlaşılır bir şekilde karşılaştıran etiket ve tablo ile verimli bir performans değerlendirmesi sunar.
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!






















