Candle count, with simple numberWhat it does
Counts the length of same-color candle streaks (consecutive bullish or bearish bars) and prints the running number above each bar:
e.g., “1, 2, 3…”; when color flips, it restarts at “1”.
Prime numbers (2, 3, 5, 7, 11, 13) are emphasized by rendering one size step larger and with a user-selected color.
Labels are pinned to each bar (anchored by bar index and price), so they do not drift when you pan or zoom the chart.
How it works
Determines candle direction: bullish if close > open, bearish if close < open.
If the current bar has the same direction as the previous bar, the counter increments; otherwise it resets to 1.
For values 2, 3, 5, 7, 11, 13 the number is highlighted (bigger + custom color).
Each number is drawn just above the bar’s High with a configurable offset.
The script does not repaint on history. During the live bar, the number updates in real time (as expected).
Settings
Digits size — Base text size (Tiny / Small / Normal / Large / Huge).
Prime numbers are automatically shown one step larger than the base size.
Offset above bar (ticks) — Vertical offset from the bar’s High, in instrument ticks.
Prime numbers color — Text color used specifically for prime numbers (non-prime digits are white).
How to read & use it
Rising momentum. Long streaks (e.g., 5–7+) suggest strong directional moves with few pullbacks.
Early pause/mean-reversion hints. After a long streak, the appearance of the opposite color (counter resets to “1”) often coincides with a pause or minor retrace.
Research & statistics. Quickly see which streak lengths are common on your market/timeframe (e.g., “How often do 3–5 bar runs occur?”).
Trade management. You can tie partial exits to specific streak lengths (2, 3, 5…) or reduce risk when the counter flips back to “1”.
Why it’s useful
Provides a clean, numeric view of momentum with zero smoothing or lag.
Works on any symbol and timeframe.
Prime-number emphasis makes important counts pop at a glance.
Pinned labels stay exactly above their bars, ensuring stable, readable visuals at any zoom level.
Notes
Doji bars (close == open) are treated as no direction and reset the streak.
This is a context tool, not a standalone buy/sell signal. Combine it with your entry/exit framework.
Very dense charts may hit platform label limits; the script raises the limit, but extremely long histories on very low timeframes can still be heavy.
在脚本中搜索"文华财经tick价格"
Gamma Blast StrategyGamma Blast Strategy used for quick 2-5 ticks on Buys, but on a sideways market can get up to 15-20 ticks.
IBS markerIndicator Description
This indicator provides a detailed analysis of the structure and volatility of each candlestick. It is designed to help traders better understand the balance between buying and selling pressure within individual bars, as well as the short-term volatility environment.
📌 Features
Candlestick Structure Analysis
Calculates the relative percentage of the upper wick, lower wick, and real body of each candle.
Helps traders visually and numerically evaluate whether a candle is dominated by bullish, bearish, or indecisive pressure.
IBS (Intraday Bar Strength)
Computes the Intraday Bar Strength value, showing where the close is located relative to the high-low range.
A high IBS indicates strong closing near the high, while a low IBS indicates weakness near the low.
Range Measurements
Displays the candlestick range in both price units and ticks.
Useful for traders who need precise range data for scalping or range-based strategies.
ATR (Average True Range) Volatility Filter
ATR is included with a configurable period setting.
Provides a contextual measure of volatility, helping traders compare current bar size against recent market behavior.
Dynamic Chart Labels
Key values (such as wick percentages, IBS, and range) are displayed directly on the chart through dynamic labels.
This allows for quick interpretation without opening extra panels or indicators.
📈 How to Use
Add the indicator to any chart and configure the settings (ATR period, label visibility, etc.) according to your trading style.
Use wick/body ratios to spot candles with unusual buying/selling pressure.
Combine IBS with ATR to identify potential exhaustion or continuation setups.
The dynamic labels are best used on lower timeframes for scalpers, but they can also provide insights on higher timeframes for swing traders.
🔍 Practical Applications
Identify reversal candles where one wick dominates.
Measure strength of breakouts by comparing candle body % and IBS values.
Detect volatility shifts by monitoring when bar ranges deviate from the ATR baseline.
Support scalping strategies that rely on tick-based range detection.
✅ Notes
This is a standalone indicator and does not require any other script to function.
Works on all markets (stocks, futures, forex, crypto).
For best results, use in conjunction with price action analysis or your preferred trading strategy.
IBS_WickandBody_ATRIndicator Description
This indicator provides a detailed analysis of the structure and volatility of each candlestick. It is designed to help traders better understand the balance between buying and selling pressure within individual bars, as well as the short-term volatility environment.
📌 Features
Candlestick Structure Analysis
Calculates the relative percentage of the upper wick, lower wick, and real body of each candle.
Helps traders visually and numerically evaluate whether a candle is dominated by bullish, bearish, or indecisive pressure.
IBS (Intraday Bar Strength)
Computes the Intraday Bar Strength value, showing where the close is located relative to the high-low range.
A high IBS indicates strong closing near the high, while a low IBS indicates weakness near the low.
Range Measurements
Displays the candlestick range in both price units and ticks.
Useful for traders who need precise range data for scalping or range-based strategies.
ATR (Average True Range) Volatility Filter
ATR is included with a configurable period setting.
Provides a contextual measure of volatility, helping traders compare current bar size against recent market behavior.
Dynamic Chart Labels
Key values (such as wick percentages, IBS, and range) are displayed directly on the chart through dynamic labels.
This allows for quick interpretation without opening extra panels or indicators.
📈 How to Use
Add the indicator to any chart and configure the settings (ATR period, label visibility, etc.) according to your trading style.
Use wick/body ratios to spot candles with unusual buying/selling pressure.
Combine IBS with ATR to identify potential exhaustion or continuation setups.
The dynamic labels are best used on lower timeframes for scalpers, but they can also provide insights on higher timeframes for swing traders.
🔍 Practical Applications
Identify reversal candles where one wick dominates.
Measure strength of breakouts by comparing candle body % and IBS values.
Detect volatility shifts by monitoring when bar ranges deviate from the ATR baseline.
Support scalping strategies that rely on tick-based range detection.
✅ Notes
This is a standalone indicator and does not require any other script to function.
Works on all markets (stocks, futures, forex, crypto).
For best results, use in conjunction with price action analysis or your preferred trading strategy.
Candle Body Size AlertThis indicator monitors the body size of each candle (close minus open, ignoring wicks) and compares it to a user-defined threshold measured in ticks. If the candle body exceeds the threshold, the indicator triggers an alert condition at the close of the candle.
Features:
1. Adjustable threshold in ticks (default: 4000)
2. Adjustable timeframe (or use chart timeframe)
3. Alerts only at candle close (no intrabar signals)
Use Case:
Designed for traders who want to be notified when unusually large candles form, helping to identify strong momentum moves or volatility spikes.
Portfolio Tracker ARJO (V-01)Portfolio Tracker ARJO (V-01)
This indicator is a user-friendly portfolio tracking tool designed for TradingView charts. It overlays a customizable table on your chart to monitor up to 15 stocks or symbols in your portfolio. It calculates real-time metrics like current market price (CMP), gains/losses, and stoploss breaches, helping you stay on top of your investments without switching between multiple charts. The table uses color-coding for quick visual insights: green for profits, red for losses, and highlights breached stoplosses in red for alerts. It also shows portfolio-wide totals for overall performance.
Key Features
Supports up to 15 Symbols: Enter stock tickers (e.g., NSE:RELIANCE or BSE:TCS) with details like buy price, date, units, and stoploss.
Symbol: The stock ticker and description.
Buy Date: When you purchased it.
Units: Number of shares/units held.
Buy Price: Your entry price.
Stop Loss: Your set stoploss level (highlighted in red if breached by CMP).
CMP: Current market price (fetched from the chart's timeframe).
% Gain/Loss: Percentage change from buy price (color-coded: green for positive, red for negative).
Gain/Loss: Total monetary gain/loss based on units.
Optional Timeframe Columns: Toggle to show % change over 1 Week (1W), 1 Month (1M), 3 Months (3M), and 6 Months (6M) for historical performance.
Portfolio Summary: At the top of the table, see total % gain/loss and absolute gain/loss for your entire portfolio.
Visual Customizations: Adjust table position (e.g., Top Right), size, colors for positive/negative values, and intensity cutoff for gradients.
Benchmark Index-Based Header: The title row's background color reflects NIFTY's weekly trend (green if above 10-week SMA, red if below) for market context.
Benchmark Index-Based Header: The title row's background color reflects NIFTY's weekly trend (green if above 10-week SMA, red if below) for market context.
How to Use It: Step-by-Step Guide
Add the Indicator to Your Chart: Search for "Portfolio Tracker ARJO (V-01)" in TradingView's indicator library and add it to any chart (preferably Daily timeframe for accuracy).
Input Your Portfolio Symbols:
Open the indicator settings (gear icon).
In the "Symbol 1" to "Symbol 15" groups, fill in:
Symbol: Enter the ticker (e.g., NSE:INFY).
Year/Month/Day: Select your buy date (e.g., 2024-07-01).
Buy Price: Your purchase price per unit.
Stoploss: Your exit price if things go south.
Units: How many shares you own.
Only fill what you need—leave extras blank. The table auto-adjusts to show only entered symbols.
Customize the Table (Optional):
In "Table settings":
Choose position (e.g., Top Right) and size (% of chart).
Toggle "Show Timeframe Columns" to add 1W/1M/3M/6M performance.
In "Color settings":
Pick colors for positive (green) and negative (red) cells.
Set "Color intensity cutoff (%)" to control how strong the colors get (e.g., 10% means changes above 10% max out the color).
Interpret the Table on Your Chart:
The table appears overlaid—scan rows for each symbol's stats.
Look at colors: Greener = better gains; redder = bigger losses.
Check CMP cell: Red means stoploss breached—consider selling!
Portfolio Gain/Loss at the top gives a quick overall health check.
For Best Results:
Use on a Daily chart to avoid CMP errors (the script will warn if on Weekly/Monthly).
Refresh the chart or wait for a new bar if data doesn't update immediately.
For Indian stocks, prefix with NSE: or BSE: (e.g., BSE:RELIANCE).
This is for tracking only—not trading signals. Combine with your strategy.
If no symbols show, ensure inputs are valid (e.g., buy price > 0, valid date).
Finally, this tool makes it quite easy for beginners to track their portfolios, while also giving advanced traders powerful and customizable insights. I'd love to hear your feedback—happy trading!
Universal Valuation | Lyro RSUniversal Valuation
⚠️Disclaimer: This indicator is a tool for technical analysis and does not provide guaranteed results. It should be used in conjunction with other analysis methods and proper risk management practices. The creators of this indicator are not responsible for any financial decisions made based on its signals.
Overview
The Universal Valuation indicator helps identify whether the market is undervalued/cheap or overvalued/expensive. And another mode this indicator offers is This cutting-edge tool works flawlessly ACROSS ALL TIMEFRAMES & TICKERS/CHARTS.
By combining regular TradingView indicators & some of our valuation indicators basic/simple with advanced statistical functions, this indicator offers a powerful, universal valuation tool.
Key Features
INPUTS: The Universal Valuation indicator offers flexibility through its customizable input sections. The "Indicator Settings" let you adjust lengths for the raw indicators and statistical functions. The "Signals" section defines thresholds for background color changes, helping you visually spot key market moments. The "Colors" section allows you to pick from pre-defined schemes or personalize colors for better clarity. Lastly, the "Tables" section gives you full control over the UV table’s size and positioning, including options to overlay it on the chart or place it in the allocated space.
A DEEPER INSIGHT: This indicator is built around three distinct categories: "UVM Andromeda," "UVM Sentinel," and "UVM Nexus." Each category has three different drivers. The statistical function powering this indicator is the Z-score. The Z-score is an incredibly powerful tool that helps determine if the market is overvalued/expensive or undervalued/cheap, offering critical insights for traders."
Plotting: The plotted value represents the average of all the drivers. In other words, it is the combined average of all 9 Z-scored indicators, providing a balanced and comprehensive market valuation.
What is Z-score? & Why does this system use it?
Z-score is an advanced statistical function used to measure how far a value deviates from the average in a data set. The formula for Z-score is: (x - h) / o, where x is the observed value, h is the average (mean) of the data set, and o is the standard deviation.
This system uses the Z-score because it helps determine whether the market is overvalued or undervalued based on historical data and how we apply the calculation. By measuring how far a value deviates from the average, the Z-score provides a clearer and more objective valuation of market conditions. In our case, a Z-score of -3 indicates an undervalued market, while a Z-score of 3 signals an overvalued market.
UVM Andromeda:
UVM stands for Universal Valuation Model, which is the core of this indicator. Andromeda, one of the most stunning galaxies in the universe, inspired by its name. We chose this name because a powerful indicator should not only be effective but also visually appealing.
You might be wondering what drives UVM Andromeda. The three key drivers are Price, RSI, and ROC. These indicators are pre-defined, while the "Indicator Settings" allow you to adjust the length of the Z-score calculation, refining how the model analyzes market conditions.
UVM Sentinel:
Sentinel, refers to a guard or watchman, someone or something that keeps watch and provides protection. In our case this name refers to a model that actively observes market conditions, acting as a vigilant tool that signals important shifts in valuation.
Wondering what drives UVM Sentinel? The three key drivers are BB%, CCI, and Crosby. While these indicators are simple on their own, applying our Z-score function elevates them to a whole new level, enhancing their ability to detect market conditions with greater accuracy.
UVM Nexus:
We chose the name Nexus simply because it sounds cool—there’s no deeper meaning behind it for us. However, the word itself does have a meaning; it refers to a connection or link between multiple things.
The three key drivers for UVM Nexus are the Sharpe, Sortino, and Omega ratios. These are all asset performance metrics, but by applying the Z-score, we transform them into powerful valuation indicators/drivers, giving you a deeper insight into market conditions.
Why do we use 9 different indicators instead of 1?
That's a great question, and the answer is quite simple. Think of it like this: if you have one super soldier, and they miss a shot, it’s game over. But if you have many soldiers, even if one misses, the others can step in and take the shot. The strength of using multiple indicators lies in their collective power – if one misses, the others still provide valuable insights, making the overall system more reliable.
Final Thoughts:
In our Universal Valuation indicator, you have the flexibility to customize it however you like using our inputs. The system is divided into three distinct categories, with each category containing three indicators. The value plotted on the chart is the average of all nine indicators. We apply the Z-score, an advanced statistical function, to each of these nine indicators. The final plotted average is the average of all the Z-scores, giving you a comprehensive and refined market valuation. This indicator can work on any timeframe & chart ticker.
Sector SPDR ETFsThis script automatically identifies the SPDR sector ETF that corresponds to the currently viewed US stock ticker. It maps over 500 US-listed stocks to their respective SPDR sector ETFs — such as XLK (Technology), XLF (Financials), XLY (Consumer Discretionary), and others — based on pre-defined symbol lists.
When applied to a chart, the script displays a label below the last candle showing the SPDR sector symbol (e.g., "XLE" for Energy stocks like XOM). This allows traders and investors to quickly understand the sector classification of any stock they analyze.
Key Features:
Maps tickers to SPDR sector ETFs: XLC, XLY, XLP, XLE, XLF, XLV, XLI, XLB, XLRE, XLK, and XLU.
Displays the corresponding sector label on the chart.
Helpful for sector rotation strategies, macro analysis, or thematic investing.
log.info() - 5 Exampleslog.info() is one of the most powerful tools in Pine Script that no one knows about. Whenever you code, you want to be able to debug, or find out why something isn’t working. The log.info() command will help you do that. Without it, creating more complex Pine Scripts becomes exponentially more difficult.
The first thing to note is that log.info() only displays strings. So, if you have a variable that is not a string, you must turn it into a string in order for log.info() to work. The way you do that is with the str.tostring() command. And remember, it's all lower case! You can throw in any numeric value (float, int, timestamp) into str.string() and it should work.
Next, in order to make your output intelligible, you may want to identify whatever value you are logging. For example, if an RSI value is 50, you don’t want a bunch of lines that just say “50”. You may want it to say “RSI = 50”.
To do that, you’ll have to use the concatenation operator. For example, if you have a variable called “rsi”, and its value is 50, then you would use the “+” concatenation symbol.
EXAMPLE 1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
log.info(“RSI= ” + str.tostring(rsi))
Example Output =>
RSI= 50
Here, we use double quotes to create a string that contains the name of the variable, in this case “RSI = “, then we concatenate it with a stringified version of the variable, rsi.
Now that you know how to write a log, where do you view them? There isn’t a lot of documentation on it, and the link is not conveniently located.
Open up the “Pine Editor” tab at the bottom of any chart view, and you’ll see a “3 dot” button at the top right of the pane. Click that, and right above the “Help” menu item you’ll see “Pine logs”. Clicking that will open that to open a pane on the right of your browser - replacing whatever was in the right pane area before. This is where your log output will show up.
But, because you’re dealing with time series data, using the log.info() command without some type of condition will give you a fast moving stream of numbers that will be difficult to interpret. So, you may only want the output to show up once per bar, or only under specific conditions.
To have the output show up only after all computations have completed, you’ll need to use the barState.islast command. Remember, barState is camelCase, but islast is not!
EXAMPLE 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
if barState.islast
log.info("RSI=" + str.tostring(rsi))
plot(rsi)
However, this can be less than ideal, because you may want the value of the rsi variable on a particular bar, at a particular time, or under a specific chart condition. Let’s hit these one at a time.
In each of these cases, the built-in bar_index variable will come in handy. When debugging, I typically like to assign a variable “bix” to represent bar_index, and include it in the output.
So, if I want to see the rsi value when RSI crosses above 0.5, then I would have something like
EXAMPLE 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,0.5)
if rsiCrossedOver
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
bix=19964 - RSI=51.8449459867
bix=19972 - RSI=50.0975830828
bix=19983 - RSI=53.3529808079
bix=19985 - RSI=53.1595745146
bix=19999 - RSI=66.6466337654
bix=20001 - RSI=52.2191767466
Here, we see that the output only appears when the condition is met.
A useful thing to know is that if you want to limit the number of decimal places, then you would use the command str.tostring(rsi,”#.##”), which tells the interpreter that the format of the number should only be 2 decimal places. Or you could round the rsi variable with a command like rsi2 = math.round(rsi*100)/100 . In either case you’re output would look like:
bix=19964 - RSI=51.84
bix=19972 - RSI=50.1
bix=19983 - RSI=53.35
bix=19985 - RSI=53.16
bix=19999 - RSI=66.65
bix=20001 - RSI=52.22
This would decrease the amount of memory that’s being used to display your variable’s values, which can become a limitation for the log.info() command. It only allows 4096 characters per line, so when you get to trying to output arrays (which is another cool feature), you’ll have to keep that in mind.
Another thing to note is that log output is always preceded by a timestamp, but for the sake of brevity, I’m not including those in the output examples.
If you wanted to only output a value after the chart was fully loaded, that’s when barState.islast command comes in. Under this condition, only one line of output is created per tick update — AFTER the chart has finished loading. For example, if you only want to see what the the current bar_index and rsi values are, without filling up your log window with everything that happens before, then you could use the following code:
EXAMPLE 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
if barstate.islast
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
Example Output =>
bix=20203 - RSI=53.1103309071
This value would keep updating after every new bar tick.
The log.info() command is a huge help in creating new scripts, however, it does have its limitations. As mentioned earlier, only 4096 characters are allowed per line. So, although you can use log.info() to output arrays, you have to be aware of how many characters that array will use.
The following code DOES NOT WORK! And, the only way you can find out why will be the red exclamation point next to the name of the indicator. That, and nothing will show up on the chart, or in the logs.
// CODE DOESN’T WORK
//@version=6
indicator("MW - log.info()")
var array rsi_arr = array.new()
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50)
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
// No code errors, but will not compile because too much is being written to the logs.
However, after putting some time restrictions in with the i_startTime and i_endTime user input variables, and creating a dateFilter variable to use in the conditions, I can limit the size of the final array. So, the following code does work.
EXAMPLE 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// CODE DOES WORK
//@version=6
indicator("MW - log.info()")
i_startTime = input.time(title="Start", defval=timestamp("01 Jan 2025 13:30 +0000"))
i_endTime = input.time(title="End", defval=timestamp("1 Jan 2099 19:30 +0000"))
var array rsi_arr = array.new()
dateFilter = time >= i_startTime and time <= i_endTime
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50) and dateFilter // <== The dateFilter condition keeps the array from getting too big
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
rsi_arr:
bix=20210 - RSI=56.9030578034
Of course, if you restrict the decimal places by using the rounding the rsi value with something like rsiRounded = math.round(rsi * 100) / 100 , then you can further reduce the size of your array. In this case the output may look something like:
Example Output =>
rsi_arr:
bix=20210 - RSI=55.6947486019
This will give your code a little breathing room.
In a nutshell, I was coding for over a year trying to debug by pushing output to labels, tables, and using libraries that cluttered up my code. Once I was able to debug with log.info() it was a game changer. I was able to start building much more advanced scripts. Hopefully, this will help you on your journey as well.
Options Strategy V1.3📈 Options Strategy V1.3 — EMA Crossover + RSI + ATR + Opening Range
Overview:
This strategy is designed for short-term directional trades on large-cap stocks or ETFs, especially when trading options. It combines classic trend-following signals with momentum confirmation, volatility-based risk management, and session timing filters to help identify high-probability entries with predefined stop-loss and profit targets.
🔍 Strategy Components:
EMA Crossover (Fast/Slow)
Entry signals are triggered by the crossover of a short EMA above or below a long EMA — a traditional trend-following method to detect shifts in momentum.
RSI Filter
RSI confirms the signal by avoiding entries in overbought/oversold zones unless certain momentum conditions are met.
Long entry requires RSI ≥ Long Threshold
Short entry requires RSI ≤ Short Threshold
ATR-Based SL & TP
Stop-loss is set dynamically as a multiple of ATR below (long) or above (short) the entry price.
Take-profit is placed as a ratio (TP/SL) of the stop distance, ensuring consistent reward/risk structure.
Opening Range Filter (Optional)
If enabled, the strategy only triggers trades after price breaks out of the 09:30–09:45 EST range, ensuring participation in directional moves.
Session Filters
No trades from 04:00 to 09:30 and from 16:00 to 20:00 EST, avoiding low-liquidity periods.
All open trades are closed at 15:55 EST, to avoid overnight risk or expiration issues for options.
⚙️ Built-in Presets:
You can choose one of the built-in ticker-specific presets for optimal conditions:
Ticker EMAs RSI (Long/Short) ATR SL×ATR TP/SL
SPY 8/28 56 / 26 14 1.4× 4.0×
TSLA 23/27 56 / 33 13 1.4× 3.6×
AAPL 6/13 61 / 26 23 1.4× 2.1×
MSFT 25/32 54 / 26 14 1.2× 2.2×
META 25/32 53 / 26 17 1.8× 2.3×
AMZN 28/32 55 / 25 16 1.8× 2.3×
You can also choose "Custom" to fully configure all parameters to your own market and strategy preferences.
📌 Best Use Case:
This strategy is especially suited for intraday options trading, where timing and risk control are critical. It works best on liquid tickers with strong trends or clear breakout behavior.
Simple Risk-to-Reward (R) Indicator (TP1–TP2)What this indicator does:
This tool helps traders clearly visualize their risk and reward on any trade by plotting their entry, stop loss, and take-profit (TP) levels directly on the chart. It’s designed to make manual trade planning more visual and systematic.
How it works:
You set your planned entry price, whether you want to plot a Long or Short setup, and your stop-loss distance (in ticks).
The indicator calculates your stop-loss level and automatically plots it on the chart.
It then draws take-profit levels at 1R and 2R (where “R” is your risk, the distance between entry and stop).
You can toggle the TP1 and TP2 lines on or off to suit your preference.
How to use it:
Open the settings and enter your intended entry price.
Select “Long Setup” for a buy trade, or turn it off for a sell/short trade.
Enter your desired stop loss in ticks.
Choose which take-profit levels to display by toggling TP1 and TP2.
The indicator will show entry, stop, and take-profit levels right on your chart so you can easily see your planned risk/reward.
What makes it unique and useful:
This indicator is designed for manual trade planning, giving you full control over your inputs and letting you instantly see your risk/reward on any instrument or timeframe. Unlike some built-in tools, it supports both long and short trades, lets you set all levels manually, and keeps your charts clean and easy to interpret.
Long/Short/Exit/Risk management Strategy # LongShortExit Strategy Documentation
## Overview
The LongShortExit strategy is a versatile trading system for TradingView that provides complete control over entry, exit, and risk management parameters. It features a sophisticated framework for managing long and short positions with customizable profit targets, stop-loss mechanisms, partial profit-taking, and trailing stops. The strategy can be enhanced with continuous position signals for visual feedback on the current trading state.
## Key Features
### General Settings
- **Trading Direction**: Choose to trade long positions only, short positions only, or both.
- **Max Trades Per Day**: Limit the number of trades per day to prevent overtrading.
- **Bars Between Trades**: Enforce a minimum number of bars between consecutive trades.
### Session Management
- **Session Control**: Restrict trading to specific times of the day.
- **Time Zone**: Specify the time zone for session calculations.
- **Expiration**: Optionally set a date when the strategy should stop executing.
### Contract Settings
- **Contract Type**: Select from common futures contracts (MNQ, MES, NQ, ES) or custom values.
- **Point Value**: Define the dollar value per point movement.
- **Tick Size**: Set the minimum price movement for accurate calculations.
### Visual Signals
- **Continuous Position Signals**: Implement 0 to 1 visual signals to track position states.
- **Signal Plotting**: Customize color and appearance of position signals.
- **Clear Visual Feedback**: Instantly see when entry conditions are triggered.
### Risk Management
#### Stop Loss and Take Profit
- **Risk Type**: Choose between percentage-based, ATR-based, or points-based risk management.
- **Percentage Mode**: Set SL/TP as a percentage of entry price.
- **ATR Mode**: Set SL/TP as a multiple of the Average True Range.
- **Points Mode**: Set SL/TP as a fixed number of points from entry.
#### Advanced Exit Features
- **Break-Even**: Automatically move stop-loss to break-even after reaching specified profit threshold.
- **Trailing Stop**: Implement a trailing stop-loss that follows price movement at a defined distance.
- **Partial Profit Taking**: Take partial profits at predetermined price levels:
- Set first partial exit point and percentage of position to close
- Set second partial exit point and percentage of position to close
- **Time-Based Exit**: Automatically exit a position after a specified number of bars.
#### Win/Loss Streak Management
- **Streak Cutoff**: Automatically pause trading after a series of consecutive wins or losses.
- **Daily Reset**: Option to reset streak counters at the start of each day.
### Entry Conditions
- **Source and Value**: Define the exact price source and value that triggers entries.
- **Equals Condition**: Entry signals occur when the source exactly matches the specified value.
### Performance Analytics
- **Real-Time Stats**: Track important performance metrics like win rate, P&L, and largest wins/losses.
- **Visual Feedback**: On-chart markers for entries, exits, and important events.
### External Integration
- **Webhook Support**: Compatible with TradingView's webhook alerts for automated trading.
- **Cross-Platform**: Connect to external trading systems and notification platforms.
- **Custom Order Execution**: Implement advanced order flows through external services.
## How to Use
### Setup Instructions
1. Add the script to your TradingView chart.
2. Configure the general settings based on your trading preferences.
3. Set session trading hours if you only want to trade specific times.
4. Select your contract specifications or customize for your instrument.
5. Configure risk parameters:
- Choose your preferred risk management approach
- Set appropriate stop-loss and take-profit levels
- Enable advanced features like break-even, trailing stops, or partial profit taking as needed
6. Define entry conditions:
- Select the price source (such as close, open, high, or an indicator)
- Set the specific value that should trigger entries
### Entry Condition Examples
- **Example 1**: To enter when price closes exactly at a whole number:
- Long Source: close
- Long Value: 4200 (for instance, to enter when price closes exactly at 4200)
- **Example 2**: To enter when an indicator reaches a specific value:
- Long Source: ta.rsi(close, 14)
- Long Value: 30 (triggers when RSI equals exactly 30)
### Best Practices
1. **Always backtest thoroughly** before using in live trading.
2. **Start with conservative risk settings**:
- Small position sizes
- Reasonable stop-loss distances
- Limited trades per day
3. **Monitor and adjust**:
- Use the performance table to track results
- Adjust parameters based on how the strategy performs
4. **Consider market volatility**:
- Use ATR-based stops during volatile periods
- Use fixed points during stable markets
## Continuous Position Signals Implementation
The LongShortExit strategy can be enhanced with continuous position signals to provide visual feedback about the current position state. These signals can help you track when the strategy is in a long or short position.
### Adding Continuous Position Signals
Add the following code to implement continuous position signals (0 to 1):
```pine
// Continuous position signals (0 to 1)
var float longSignal = 0.0
var float shortSignal = 0.0
// Update position signals based on your indicator's conditions
longSignal := longCondition ? 1.0 : 0.0
shortSignal := shortCondition ? 1.0 : 0.0
// Plot continuous signals
plot(longSignal, title="Long Signal", color=#00FF00, linewidth=2, transp=0, style=plot.style_line)
plot(shortSignal, title="Short Signal", color=#FF0000, linewidth=2, transp=0, style=plot.style_line)
```
### Benefits of Continuous Position Signals
- Provides clear visual feedback of current position state (long/short)
- Signal values stay consistent (0 or 1) until condition changes
- Can be used for additional calculations or alert conditions
- Makes it easier to track when entry conditions are triggered
### Using with Custom Indicators
You can adapt the continuous position signals to work with any custom indicator by replacing the condition with your indicator's logic:
```pine
// Example with moving average crossover
longSignal := fastMA > slowMA ? 1.0 : 0.0
shortSignal := fastMA < slowMA ? 1.0 : 0.0
```
## Webhook Integration
The LongShortExit strategy is fully compatible with TradingView's webhook alerts, allowing you to connect your strategy to external trading platforms, brokers, or custom applications for automated trading execution.
### Setting Up Webhooks
1. Create an alert on your chart with the LongShortExit strategy
2. Enable the "Webhook URL" option in the alert dialog
3. Enter your webhook endpoint URL (from your broker or custom trading system)
4. Customize the alert message with relevant information using TradingView variables
### Webhook Message Format Example
```json
{
"strategy": "LongShortExit",
"action": "{{strategy.order.action}}",
"price": "{{strategy.order.price}}",
"quantity": "{{strategy.position_size}}",
"time": "{{time}}",
"ticker": "{{ticker}}",
"position_size": "{{strategy.position_size}}",
"position_value": "{{strategy.position_value}}",
"order_id": "{{strategy.order.id}}",
"order_comment": "{{strategy.order.comment}}"
}
```
### TradingView Alert Condition Examples
For effective webhook automation, set up these alert conditions:
#### Entry Alert
```
{{strategy.position_size}} != {{strategy.position_size}}
```
#### Exit Alert
```
{{strategy.position_size}} < {{strategy.position_size}} or {{strategy.position_size}} > {{strategy.position_size}}
```
#### Partial Take Profit Alert
```
strategy.order.comment contains "Partial TP"
```
### Benefits of Webhook Integration
- **Automated Trading**: Execute trades automatically through supported brokers
- **Cross-Platform**: Connect to custom trading bots and applications
- **Real-Time Notifications**: Receive trade signals on external platforms
- **Data Collection**: Log trade data for further analysis
- **Custom Order Management**: Implement advanced order types not available in TradingView
### Compatible External Applications
- Trading bots and algorithmic trading software
- Custom order execution systems
- Discord, Telegram, or Slack notification systems
- Trade journaling applications
- Risk management platforms
### Implementation Recommendations
- Test webhook delivery using a free service like webhook.site before connecting to your actual trading system
- Include authentication tokens or API keys in your webhook URL or payload when required by your external service
- Consider implementing confirmation mechanisms to verify trade execution
- Log all webhook activities for troubleshooting and performance tracking
## Strategy Customization Tips
### For Scalping
- Set smaller profit targets (1-3 points)
- Use tighter stop-losses
- Enable break-even feature after small profit
- Set higher max trades per day
### For Day Trading
- Use moderate profit targets
- Implement partial profit taking
- Enable trailing stops
- Set reasonable session trading hours
### For Swing Trading
- Use longer-term charts
- Set wider stops (ATR-based often works well)
- Use higher profit targets
- Disable daily streak reset
## Common Troubleshooting
### Low Win Rate
- Consider widening stop-losses
- Verify that entry conditions aren't triggering too frequently
- Check if the equals condition is too restrictive; consider small tolerances
### Missing Obvious Trades
- The equals condition is extremely precise. Price must exactly match the specified value.
- Consider using floating-point precision for more reliable triggers
### Frequent Stop-Outs
- Try ATR-based stops instead of fixed points
- Increase the stop-loss distance
- Enable break-even feature to protect profits
## Important Notes
- The exact equals condition is strict and may result in fewer trade signals compared to other conditions.
- For instruments with decimal prices, exact equality might be rare. Consider the precision of your value.
- Break-even and trailing stop calculations are based on points, not percentage.
- Partial take-profit levels are defined in points distance from entry.
- The continuous position signals (0 to 1) provide valuable visual feedback but don't affect the strategy's trading logic directly.
- When implementing continuous signals, ensure they're aligned with the actual entry conditions used by the strategy.
---
*This strategy is for educational and informational purposes only. Always test thoroughly before using with real funds.*
MNQ EMA StrategyThis strategy is not perfected yet. ONE MINUTE TIMEFRAME
The goal is to take Longs above the 5 ema when price is above all the 200, 30, and 5 ema.
Short side is when candle closes below the 5 ema and price is below the 300, 30, and 5 ema.
I use candle range blocks for different time zones to avoid excess orders from being triggered. As well as blocks when stoploss is hit or after a profitable trade of certain ticks.
There is an RSI to avoid trades when there isn't too much movement.
My goal is to get an entry when price trades above the 5 ema and then next candle passes it by .25 instead of entering immediately. The stoploss as the low of candle before entry and TP as 3 times the stoploss. I've tried a million times to make it like this but I don't know how to use pine script or Code.
The sell side is basically the same, enter at candle close below 5 ema wait for low to get swept to enter and stoploss above previous high, with TP 3 times the stoploss.
Publishing in hopes anyone knows how to adjust this
CAUTION THIS STRATEGY WORKS WITH CURRENT PRICE ACTION DUE TO ME USING RECENT TICK COUNT RATHER THAN BASED ON CANDLES OR PERCENTAGES. THIS WILL ONLY WORK AS LONG AS MARKET MOVES AS IT HAS BEEN SINCE 2024. CME_MINI:MNQ1!
Market Sessions by BASSWELLThis TradingView indicator visually highlights major global trading sessions (Tokyo, London, New York) directly on intraday charts. It provides a clear, color-coded display of session activity and key statistics to help traders better understand session dynamics and overlaps.
✅ Key Features:
Visual Session Boxes: Draws background boxes for each session with configurable colors.
Session Names: Displays the name of each session as a label above the session box.
Open/Close Lines: Optionally shows dashed lines at session open and close prices.
Average Price Line: Plots the average session price as a dotted line.
Tick Range Display: Calculates and shows the high-low range in ticks.
Time Zone Support: Fully timezone-aware via IANA definitions (e.g. "Europe/London").
Overlap Handling: Automatically dims older sessions when a new one starts for visual clarity.
🔧 Configurable Parameters:
Show/hide each session individually.
Set session times and timezones.
Customize label visibility and box contents.
Adjust session colors with transparency.
Includes basic visual styling for better chart readability.
⚠️ Note: Works only on intraday timeframes. Daily/weekly/monthly charts are not supported.
Retirement Portfolio Dashboard1. Set It Up
Paste the script into the Pine Script editor in TradingView
Add to chart (use a daily chart for any TSX ticker)
Configure the inputs on the right panel:
Choose your ETF tickers (default: VFV, XAW, XIC)
Enter your target allocations (U.S., Global, Canada, Cash)
Set your current portfolio value and contribution plan
Adjust your expected return and rebalance trigger
📊 2. What It Tracks
💼 Allocation Overview
Target vs. actual % for each asset class
CAD value of each component
Performance YTD based on Jan 2nd start
Drift % to see how far each asset has deviated
📈 Growth Forecast
Future value projection with contributions
Weighted return (based on typical historical returns)
Inflation-adjusted real return (assuming 2% inflation)
⚠ Rebalancing
If any drift exceeds your set threshold (e.g., 5%), the script:
Highlights the issue in red
Displays "⚠ Rebalance Suggested"
Triggers a TradingView alert if you've activated it
🔔 3. Set Up Alerts
Go to Alerts > Create Alert
Choose your script from the dropdown
Under Condition, select "Rebalance Alert"
Choose your desired alert type (popup, email, webhook, etc.)
✅ 4. How to Use It Effectively
Task What to Do
Monitor allocations Check dashboard weekly or monthly
Spot imbalances Use Drift % and Status (green/red)
Forecast retirement growth Adjust contributions, return rate, and horizon
Prepare to rebalance Use alerts when drift > threshold
Tune assumptions Change expected returns or inflation rate as needed
💡 Tips
You can edit return assumptions (e.g., make Global equity more conservative)
Use this on a “blank” ticker (like TSX:XIC) so you don't overlay the chart
Copy values from your broker or retirement account to update real allocations
RiskCalc FX & GoldRiskCalc FX & Gold is a multi-market position sizing tool designed to help you manage risk quickly and accurately. With this script, simply enter your account capital, the percentage of risk you wish to take, and your stop in ticks. Depending on the selected market—Forex or XAUUSD—the script automatically adjusts its calculations:
Forex: Assumes 1 lot equals 100,000 units.
XAUUSD: Assumes 1 lot equals 100 ounces.
The script calculates your risk in dollars and, using a fixed value of 1 USD per tick per lot, determines the ideal position size in both lots and total contracts. Results are displayed in a clear, centralized table at the top of the chart for real-time decision-making.
Perfect for traders operating across multiple markets who need an automated and consistent approach to risk management.
Bullish Reversal Bar Strategy [Skyrexio]Overview
Bullish Reversal Bar Strategy leverages the combination of candlestick pattern Bullish Reversal Bar (description in Methodology and Justification of Methodology), Williams Alligator indicator and Williams Fractals to create the high probability setups. Candlestick pattern is used for the entering into trade, while the combination of Williams Alligator and Fractals is used for the trend approximation as close condition. Strategy uses only long trades.
Unique Features
No fixed stop-loss and take profit: Instead of fixed stop-loss level strategy utilizes technical condition obtained by Fractals and Alligator or the candlestick pattern invalidation to identify when current uptrend is likely to be over (more information in "Methodology" and "Justification of Methodology" paragraphs)
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Trend Trade Filter: strategy uses Alligator and Fractal combination as high probability trend filter.
Methodology
The strategy opens long trade when the following price met the conditions:
1.Current candle's high shall be below the Williams Alligator's lines (Jaw, Lips, Teeth)(all details in "Justification of Methodology" paragraph)
2.Price shall create the candlestick pattern "Bullish Reversal Bar". Optionally if MFI and AO filters are enabled current candle shall have the decreasing AO and at least one of three recent bars shall have the squat state on the MFI (all details in "Justification of Methodology" paragraph)
3.If price breaks through the high of the candle marked as the "Bullish Reversal Bar" the long trade is open at the price one tick above the candle's high
4.Initial stop loss is placed at the Bullish Reversal Bar's candle's low
5.If price hit the Bullish Reversal Bar's low before hitting the entry price potential trade is cancelled
6.If trade is active and initial stop loss has not been hit, trade is closed when the combination of Alligator and Williams Fractals shall consider current trend change from upward to downward.
Strategy settings
In the inputs window user can setup strategy setting:
Enable MFI (if true trades are filtered using Market Facilitation Index (MFI) condition all details in "Justification of Methodology" paragraph), by default = false)
Enable AO (if true trades are filtered using Awesome Oscillator (AO) condition all details in "Justification of Methodology" paragraph), by default = false)
Justification of Methodology
Let's explore the key concepts of this strategy and understand how they work together. The first and key concept is the Bullish Reversal Bar candlestick pattern. This is just the single bar pattern. The rules are simple:
Candle shall be closed in it's upper half
High of this candle shall be below all three Alligator's lines (Jaw, Lips, Teeth)
Next, let’s discuss the short-term trend filter, which combines the Williams Alligator and Williams Fractals. Williams Alligator
Developed by Bill Williams, the Alligator is a technical indicator that identifies trends and potential market reversals. It consists of three smoothed moving averages:
Jaw (Blue Line): The slowest of the three, based on a 13-period smoothed moving average shifted 8 bars ahead.
Teeth (Red Line): The medium-speed line, derived from an 8-period smoothed moving average shifted 5 bars forward.
Lips (Green Line): The fastest line, calculated using a 5-period smoothed moving average shifted 3 bars forward.
When the lines diverge and align in order, the "Alligator" is "awake," signaling a strong trend. When the lines overlap or intertwine, the "Alligator" is "asleep," indicating a range-bound or sideways market. This indicator helps traders determine when to enter or avoid trades.
Fractals, another tool by Bill Williams, help identify potential reversal points on a price chart. A fractal forms over at least five consecutive bars, with the middle bar showing either:
Up Fractal: Occurs when the middle bar has a higher high than the two preceding and two following bars, suggesting a potential downward reversal.
Down Fractal: Happens when the middle bar shows a lower low than the surrounding two bars, hinting at a possible upward reversal.
Traders often use fractals alongside other indicators to confirm trends or reversals, enhancing decision-making accuracy.
How do these tools work together in this strategy? Let’s consider an example of an uptrend.
When the price breaks above an up fractal, it signals a potential bullish trend. This occurs because the up fractal represents a shift in market behavior, where a temporary high was formed due to selling pressure. If the price revisits this level and breaks through, it suggests the market sentiment has turned bullish.
The breakout must occur above the Alligator’s teeth line to confirm the trend. A breakout below the teeth is considered invalid, and the downtrend might still persist. Conversely, in a downtrend, the same logic applies with down fractals.
How we can use all these indicators in this strategy? This strategy is a counter trend one. Candle's high shall be below all Alligator's lines. During this market stage the bullish reversal bar candlestick pattern shall be printed. This bar during the downtrend is a high probability setup for the potential reversal to the upside: bulls were able to close the price in the upper half of a candle. The breaking of its high is a high probability signal that trend change is confirmed and script opens long trade. If market continues going down and break down the bullish reversal bar's low potential trend change has been invalidated and strategy close long trade.
If market really reversed and started moving to the upside strategy waits for the trend change form the downtrend to the uptrend according to approximation of Alligator and Fractals combination. If this change happens strategy close the trade. This approach helps to stay in the long trade while the uptrend continuation is likely and close it if there is a high probability of the uptrend finish.
Optionally users can enable MFI and AO filters. First of all, let's briefly explain what are these two indicators. The Awesome Oscillator (AO), created by Bill Williams, is a momentum-based indicator that evaluates market momentum by comparing recent price activity to a broader historical context. It assists traders in identifying potential trend reversals and gauging trend strength.
AO = SMA5(Median Price) − SMA34(Median Price)
where:
Median Price = (High + Low) / 2
SMA5 = 5-period Simple Moving Average of the Median Price
SMA 34 = 34-period Simple Moving Average of the Median Price
This indicator is filtering signals in the following way: if current AO bar is decreasing this candle can be interpreted as a bullish reversal bar. This logic is applicable because initially this strategy is a trend reversal, it is searching for the high probability setup against the current trend. Decreasing AO is the additional high probability filter of a downtrend.
Let's briefly look what is MFI. The Market Facilitation Index (MFI) is a technical indicator that measures the price movement per unit of volume, helping traders gauge the efficiency of price movement in relation to trading volume. Here's how you can calculate it:
MFI = (High−Low)/Volume
MFI can be used in combination with volume, so we can divide 4 states. Bill Williams introduced these to help traders interpret the interaction between volume and price movement. Here’s a quick summary:
Green Window (Increased MFI & Increased Volume): Indicates strong momentum with both price and volume increasing. Often a sign of trend continuation, as both buying and selling interest are rising.
Fake Window (Increased MFI & Decreased Volume): Shows that price is moving but with lower volume, suggesting weak support for the trend. This can signal a potential end of the current trend.
Squat Window (Decreased MFI & Increased Volume): Shows high volume but little price movement, indicating a tug-of-war between buyers and sellers. This often precedes a breakout as the pressure builds.
Fade Window (Decreased MFI & Decreased Volume): Indicates a lack of interest from both buyers and sellers, leading to lower momentum. This typically happens in range-bound markets and may signal consolidation before a new move.
For our purposes we are interested in squat bars. This is the sign that volume cannot move the price easily. This type of bar increases the probability of trend reversal. In this indicator we added to enable the MFI filter of reversal bars. If potential reversal bar or two preceding bars have squat state this bar can be interpret as a reversal one.
Backtest Results
Operating window: Date range of backtests is 2023.01.01 - 2024.12.31. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 50%
Maximum Single Position Loss: -5.29%
Maximum Single Profit: +29.99%
Net Profit: +5472.66 USDT (+54.73%)
Total Trades: 103 (33.98% win rate)
Profit Factor: 1.634
Maximum Accumulated Loss: 1231.15 USDT (-8.32%)
Average Profit per Trade: 53.13 USDT (+0.94%)
Average Trade Duration: 76 hours
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h ETH/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
Cryptocurrency SentimentOverview
This script focuses on calculating and visualizing the sentiment difference between LONG positions and SHORT positions for a selected cryptocurrency pair on the Bitfinex exchange. It provides a clean and clear visual representation of the sentiment, helping traders analyze market behavior.
Key Features
Dynamic Symbol Selection:
The script automatically detects the cryptocurrency symbol from the chart (syminfo.basecurrency) and dynamically constructs the LONGS and SHORTS ticker symbols.
Works seamlessly for pairs like BTCUSD, ETHUSD, and others available on Bitfinex.
Sentiment Calculation:
The sentiment difference is calculated as:
Sentiment Difference=−1×(100− SHORTS/LONGS ×100)
LONGS : The total number of long positions.
SHORTS : The total number of short positions.
If SHORTS is 0, the value is safely skipped to avoid division errors.
Color Coding:
The script visually highlights the sentiment difference:
Green Line: Indicates that LONG positions are dominant (bullish sentiment).
Red Line: Indicates that SHORT positions are dominant (bearish sentiment).
Zero Reference Line:
A gray horizontal line at 0 helps users quickly identify the transition between bullish (above zero) and bearish (below zero) sentiment.
How It Works
Fetching Data:
The script uses request.security to fetch LONGS and SHORTS data at the current chart timeframe (timeframe.period) for the dynamically generated Bitfinex tickers.
Handling Data:
Missing or invalid data (NaN) is filtered out to prevent errors.
Extreme spikes or irregular values are safely avoided.
Visualization:
The sentiment difference is plotted with dynamic color coding:
Green when LONGS > SHORTS (bullish sentiment).
Red when SHORTS > LONGS (bearish sentiment).
Benefits
Market Sentiment Insight: Helps traders quickly identify if the market is leaning towards bullish or bearish sentiment based on actual LONG and SHORT position data.
Dynamic and Adaptive: Automatically adjusts to the selected cryptocurrency symbol on the chart.
Clean Visualization: Focuses solely on sentiment difference with color-coded signals, making it easy to interpret.
Best Use Cases
Trend Confirmation: Use the sentiment difference to confirm trends during bullish or bearish moves.
Market Reversals: Identify potential reversals when sentiment shifts from positive (green) to negative (red) or vice versa.
Sentiment Monitoring: Monitor the overall market bias for cryptocurrencies like BTC, ETH, XRP, etc., in real-time.
Sample Chart Output
Above Zero → Green Line: Bullish sentiment dominates.
Below Zero → Red Line: Bearish sentiment dominates.
Zero Line → Transition point for shifts in sentiment.
Normalized and Smoothed Cumulative Delta for Top 5 NASDAQ StocksThis script is designed to create a TradingView indicator called **"Normalized and Smoothed Cumulative Delta for Top 5 NASDAQ Stocks."** The purpose of this indicator is to track and visualize the cumulative price delta (the change in price from one period to the next) for the top five NASDAQ stocks: Apple Inc. (AAPL), Microsoft Corporation (MSFT), Alphabet Inc. (GOOGL), Amazon.com Inc. (AMZN), and Meta Platforms Inc. (FB).
### Key Features of the Script:
1. **Ticker Selection**:
- The script focuses on the top five NASDAQ stocks by automatically setting their tickers.
2. **Price Data Retrieval**:
- It fetches the closing prices for each of these stocks using the `request.security` function for the current timeframe.
3. **Delta Calculation**:
- The script calculates the delta for each stock, which is simply the difference between the current closing price and the previous closing price.
4. **Cumulative Delta Calculation**:
- It calculates the cumulative delta for each stock by adding the current delta to the previous cumulative delta. This helps track the total change in price over time.
5. **Summing and Smoothing**:
- The cumulative deltas for all five stocks are summed together.
- The script then applies an Exponential Moving Average (EMA) with a period of 5 to smooth the summed cumulative delta, making the indicator less sensitive to short-term fluctuations.
6. **Normalization**:
- To ensure the cumulative delta is easy to interpret, the script normalizes it to a range of 0 to 1. This is done by tracking the minimum and maximum values of the smoothed cumulative delta and scaling the data accordingly.
7. **Visualization**:
- The normalized cumulative delta is plotted as a smooth line, allowing users to see the overall trend of the cumulative price changes for the top five NASDAQ stocks.
- A horizontal line is added at 0.5, serving as a midline reference, which can help traders quickly assess whether the normalized cumulative delta is above or below its midpoint.
### Usage:
This indicator is particularly useful for traders and investors who want to monitor the aggregated price movements of the top NASDAQ stocks, providing a high-level view of market sentiment and trends. By smoothing and normalizing the data, it offers a clear and concise visualization that can be used to identify potential market turning points or confirm ongoing trends.
Volume Gaps and ImbalancesThis Pine script indicator is designed to visually depict price inefficiencies, as identified by Volume Imbalances (VI) or Gaps. A Volume Gap is a scenario where the wicks of two successive candles don’t intersect, while an Imbalance occurs when only the wicks overlap, leaving the bodies apart. These zones of inefficiency frequently act as magnets for price, with the market striving rebalance in accordance with ICT principles.
Relevance:
Volume Gaps/Imbalances are zones of highly inefficient price delivery as per ICT concepts and represent a very strong draw to price. Price will often seek to rebalance those zones to ensure efficient price delivery. Consequently, these zones can provide good targets for entries in the opposite direction or take profit targets for previous entries in the direction of the Gap/Imbalance.
How It Works:
The indicator keeps track of all Gaps/Imbalances from the beginning of the available history. It automatically removes all mitigated Gaps/Imbalances, which are situations where the price has at least reached the bottom of a bullish gap or the top of a bearish gap.
On the last bar, the most recent valid gaps are highlighted with a box drawn from the start to the end of the gap. The start of a bullish gap is determined by the highest price of the previous candle’s open or close, while for bearish gaps, it’s the lowest price of the previous candle’s open or close. Conversely, the end of a bullish gap is the lowest price of the current candle’s open or close, and for bearish gaps, it’s the highest price of the current candle’s open or close.
To enhance the indicator’s speed and minimize chart noise, only the most recent gaps will be displayed, up to the limit set in the indicator settings.
Each displayed VI/GAP will indicate the size of the imbalance in ticks. For imbalances greater than 3 ticks, which represent stronger draws of liquidity, the color transparency will be reduced, and the text will be made more prominent. Volume Gaps are also marked with a 🧲 emoji for easy visual identification.
The indicator will automatically extend the boxes representing valid imbalances to the current bar for as long as the imbalance is not mitigated.
If an imbalance has been tapped, but not mitigated, the indicator will append 🚩emoji to denote that the imbalance has been partially mitigated and may no longer have as strong of a draw for price.
Configurability:
A user may configure the number of imbalances to show, the setting applies to bullish/bearish imbalances individually. This setting can be set to any value from 1 – 50.
Appearance wise, color, style and color transparency of each box representing an imbalance can be configured. The imbalance box label can be configured by setting the text size, along with the vertical & horizontal alignment.
What makes this indicator different:
Designed with high performance in mind, to reduce impact on chart render time.
Only keeps valid imbalances on the chart, with a limit on the # drawn
Indicates the size of the gap and provides visual markets to denote stronger, weaker and partially mitigated gaps
Three Bar ReversalThis script was written to make it easier to discover three bar reversal patterns.
A three bar reversal occurs when these conditions are met:
Long Setup (Reversal Up)
1. Bar 1 closes down
2. Low of Bar 2 is below the low of Bar 1 and Bar 3
3. Bar 3 closes above the high of both Bar 1 and Bar 2
Short Setup (Reversal Down)
1. Bar 1 closes up
2. High of Bar 2 is above the high of Bar 1 and Bar 3
3. Bar 3 closes below the low of both Bar 1 and Bar 2
When this indicator is added to your chart, you will see "Reversal Up" or "Reversal Down" when one of the above conditions are met.
It is recommended to use the 1 minute time frame for short scalps and 5 minute time frame for longer held day trade positions.
This indicator also has an alert option.
To enable an alert:
1. Create a new alert
2. Set condition "Reversal" and "Any alert() function call"
3. Give the alert a unique name
It is good to have an alert for different tickers and different time frames!
When the alert is triggered, you will receive a message:
Reversal up on: ticker-ID-here
or
Reversal down on: ticker-ID-here
Never miss a trade setup again!
1 Year Historical Trend AnalyzerHey everyone!
This is a new indicator of mine. If you know me, you know I really like Z-Score and there are a lot of cool things that can be done with Z-Score, especially as it pertains to trading!
This indicator uses Z-Score but in a different way from conventional Z-Score indicators (including mine). It uses Z-Score to plot out the current 1 year trend of a stock. Now, 1 year trend is not year to date (i.e. if we are in April, it is not just looking from January to April), but instead, its taking the last 1 trading year of candle data to plot out the trend, ranges and areas of z-score math based supports and resistances.
How it works:
The indicator will look at the current timeframe you are on, whether it be daily, 1 hour, 4 hours, weekly or even monthly. It will then look back the designated amount of candles that constitute 1 trading year. These are preprogrammed into the indicator so it knows to look back X number of Candles based on Y timeframe. This will give you a standard, scaled version of the past 1 year of trading data.
From there, the indicator will calculate the MAX Z-Score (or the highest Z-Score that the stock reached over the 1 trading year) and the MIN Z-score (or the lowest Z-Score that the stock reached over the 1 trading year). It plots these as a red and green line respectively:
It will then display the price that the MAX and MIN fall at. Keep in mind, the MAX and MIN price will change as the trading time elapses, but the Z-Score will remain the same until the stock does a lower or higher move from that z-score point.
It will then calculate the mean (average) of the Max and Min and then the mid points between the max and mean, and the min and mean. These all represent mathematical areas of support and resistance and key levels to watch when trading.
The indicator also has a table that is optional. The table can be toggled to either Auto or Manual. Auto will automatically calculate 5 Z-Score Points that are within the proximity of the annual trading range. However, you can select manual and input your own Z-Score values to see where the prices will fall based on the 1 year of data.
Some other options:
You can toggle on and off these midline support and resistance levels in the settings menu. Additionally, you can have the indicator plot actual scaled candles of the 1 year trading history. This is a great function to really see how the support and resistance works. Let’s take a look at RIVN, plotted as candles, on the 1 hour timeframe:
In this diagram, we can see two recent points in March where the Z-Score has acted as support for the stock. If we view this in conjunction with the actual ticker, you can see these were great buy points:
Do get this functionality, simply go into the plots menu in the settings menu and select “Plot as Candles”.
How to Use it:
While I have discussed some applications of the indicator, namely identify math supports and resistances, targets and such, there are some key things I really want to emphasize that this indicator excels at. I am going to group them for greater clarity:
All time Highs and All Time Lows:
AXP has recently been pushing ATHs. When a stock breaks an ATH or an ATL, it is said that there is no resistance or support. However, with Z-Score that is never true, there are always areas of math resistance and support. We can use this indicator to identify such areas. Let’s look at AXP:
Using this as a reference, we can see that AXP broke out of a Z-Score resistance level and re-tested the resistance as support. It held and continued up. We can see that the next area of math resistance is at 270:
And 234.65 is support. We would look for the ticker to hold this 234.65 line as support to continue the move up to the 270s.
Similar setup for ATLs with RIVN:
We can see that RIVN can indeed make a new ATL because support isn’t until 7.63.
Technical Tips on How to Use:
Because this indicator uses predefined lookback periods based on timeframes, its important that you are analyzing the data with pre-market turned off. The candles are calculated with the assumption that there is no pre-market data.
As well, the lowest timeframe that can be used to get 1 year worth of data is 1 hour. Anything below 1 hour will require you to manually input a lookback length (default is 252) which will be less than 1 year. This is simply because of the limitations of candle lookbacks through Pinescript.
That is not to say that this is not effective on smaller timeframes, it is! You just need to be sure that you understand you are not looking at a year trend worth of data. You can toggle your manual lookback parameters in the settings menu.
Concluding remarks
And that’s the indicator! I know the explanation is lengthy but I really suggest you read it carefully to understand how the indicator works and how you can best use it to analyze tickers and supplement your strategy.
Thanks for reading and safe trades as always!
swinglibraryLibrary "swinglibrary"
This library is for calculating non-repainting swings for further calculation on them.
These swings can later be drawn, but drawing is not part of this library, only the calculation.
What do I need to use the library?
You better include the following constants into your script using this library:
int SWING_NO_ACTION = 0
int SWING_FLIP = 1
int SWING_FLIP_NEW_SWING = 2
int SWING_FLIP_UPDATED = 3
int RELATION_HIGHER = 1
int RELATION_EQUAL = 0
int RELATION_LOWER = -1
Choosing the function, that fits your needs
This library contains 4 functions for calculating swings, the difference between them are the data you get for every swing point and additional average values for length and duration:
swings()
swingsR()
swingsL()
swingsLDR()
The naming scheme of these functions is the following:
The base version swings() is only for the swings containing the following swingPoint type:
swingPoint
Fields:
x (integer) : bar index
y (float) : price
hilo (integer) 1 -> high, -1 -> low
and the return type:
swingReturn
Fields:
swings (array) : array of the last x swing points
newSwingHigh (integer) : flag to detect changes for swing highs see constants (SWING_NO_ACTION, SWING_FLIP_NEW_SWING, SWING_FLIP_UPDATED)
newSwingLow (integer) : flag to detect changes for swing lows see constants (SWING_NO_ACTION, SWING_FLIP_NEW_SWING, SWING_FLIP_UPDATED)
The R in swingsR() stands for relation where the previously shown types do also contain the relation between the swings of the same swing type (highs and lows respectively).
The same goes for L in swingsL() for length containing the price difference between the current and previous swing point in ticks.
And in the following version swingsLDR() there is also the duration between the current and previous point included.
The parameters for the other functions and type definitions include only the ones, that are needed, the "full" version of the function is described here:
swingsLDR(swingSize, dtbStrength, init, SWING_HISTORY_NUM)
Parameters:
swingSize (int) This parameter defines the size of the swings to look after, meaning higher values will lead to bigger swings
dtbStrength (int) Value between 0 and 100 is a factor (%) to the ATR that is used to calculate equal highs/lows (double tops / bottoms).
Higher values will result in a higher tolerance of price difference between the swings.
init (bool) This value is usually set to false on default.
It has a special use case, where we need to reduce memory usage and calculation time on the script using this library by start calculating at x bars back instead of the beginning of the chart.
In this case, we set init = true on the first bar we start calculating the swings on to perform the correct initialization.
SWING_HISTORY_NUM (int) This is the max number of swings that are stored in the array, so only the last SWING_HISTORY_NUM swings are stored in the array to reduce the memory usage.
New ones remove the oldest ones like in a ring buffer.
This is also influencing the average duration and average swing length.
swingPointLDR
Fields:
x (integer) : bar index
y (float) : price
hilo (integer) : 1 -> high, -1 -> low
length (float) : price difference to the previous swing point in ticks
duration (integer) : duration difference to the previous swing point in number of bars
relation (integer) : see constants RELATION_HIGHER, RELATION_EQUAL, RELATION_LOWER: reelation to the previous swing points of the same type (previous high or previous low respectively)
swingReturnLDR
Fields:
swings (array) : array of the last x swing points
newSwingHigh (integer) : flag to detect changes for swing highs see constants (SWING_NO_ACTION, SWING_FLIP_NEW_SWING, SWING_FLIP_UPDATED)
newSwingLow (integer) : flag to detect changes for swing lows see constants (SWING_NO_ACTION, SWING_FLIP_NEW_SWING, SWING_FLIP_UPDATED)
avSwLength (float) : average swing length for the last x swings (depending on the max number of swings)
avSwingDuration (float) : average swing duration for the last x swings (depending on the max number of swings)