Unbiased Replay CompanionWhen using bar replay mode on TradingView, you have to scroll your way back through clearly visible price history, which always leaves you with unwanted lookahead bias because you unfortunately see all future price movements before they are hidden by the use of the scissors tool.
This indicator provides a simple way to hide all the price action and displays a configurable bar counter instead, allowing you to scroll back to every moment in history without seeing any of the prices' movements. The bar counter hereby serves as a visual aid to guide you back to the very first available bar on the chart.
You can configure the color of the overlay to match your charts' background as well as the style of the bar counter and the distance at which the counter is being displayed.
The indicator crops the vertical price scale by a random amount (only when it is being displayed) to also prevent you from having any unwanted bias based on the current price range.
Whenever you're done scrolling and have used the replay scissors tool to start your session just hide the indicator and bring it up again when you need to scroll. That's all there is to it.
Important: After you apply the indicator to your charts, make sure it is displayed in front of everything else. You can configure this by clicking on the three dots that are displayed on the right side of the indicator name on hover and choose "Visual order > Bring to front" from the popup menu that appears.
Enjoy your unbiased backtesting sessions!
Cerca negli script per "session"
MTF VWAPThis indicator is an enhanced version of the traditional VWAP, providing traders with multiple timeframe views, automatic session anchoring, and customization options for optimized technical analysis.
Key Features:
1. Multiple Timeframes, One View : Visualize Daily, Weekly, Monthly, and Yearly VWAP calculations simultaneously on a single chart.
2. Automatic Anchoring : The indicator intelligently auto-anchors each VWAP calculation to the start of its respective session. This ensures accurate readings and streamlines your analysis by eliminating the need for manual adjustments.
3. Customizability : Tailor the appearance of the indicator with fully customizable colors and the ability to select your preferred price source (e.g., high, low, close, hlc3, hlcc4, or a custom one).
Developing Market Profile / TPO [Honestcowboy]The Developing Market Profile Indicator aims to broaden the horizon of Market Profile / TPO research and trading. While standard Market Profiles aim is to show where PRICE is in relation to TIME on a previous session (usually a day). Developing Market Profile will change bar by bar and display PRICE in relation to TIME for a user specified number of past bars.
What is a market profile?
"Market Profile is an intra-day charting technique (price vertical, time/activity horizontal) devised by J. Peter Steidlmayer. Steidlmayer was seeking a way to determine and to evaluate market value as it developed in the day time frame. The concept was to display price on a vertical axis against time on the horizontal, and the ensuing graphic generally is a bell shape--fatter at the middle prices, with activity trailing off and volume diminished at the extreme higher and lower prices."
For education on market profiles I recommend you search the net and study some profitable traders who use it.
Key Differences
Does not have a value area but distinguishes each column in relation to the biggest column in percentage terms.
Updates bar by bar
Does not take sessions into account
Shows historical values for each bar
While there is an entire education system build around Market Profiles they usually focus on a daily profile and in some cases how the value area develops during the day (there are indicators showing the developing value area).
The idea of trading based on a developing value area is what inspired me to build the Developing Market Profile.
🟦 CALCULATION
Think of this Developing Market Profile the same way as you would think of a moving average. On each bar it will lookback 200 bars (or as user specified) and calculate a Market Profile from those bars (range).
🔹Market Profile gets calculated using these steps:
Get the highest high and lowest low of the price range.
Separate that range into user specified amount of price zones (all spaced evenly)
Loop through the ranges bars and on each bar check in which price zones price was, then add +1 to the zones price was in (we do this using the OccurenceArray)
After it looped through all bars in the range it will draw columns for each price zone (using boxes) and make them as wide as the OccurenceArray dictates in number of bars
🔹Coloring each column:
The script will find the biggest column in the Profile and use that as a reference for all other columns. It will then decide for each column individually how big it is in % compared to the biggest column. It will use that percentage to decide which color to give it, top 20% will be red, top 40% purple, top 60% blue, top 80% green and all the rest yellow. The user is able to adjust these numbers for further customisation.
The historical display of the profiles uses plotchar() and will not only use the color of the column at that time but the % rating will also decide transparancy for further detail when analysing how the profiles developed over time. Each of those historical profiles is calculated using its own 200 past bars. This makes the script very heavy and that is why it includes optimisation settings, more info below.
🟦 USAGE
My general idea of the markets is that they are ever changing and that in studying that changing behaviour a good trader is able to distinguish new behaviour from old behaviour and adapt his approach before losing traders "weak hands" do.
A Market Profile can visually show a trader what kind of market environment we currently are in. In training this visual feedback helps traders remember past market environments and how the market behaved during these times.
Use the history shown using plotchars in colors to get an idea of how the Market Profile looked at each bar of the chart.
This history will help in studying how price moves at different stages of the Market Profile development.
I'm in no way an expert in trading Market Profiles so take this information with a grain of salt. Below an idea of how I would trade using this indicator:
🟦 SETTINGS
🔹MARKET PROFILING
Lookback: The amount of bars the Market Profile will look in the past to calculate where price has been the most in that range
Resolution: This is the amount of columns the Market Profile will have. These columns are calculated using the highest and lowest point price has been for the lookback period
Resolution is limited to a maximum of 32 because of pinescript plotting limits (64). Each plotchar() because of using variable colors takes up 2 of these slots
🔹VISUAL SETTINGS
Profile Distance From Chart: The amount of bars the market profile will be offset from the current bar
Border width (MP): The line thickness of the Market Profile column borders
Character: This is the character the history will use to show past profiles, default is a square.
Color theme: You can pick 5 colors from biggest column of the Profile to smallest column of the profile.
Numbers: these are for % to decide column color. So on default top 20% will be red, top 40% purple... Always use these in descending order
Show Market Profile: This setting will enable/disable the current Market Profile (columns on right side of current bar)
Show Profile History: This setting will enable/disable the Profile History which are the colored characters you see on each bar
🔹OPTIMISATION AND DEBUGGING
Calculate from here: The Market Profile will only start to calculate bar by bar from this point. Setting is needed to optimise loading time and quite frankly without it the script would probably exceed tradingview loading time limits.
Min Size: This setting is there to avoid visual bugs in the script. Scaling the chart there can be issues where the Market Profile extends all the way to 0. To avoid this use a minimum size bigger than the bugged bottom box
Binary Option Strategy Tester with Martingale-Basic V.2In Binary options, strategy testing is a bit different. The strategy result depends upon expiry intervals and payout ratio.
My previous script was a try to resolve this but has some bugs in specific choices. The new version overcame those and added some new features useful for binary option strategy testing.
Assumption:
We are opening position at next candle after signal come
Chart interval is option expiry time.
We are taking the position at opening price
Our call will be profitable if we get a green candle and put will be profitable if we get a red candle
We can open only one trade at a time. So if we are in trade, subsequent signals will be ignored.
All Input Options:
Test Call/Put individually or both. Default BOTH
Select up to 5 Martingale levels. Default 2
Type of Martingale Trade. Default “SAME”
“SAME”: If you are trading CALL and incur a loss, you are taking CALL in subsequent Martingale levels.
“OPSITE”: if you are trading CALL and incur a loss, you are taking PUT in subsequent Martingale levels.
“FOLLOW CANDLE COLOR”: You are following candle color in Martingale levels, i.e if the loss candle is RED, you are taking PUT in subsequent candles.
“OPPOSITE CANDLE COLOR”: You are taking opposite candle color trade, i.e if the loss candle is RED, you are taking CALL in subsequent candle.
Select Specific Trading Session. Please select “USE SPECIFIC SESSION”. Default: TRUE
Put the investment amount per option. Default: 10
Payout ratio. Default: 80%
The strategy is taken from Vdub Binary Options SniperVX v1 (by @vdubus). I have deleted extra parts and kept only the necessary parts.
Result Table
Signal and Win Levels:
Signal and Loss:
Please note that Binary options trading is very risky. You must be aware of the risk and be willing to accept them in order to invest in binary options. Only invest what you can afford to lose. The past performance of any trading system, strategy, or methodology is not necessarily indicative of future results.
Cumulative TICK Trend[Pt]Cumulative TICK Trend indicator is a comprehensive trading tool that uses TICK data to define the market's cumulative trend. Trend is shown on ATR EMA bands, which is overlaid on the price chart. Cumulative TICK shown on the bottom pane is for reference only.
Main features of the Cumulative TICK Trend Indicator include:
Selectable TICK Source: You have the flexibility to choose your preferred TICK source from the following options, depending on the market you trade: USI:TICK, USI:TICKQ, USI:TICKI, and USI:TICKA.
TICK Data Type: Select the type of TICK data to use, options include: Close, Open, hl2, ohlc4, hlc3.
Simple Moving Average (SMA): You can choose to apply an SMA on the calculated Cumulative TICK values with a customizable length.
Average True Range (ATR) Bands: It provides the option to display ATR bands with adjustable settings. This includes the ATR period, EMA period, source for the ATR calculation, and the ATR multiplier for the upper band.
Trend Color Customization: You can customize the color of the bull and bear trends according to your preference.
Smooth Line Option: This setting allows you to smooth the ATR Bands with a customizable length.
How it Works:
This indicator accumulates TICK data during market hours (9:30-16:00) as per the New York time zone and resets at the start of a new session or the end of the regular session. This cumulative TICK value is then used to determine the trend.
The trend is defined as bullish if the SMA of cumulative TICK is equal to or greater than zero and bearish if it's less than zero. Additionally, this indicator plots the ATR bands, which can be used as volatility measures. The Upper ATR Band and Lower ATR Band can be made smoother using the SMA, according to the trader's preference.
The plot includes two parts for each trend: a stronger color (Red for bear, Green for bull) when the trend is ongoing, and a lighter color when the trend seems to be changing.
Remember, this tool is intended to be used as part of a comprehensive trading strategy. Always ensure you are managing risk appropriately and consulting various data sources to make informed trading decisions.
PM RTH AH VWAPs [vnhilton]FOR STOCKS ONLY.
Simply 3 different VWAPs for the pre-market, regular trading session, and the after hours, using session.is_ variables (not sure if they were recently added. Regardless, it would be nice to have a session.isfirstbar_postmarket variable to avoid having to write the code for calculating VWAP instead of simply using a ta.vwap function). Treats all 3 sections of the day as separate sessions with their own characteristics i.e. differing levels of liquidity and market dynamics. I would argue this is better than just using a VWAP calculated from the pre-market open until after hours close, as it would make using the VWAPs as a benchmark more accurate when taking trades at these different periods of the day.
Buy / Sell Fractal Algorithm with SL Line GenerationThis algorithm is designed for usage across indices.
How it works?
The algorithm uses a variation of fractals, momentum, RSI and LRSI to determine a trends direction.
The Relative Strength Index (RSI) is a momentum-based oscillator used to measure the speed (velocity) and change (magnitude) of directional price movements. It provides a visual means to monitor both the current and historical strength and weakness of a particular market. The strength or weakness is based on closing prices over the duration of a specified trading period, creating a reliable metric of price and momentum changes
Momentum in trading refers to the direction and magnitude of price. Momentum plays a key role in assessing trend strength, and it is important to know when a trend is slowing down. Less momentum does not always lead to a reversal, but it does signal that something is changing, and the trend may consolidate or reverse
Fractals are patterns within price changes which are repeated across thousands of bars. Examples of fractals include the golden ratio, PHI and the spirals of the milk way. They are quite literally a universal concept.
Basics of usage:
When a bullish trend is detected; the algorithm will generate a green "SL Line" at a calculated point, which can be interpreted as an invalidation line.
If the price goes below this line, the bullish trend is invalidated. So long as it holds, the bullish trend is true until the next detection change.
When a bearish trend is detected; the algorithm will generate a red "SL Line", at a calculated point, which can be interpreted as an invalidation line.
If the prices goes above this line, the bearish trend is invalidated. So long as it holds, the bearish trend is true until the next detection change.
When a given trend is invalidated, the SL Line turns yellow and you enter a "pause zone", where neither a bearish nor bullish trend is calculated.
This resets itself on the next trend detection.
Additional information:
I have coded my own backtest to this algorithm, along with plotting the profit / loss of each generated trade.
The profit is calculated by the difference between the open bar of the trade after a long ( or short ) and the following trade.
If we are calculating a short, the resulting value is then multiplied by -1 to get a positive integer.
For calculating a loss we take the value of the open bar of the trade that generates a long, and take the difference between this and the SL line, and similarly for short positions. The code assumes the user is placing their SL at the indicated line.
Within the input settings there are a few customisation options:
Alpha & Fractal Energy Length & Source - Should not be changed.
Highly bands crossover? - Has no visible effect whether on or off. It refers to the fractal chart which in this iteration is not visible and rather a backend mechanic.
Apply fractal energy? - Should generally be left turned on. This is a noise reduction. Disabling will result in over-trading.
Apply normalization? - Has no impact, is solely used to make the fractal values more human-readable rather than decimal format.
Offset - refers to the offset value of the SL Line generations. This should be set to a value that gives you enough breathing room, and remember to include any spreads! Default is 0.2, written in %
Trading hours - This simply gives a session input for the trading hours you want to trade within, and then colours the background green for that session. Trading 24/7 is never a wise strategy, stick to whatever is most optimal for you.
Leverage - Whatever leverage you are using. Default is x20. This will affect the profit / loss calculations accordingly.
Start equity - refers to the equity value you want to backtest with. Some assets will generate NA for this in the backtest label explained later.
Label customisation options.
Note that the backtest label is by default hidden, and appears when you hover over the black label at the current bar. When enabled to visible, it will show a large text label that may cover your chart screen more than you wish.
Alerts -
There are dozens of alert functionalities here; first are the timeframe assignments for each alert, set by default to 2hrs.
These timeframes then affect the asset you select in the corresponding setting.
In total there are 8 additional assets you can set alerts for.
Once you have assigned the timeframe and asset for an alert, you can then check the tick box for that individual alert.
Once done, you set the alert as normal through the tradingview alerts window. Remember to set "alert function calls only"
-
Timers:
I have added some functionality for timers to be set, values are in minutes. These work on the exact time of placement. Do not change the extra symbol formula option.
-
Note that this backtest is not intended as a replacement for tradingview backtest, nor is there a guarantee that historical results are to be replicated in the future. Trading is inherently risky.
Range Filter x Hull SuiteRange Filter x Hull Suite
This indicator is a hybrid of two popular indicators, with a twist; namely the Range Filter (Guikroth version) and the Hull Suite (by Insilico) .
Originally developed as a 1 minute trend following strategy and traded during the New York Session for it's typically high volume / likely trending nature, it provides entry signals based on the following logic:
For bullish entry signals:
The first bullish* candle (*defined by the Range Filter bar color logic, blue by default - which is not necessarily technically a bullish candle as defined by the OHLC values) which appears after the consolidation candles (also defined by the Range Filter bar color logic, orange by default), and where the Hull Suite moving average is also bullish.
For bearish entry signals:
The first bearish* candle (*defined by the Range Filter bar color logic, red by default - which is not necessarily technically a bearish candle as defined by the OHLC values) which appears after the consolidation candles (also defined by the Range Filter bar color logic, orange by default), and where the Hull Suite moving average is also bearish.
The indicator aims to filter out signals where possible consolidation is occurring and comes with styling options and alternative filter options such as a triple moving average trend detection method. Signals can also be filtered by a specific trading session. Standard options for the Range Filter and Hull Suite settings are also able to be customised within the settings menu.
Alerts
Various alerts are built-in, including the custom entry signals unique to this strategy.
Note : The above features listed above are accurate at the time of publishing, but may be altered in future.
Many thanks to guikroth & Insilico for sharing their open source indicators, and also to the original developer of the strategy itself for sharing it.
RS: Market ProfileA Market Profile (time price opportunity) implementation with an option to mark a point of control (POC) based on volume.
Config: Hide default candles. Select a session time using exchange timezone. Experiment with tick multiplier value to achieve desired level of detail. Choose the symbols of your choice, e.g. squares or A-Z chars. For multiple sessions you will have to add additional instances of this script with a different time configuration.
Limitations: TradingView has a hard limit for the number of characters (500), if it's reached, label rendering stops. Try increasing tick multiplier value to reduce the number of labels rendered or reduce the window size.
Features:
Use symbols or A-Z chars for TPOs
Mark POC
Calculate Value Area (volume or time based)
Highlight single prints (SP)
Highlight VWAP
Show daily bar
Highlight Open and Close
Highlight current price row (during live market)
Highlight initial balance (IB)
Remaining ATR [vnhilton]ATR levels can be used on a trading day to look for overextensions beyond the average, where you can look to take profits. Remaining ATR is calculated as the current day range subtracted by the previous day ATR. RATR is then plotted away from the high & low lines. All lines (except for the day open) are dynamic, so RATR lines will move according to how much RATR remains.
Note: This indicator only works on intraday timeframes
(FEATURES)
- Works on either RTH or ETH sessions
- Select Day ATR period, & 3 multipliers that will be applied to RATR values away from respective intraday high & low
- Extend current lines to the right
- Show recent lines only
- Change line style, colours within & out the intraday range, & thickness
- Change label offset, size, & colours within & out the intraday range
- Hide RATR lines & labels when within intraday range
- Plot fill between lines (note: RATR plot fills are from their lines to the intraday high & low, so there'll be overlapping)
To show more lines in the past, go to higher intraday timeframes.
Same chart & timeframe as above but on RTH session only.
50 Pips A Day Strategy - Kaspricci50 Pips A Day Strategy
This strategy is designed to work on 1 hour timeframe. It is designed to capture the early market move of major forex pairs like EURUSD or GBPUSD. It takes the high and low of the first candle (7 a.m. GMT, London Stock Exchange opens) and places to pending orders at these prices levels.
High + additional gap in pips = buy stop pending order
Low + additional gap in pips = sell stop pending order
For both orders a stop loss of 15 pips and a take profit of 50 pips is used as a default. As soon as price triggers one pending order, the remaining pending order is cancelled. At the end of the configured session time all open and pending orders are closed / cancelled.
Settings
Trading Time - start and end time of session. It is configured for Monday to Friday only. At the beginning the first candle is used to define stop prices for pending orders.
Source for Buy Stop order - Default: high. Used to calculate buy stop order. You can add additional pips as a gap.
Source for Sell Stop order - Default: low. Used to calculate sell stop order. You can add additional pips as a gap.
Stop Loss in Pips - Default: 15. Used for both pending orders.
Take Profit in Pips - Default: 50. Used for both pending orders.
This strategy is for educational purposes only! It is not meant to be a financial recommendation.
RF+ Replay for Heikin AshiRF+ Replay for Heikin Ashi
RF+ Replay for Heikin Ashi generates fully customisable Heikin Ashi candlesticks presented on a standard chart, enabling traders to utilise the Tradingview Replay feature with Heikin Ashi candlesticks when analysing and backtesting HA style strategies.
The features of this indicator include:
- Fully customisable Heikin Ashi Candles, including custom colour options for candle bodies, borders and wicks.
- Optional real-time, real-price close dots painted onto each candlestick.
- A optional set of 2 x Range Filters designed to indicate short term trend identification upon color change, ideal for low timeframe scalping.
- A optional set of 3 x fully customisable Moving Averages.
- An option to enable Heikin Ashi calculated data for the Range Filters and Moving Averages, so they present as they would on a Heikin Ashi non-standard chart type, without having to use an actual Heikin Ashi chart. Enabled by default.
- An optional sessions indicator, to highlight your prefered trading session for the purpose of backtesting.
- An optional watermark featuring customisable text and well as symbol and timeframe information, as seen in the screenshot of this indicator.
Instructions for use:
1) Because this indicator generates candlesticks and presents them onto your chart, you will need to hide the existing candlesticks so you do not see two sets of candles. You can do this by going into your Tradingview chart settings and making the candle bodies, borders and wicks fully transparent. You can then save this as a layout template. You can access your Chart Settings by clicking on the cog icon, or by right clicking on the chart itself and selecting 'Chart Settings' from the list.
2) Ensure you have the standard chart type selected - you do not need to select a Heikin Ashi type chart.
3) You will now be able to analyise and even backtest your Heikin Ashi style strategies including the use of the Tradingview Replay feature found at the top of the chart.
Heikin Ashi means 'average bar' in Japanese, which speaks to the fact that Heikin Ashi candles are calculated differently to standard Japanese candlesticks. The general idea of Heikin Ashi candles is to 'smooth' the appearance of price movement, by the use of averages within their calculation. It is important to understand that the Open and Close values of a Heikin Ashi candlestick do not reflect real Open and Close prices. You can use the real price dots feature to clearly see the real time and real price Close of each candle.
The formula for calculating a Heikin Ashi candlestick is as follows:
High = Maximum of High, Open, or Close (whichever is highest)
Low = Minimum of Low, Open, or Close (whichever is lowest)
Open = Open (previous bar) + Close (previous bar) /2
Close = (Open + High + Low + Close) / 4
If you found this useful, be sure to leave a like, comment and subscribe to show your support.
Until next time.
Expected SPX Movement by timeframeTHIS INDICATOR ONLY WORKS FOR SP:SPX CHART
This code will help you to measure the expected movement of SP:SPX in a previously selected timeframe based on the current value of VIX index
E.g. if the current value of VIX is 30 we calculate first the expected move of the next 12 months.
If you selected the Daily timeframe it will calculate the expected move of SPX in the next Day by dividing the current VIX Value by the squared root of 252
(The 252 value corresponds to the approximate amount of trading sessions of the year)
If you selected the Weekly timeframe it will calculate the expected move of SPX in the next Week by dividing the current VIX Value by the squared root of 52
(The 52 value corresponds to the amount of weeks of the year)
If you selected the Monthly timeframe it will calculate the expected move of SPX in the next Week by dividing the current VIX Value by the squared root of 12
(The 12 value corresponds to the amount of months of the year)
For lower timeframes you have to calculate the amount of ticks in each trading session of the year in order to get that specific range
Once you have that calculation it it'll provide the range expressed as percentage of the expected move for the following period.
This script will plot that information in a range of 2 lines which represents the expected move of the SPX for the next period
The red flag indicator tells if that period closed between the 2 previous values marked by the range
two_leg_spread_diffThis script helps you discern the relative change of each leg in a two-legged spread over a given period. The main plot is a difference in log return over the number of bars identified by the "lag" parameter. E.g. if "lag" is 10 and leg one has increased 3% over the past ten bars, while leg two has only increased 1%, the plot value is 2%. The main plot is also colored blue when leg one increases while leg two decreases on a given bar, and red if the opposite is true. This feature identifies periods where the correlation between the two legs diminishes. The one and two standard deviation of the main plot is also plotted in faint background lines. Additionally, a table indicates the percentage in which the main plot is within one standard deviation (acc 1) and two standard deviations (acc 2). Note that the standard deviation updates on each bar, so the current standard deviation is not the one used to calculate the accuracy. Rather, if there are N bars, N different standard deviation readings have been used to compute the accuracy statistics.
The inputs are:
- timeframe: the timeframe of the chart
- leg1_sym: the symbol of the first leg
- leg2_sym: the symbol of the second leg
- lag: the number of bars back to reference for computing the log return of each leg
- anchor_to_session_start: for intraday charts only, this overwrites the "lag" input so that the "lag" always sets the point of comparison to the session start. This setting is used to compute the relative change over a single session.
SetSessionTimesLibrary "SetSessionTimes"
Indian exchanage time session library, might be useful to code indicator or strategy necessary to call exchange trading sessions at NSE and MCX.
SetSessionTimes()
lower_tf█ OVERVIEW
This library is a Pine programmer’s tool containing functions to help those who use the request.security_lower_tf() function. Its `ltf()` function helps translate user inputs into a lower timeframe string usable with request.security_lower_tf() . Another function, `ltfStats()`, accumulates statistics on processed chart bars and intrabars.
█ CONCEPTS
Chart bars
Chart bars , as referred to in our publications, are bars that occur at the current chart timeframe, as opposed to those that occur at a timeframe that is higher or lower than that of the chart view.
Intrabars
Intrabars are chart bars at a lower timeframe than the chart's. Each 1H chart bar of a 24x7 market will, for example, usually contain 60 intrabars at the LTF of 1min, provided there was market activity during each minute of the hour. Mining information from intrabars can be useful in that it offers traders visibility on the activity inside a chart bar.
Lower timeframes (LTFs)
A lower timeframe is a timeframe that is smaller than the chart's timeframe. This framework exemplifies how authors can determine which LTF to use by examining the chart's timeframe. The LTF determines how many intrabars are examined for each chart bar; the lower the timeframe, the more intrabars are analyzed.
Intrabar precision
The precision of calculations increases with the number of intrabars analyzed for each chart bar. As there is a 100K limit to the number of intrabars that can be analyzed by a script, a trade-off occurs between the number of intrabars analyzed per chart bar and the chart bars for which calculations are possible.
█ `ltf()`
This function returns a timeframe string usable with request.security_lower_tf() . It calculates the returned timeframe by taking into account a user selection between eight different calculation modes and the chart's timeframe. You send it the user's selection, along with the text corresponding to the eight choices from which the user has chosen, and the function returns a corresponding LTF string.
Because the function processes strings and doesn't require recalculation on each bar, using var to declare the variable to which its result is assigned will execute the function only once on bar zero and speed up your script:
var string ltfString = ltf(ltfModeInput, LTF1, LTF2, LTF3, LTF4, LTF5, LTF6, LTF7, LTF8)
The eight choices users can select from are of two types: the first four allow a selection from the desired amount of chart bars to be covered, the last four are choices of a fixed number of intrabars to be analyzed per chart bar. Our example code shows how to structure your input call and then make the call to `ltf()`. By changing the text associated with the `LTF1` to `LTF8` constants, you can tailor it to your preferences while preserving the functionality of `ltf()` because you will be sending those string constants as the function's arguments so it can determine the user's selection. The association between each `LTFx` constant and its calculation mode is fixed, so the order of the arguments is important when you call `ltf()`.
These are the first four modes and the `LTFx` constants corresponding to each:
Covering most chart bars (least precise) — LTF1
Covers all chart bars. This is accomplished by dividing the current timeframe in seconds by 4 and converting that number back to a string in timeframe.period format using secondsToTfString() . Due to the fact that, on premium subscriptions, the typical historical bar count is between 20-25k bars, dividing the timeframe by 4 ensures the highest level of intrabar precision possible while achieving complete coverage for the entire dataset with the maximum allowed 100K intrabars.
Covering some chart bars (less precise) — LTF2
Covering less chart bars (more precise) — LTF3
These levels offer a stepped LTF in relation to the chart timeframe with slightly more, or slightly less precision. The stepped lower timeframe tiers are calculated from the chart timeframe as follows:
Chart Timeframe Lower Timeframe
Less Precise More Precise
< 1hr 1min 1min
< 1D 15min 1min
< 1W 2hr 30min
> 1W 1D 60min
Covering the least chart bars (most precise) — LTF4
Analyzes the maximum quantity of intrabars possible by using the 1min LTF, which also allows the least amount of chart bars to be covered.
The last four modes allow the user to specify a fixed number of intrabars to analyze per chart bar. Users can choose from 12, 24, 50 or 100 intrabars, respectively corresponding to the `LTF5`, `LTF6`, `LTF7` and `LTF8` constants. The value is a target; the function will do its best to come up with a LTF producing the required number of intrabars. Because of considerations such as the length of a ticker's session, rounding of the LTF to the closest allowable timeframe, or the lowest allowable timeframe of 1min intrabars, it is often impossible for the function to find a LTF producing the exact number of intrabars. Requesting 100 intrabars on a 60min chart, for example, can only produce 60 1min intrabars. Higher chart timeframes, tickers with high liquidity or 24x7 markets will produce optimal results.
█ `ltfStats()`
`ltfStats()` returns statistics that will be useful to programmers using intrabar inspection. By analyzing the arrays returned by request.security_lower_tf() in can determine:
• intrabarsInChartBar : The number of intrabars analyzed for each chart bar.
• chartBarsCovered : The number of chart bars where intrabar information is available.
• avgIntrabars : The average number of intrabars analyzed per chart bar. Events like holidays, market activity, or reduced hours sessions can cause the number of intrabars to vary, bar to bar.
The function must be called on each bar to produce reliable results.
█ DEMONSTRATION CODE
Our example code shows how to provide users with an input from which they can select a LTF calculation mode. If you use this library's functions, feel free to reuse our input setup code, including the tooltip providing users with explanations on how it works for them.
We make a simple call to request.security_lower_tf() to fetch the close values of intrabars, but we do not use those values. We simply send the returned array to `ltfStats()` and then plot in the indicator's pane the number of intrabars examined on each bar and its average. We also display an information box showing the user's selection of the LTF calculation mode, the resulting LTF calculated by `ltf()` and some statistics.
█ NOTES
• As in several of our recent publications, this script uses secondsToTfString() to produce a timeframe string in timeframe.period format from a timeframe expressed in seconds.
• The script utilizes display.data_window and display.status_line to restrict the display of certain plots.
These new built-ins allow coders to fine-tune where a script’s plot values are displayed.
• We implement a new recommended best practice for tables which works faster and reduces memory consumption.
Using this new method, tables are declared only once with var , as usual. Then, on bar zero only, we use table.cell() calls to populate the table.
Finally, table.set_*() functions are used to update attributes of table cells on the last bar of the dataset.
This greatly reduces the resources required to render tables. We encourage all Pine Script™ programmers to do the same.
Look first. Then leap.
█ FUNCTIONS
The library contains the following functions:
ltf(userSelection, choice1, choice2, choice3, choice4, choice5, choice6, choice7, choice8)
Selects a LTF from the chart's TF, depending on the `userSelection` input string.
Parameters:
userSelection : (simple string) User-selected input string which must be one of the `choicex` arguments.
choice1 : (simple string) Input selection corresponding to "Least precise, covering most chart bars".
choice2 : (simple string) Input selection corresponding to "Less precise, covering some chart bars".
choice3 : (simple string) Input selection corresponding to "More precise, covering less chart bars".
choice4 : (simple string) Input selection corresponding to "Most precise, 1min intrabars".
choice5 : (simple string) Input selection corresponding to "~12 intrabars per chart bar".
choice6 : (simple string) Input selection corresponding to "~24 intrabars per chart bar".
choice7 : (simple string) Input selection corresponding to "~50 intrabars per chart bar".
choice8 : (simple string) Input selection corresponding to "~100 intrabars per chart bar".
Returns: (simple string) A timeframe string to be used with `request.security_lower_tf()`.
ltfStats()
Returns statistics about analyzed intrabars and chart bars covered by calls to `request.security_lower_tf()`.
Parameters:
intrabarValues : (float [ ]) The ID of a float array containing values fetched by a call to `request.security_lower_tf()`.
Returns: A 3-element tuple: [ (series int) intrabarsInChartBar, (series int) chartBarsCovered, (series float) avgIntrabars ].
On Balance Volume DeviationThe objective of this indicator is to be a leading indicator that can detect a large price change before it happens. It is based on the On Balance Volume (OBV) indicator, which is a leading indicator based on the premise that a large change in volume often precedes a large price change. This indicator charts the N-Period deviation of the OBV data and displays it as a histogram. This is overlayed on an area chart of the M-Period SMA of the histogram data. This combination helps to visually enhance the pattern that signifies that a jump in price is about to happen.
Useage:
When the histogram bars are above the area plot, then a jump in price is about to happen
As with all leading indicators, there are a lot of false signals. Confirm with price action or another indicator
The further the histogram bars are above the area plot, the larger the predicted jump in price
It seems to work better on shorter intraday timeframes than on the longer timeframes
At the close of a market session, it is a good indicator of how much the price will jump on the opening of the next market session.
CCI + EMA with RSI Cross StrategyThis strategy uses the CCI + 2 RSIs + 2 EMAs to generate trade signals. Trades are only taken during the normal trading session and all open trades are closed 15 min before the close of the current session. A trailing stop loss is used and is customizable.
Not trading advice, use at your own risk.
Trend Day IndentificationVolatility is cyclical, after a large move up or down the market typically "ranges" during the next session. Directional order flow that enters the market during this subsequent session tends not to persist, this non-persistency of transactions leads to a non-trend day which is when I trade intraday reversionary strategies.
This script finds trend days in BTC with the purpose of:
1) counting trend day frequency
2) predicting range contraction for the next 1-2 days so I can run intraday reversion strategies
Trend down is defined as daily bar opening within X% of high and closing within X% of low
Trend up is defined as daily bar opening within X% of low and closing within X% of high
default parameters are:
1) open range extreme = 15% (open is within 15% of high or low)
2) close range extreme = 15% (close is within 15% of high or low)
There is also an atr filter that checks that the trend day has a larger range than the previous 4 bars this is to make sure we find true range expansion vs recent ranges.
Notes:
If a trend day occurs after a prolonged sideways contraction it can signal a breakout - this is less common but is an exception to the rule. These types of occurrences can lead to the persistency of order flow and result in extended directional daily runs.
If a trend day occurs close to 20 days high or low (stopping just short OR pushing slightly through) then wait an additional day before trading intraday reversion strategies.
Find Best Performing MA For Golden CrossHello!
This script calculates the performance of any asset following a golden cross of two moving averages of any length!
The calculated moving averages are: SMA, EMA, HMA, VWMA, WMA, LSMA, and ALMA
The best performing moving average for the selected data series is listed first, followed by a descending order.
The indicator works on any timeframe, any asset, and can even be used on indicators such as RSI, %b, %k, etc.
The Moving Average Length and Source Are Customizable!
The Moving Averages Can Be Plotted on Most Data Series, Such As:
Close, Open, Low, hlc3, RSI, %B, %K, Etc.
The Script Will Recalculate for the Timeframe (1m, 5m, D, etc.)!
The (XX Candles) Indicates the Average Number of
Sessions the Shorter Ma Remains Above the Longer Ma Following an Upside Cross!
The Percentages (XX.XX%) Indicate the Average
Percentage Price Gain/Loss Following a Golden Cross,
Until the Shorter Ma Crosses Back Under the Longer Ma!
In This Example I Am Using a 63 Session Length for the
Shorter Ma for All Listed Ma Types for Closing Prices, and a 196 Candle Length for the Longer Ma!
BABA 24/7 - Alibaba price chart all exchanges combinedThis script combines Alibaba stock price from NYSE, HKEX and XETRA (EU) exchanges into one chart. It handles currency and ADR conversions automatically and price is always shown in USD.
NOTE!! You must add the indicator in a chart that updates 24/7, such as EURUSD. If you use a chart that updates only during US session (such as BABA), HK/EU sessions will not be shown.
If you want to add indicators in the chart, hover your mouse over indicator title "BABA 24/7" in the upper left corner of the chart, select the rightmost button "..." that appears and then Add indicator/Strategy.
TAPLOT Wick PlayWick play is a candle stick long setup popularized by 2020 US Investing Champion Oliver Kell
Wick Play is a setup in which:
Strong stock with momentum to the upside closes off the highs of the day in yesterdays session.
Today's session opens in the candle "wick" of yesterdays bar.
If stock holds in the wick and doesn't trade in the body of yesterdays candle, it is a sign of strength.
Trigger happens on day 3 when price moves over the high of the wick inside day.
It is important to note that this setup should not be traded in isolation. Not every wick play is buyable.
This is to be used in the context of strong stocks like True Market Leaders and with buying momentum behind them.
Indicator places an up arrow under the candle setup. It also colors the candle itself. All configurable through indicator settings.
Cheers!
Intraday Hourly VolumeEXPERIMENTAL:
shows the cumulative average volume at a hour of day, and the current volume (arrow point), current server hour will be marked in red label.
known issues: tickets with sessions, the labels may show red at end of session, or show more than 1 red label at a time...