Doji Hunter█ OVERVIEW
This script is built to search for 8 different Doji candlestick patterns in markets and makes them appear on screen with bar coloring and creating color-coded labels/shapes. It will identify the following variants based upon user input for various rules to abide by:
Gapping Up
Gapping Down
Gravestone
Dragonfly
Long-Legged
Rickshaw Man
Northern (Doji in uptrend)
Southern (Doji in downtrend)
Note: for the remainder of this description, the types for inputs will be marked by italic text.
█ OPTIONS
This script features a wide range of options available to the user to modify how it functions. The first set of inputs dictate how the trend analysis is done with moving averages. The second and third sets of inputs dictate specific rules for how Doji candles are analyzed and the colors used for when they appear.
█ INPUTS (short)
1 — Moving Average Rules:
The Northern and Southern Doji variants require some trend analysis which will be done by Moving Averages. The inputs in this section change various things about the moving average(s) to be used. In the second section of inputs, there is one boolean option that will nullify the need for trend detection and consolidates the Northern and Southern Doji variants into one.
2/3 — Doji Rules and Colors:
The next two sections of inputs correspond to the various rules that dictate how various doji variants will be analyzed, as well as the colors that correspond to each variant. The colors will also apply to each of the labels/shapes used.
4 — Diagnostics:
The last boolean will allow the user to see extra detail with regards to how and when dojis are detected. Note: This is not a part of any prior section and is simply included as a last functional item to the list of all inputs.
An example of multiple labels being shown on screen for various types of Dojis (DJI 1D chart):
█ INPUTS (extended)
1 — Moving Average Rules:
This section consists of 10 different inputs specific to the rules on how the moving average functions for trend analysis.
"Trend Rule" ( string list) determines which Moving Average will be used for trend detection. It has 3 options: "MA 1", "MA 2", or "BOTH". The second input "Trend Source" determines which OHLC (or combination) value to use in comparison to either MA 1 or MA 2 (EX: Trend Rule -> "MA 1" and Trend Source -> "close": if close > MA 1 -> uptrend, downtrend otherwise). If "BOTH" is selected then "Trend Source" is ignored and added nuance in the script ensures that the shorter MA being above the longer MA yields an uptrend (downtrend otherwise).
The next 8 inputs focus on 4 different parts of both MA 1 and 2.
Length ( integer(s) )
Color
Switch between SMA/EMA ( boolean(s) )
Source for MA
Note: Additional attention to detail has been made here as trend direction is ignored if "BOTH" is selected for the MA Rules and the lengths of both Moving Averages are set to be the same.
2/3 — Doji Rules and Colors:
The next two sections include 19 inputs that are related to how this script will analyze and identify the different variants of Doji candles.
"Identify Pattern On Close" ( boolean ) modifies which candles are to be used for determining when Doji candles are recognized. This changes an offset used for historical reference on some global variables which will force the script to only identify patterns after the current candle has closed.
"Doji Body Tolerance" ( float ) tells the script the maximum % the candle body may be of the high-low range to be considered a Doji candle.
"Doji Wick Sample" ( integer ) defines how many prior candles to sample from in calculating the current average upper and lower wick sizes.
"Simplify Northern/Southern Dojis" ( boolean ) makes this script ignore trend direction for Doji detection and consolidates Northern and Southern Dojis into being recognized as the same. This has an added effect of removing the plotted moving averages from the screen.
"Northern/Southern Display" ( string list ) that has multiple options for how Northern and Southern Dojis will be displayed on screen. Because of how labels may be extremely taxing on TradingView's servers to display, the default setting is "shapes" where Northern and Southern (N/S) Dojis will be marked with a colored triangle at the top of the candle. If "Simplify Northern/Southern Dojis" is true, all N/S Dojis will be marked with an x-cross instead. Other options include "labels" which enables the use of labels accompanied by their respective tooltip and color, or "none" where N/S Dojis will be only noticeable by their changed barcolor.
"Allow Gravestone/Dragonfly Shadows" ( boolean ) allows a bit of additional nuance to the definition of Gravestone or Dragonfly Dojis with small shadows.
"Gravestone/Dragonfly Shadow Tolerance" ( float ) defines the maximum % that the lower wick/upper wick (respectively) may be relative to the high-low range for Gravestone or Dragonfly Dojis to still be considered valid.
"Doji Long Wick Setting" ( string list) is a list of settings for three different ways of confirming if a Doji is Long-Legged. The settings are "one", "two", and "average". These define how many wick lengths of a candle need to exceed the calculated average wick lengths (EX: "both" -> upper wick length > upper wick average and lower wick length > lower wick average). The "average" setting will combine the lengths of both wicks and both prior wick averages, divide both of these sums by 2 and compare them instead.
"Doji Long Wick Tolerance" ( float ) defines how large compared to the averages that wick lengths need to be in order for them to be considered "Long-Legged" (EX: 1.50 -> upper/lower wick needs to exceed 150% the average of previous upper/lower wicks).
"Rickshaw Man Body Placement Tolerance" ( float ) defines how close to the high-low range's midpoint the candle body's midpoint needs to be in order for it to be considered a Rickshaw Man Doji candle instead.
The remaining 9 inputs define the colors to use for differentiating between all Doji variants this script will recognize.
█ USAGE
My hope for this script is that users find this easy to use/understand and will tinker with the input values to better identify Doji candlesticks across a wide range of markets.
Suggestions for changes in the future are welcome.
ค้นหาในสคริปต์สำหรับ "text"
Logging in Pine ScriptI'm building quite a lot of pretty complicated indicators/strategies in Pine Script. Quite often they don't work from the 1 try so I have to debug them heavily.
In Pine Script there are no fancy debuggers so you have to be creative. You can plot values on your screens, check them in the data window, etc.
If you want to display some textual information, you can plot some info as labels on the screen.
It's not the most convenient way, so with the appearance of tables in Pine Script, I decided to implement a custom logger that will allow me to track some useful information about my indicator over time.
Tables work much better for this kind of thing than labels. They're attached to your screen, you can nicely scale them and you can style them much better.
The idea behind it is very simple. I used few arrays to store the message, bar number, timestamp, and type of the message (you can color messages depend on the type for example).
There is a function log_msg that just append new messages to these arrays.
In the end, for the last bar, I create the table and display the last X messages in it.
In parameters, you can show/hide the entire journal, change the number of messages displayed and choose an offset. With offset, you can basically scroll through the history of messages.
Currently, I implemented 3 types of messages, and I color messages according to these types:
Message - gray
Warning - yellow
Error - red
Of course, it's a pretty simple example, you can create a much fancier way of styling your logs.
What do you think about it? Is it useful for you? What do you use to debug code in Pine Script?
Disclaimer
Please remember that past performance may not be indicative of future results.
Due to various factors, including changing market conditions, the strategy may no longer perform as good as in historical backtesting.
This post and the script don’t provide any financial advice.
Hull MA with BB (With Alerts)This is a combination of the standard Bollinger bands with a VWAP(Pink line), and the 'Hull Trend with Kahlman' script by user capissimo, and the NMA (Moving Average 3.0 (3rd Generation)) script by everget.
You can find the original scripts here:
This indicator gives you several confirmations of a good entry and exit positions for Crypto currency like bitcoin and most alt coins. I use this on a 15min, 30min, 1hour, and 4hour chart for best results.
How to use:
Entry Signals:
-A candle closes above the NMA (Yellow Step Line). AND
-You see a Long (text) flag. AND
-The candles are near the bottom of the Bollinger bands and heading upwards.
Exit Signals:
-Candles have passed below and closed below the NMA (Yellow Step Line). AND
-You see a Short (text) flag.
It's important to use these confirmations with other indicators so you have the best entry/exit positions, and make sure you are on normal candles and not HA or any other types.
There are alerts built in that you can setup for the Short and Long text flags that you see. These are generally good alerts to follow. I use the alerts as a reminder to check the charts and see if my other indicators line up for a good trade.
Exploring UnicodeThis script demonstrates how to display Unicode characters and symbols, including emoji, in Pine:
• Part 1 displays multi-line labels on hi/lo pivots.
• Part 2 displays price/volume bumps using small up/down arrows plotted with plotchar() .
• Part 3 detects bounces and uses plotshape() to mark them.
You can use our `f_bounceFrom()` function from this part as confirmation for signals in your strategies.
Note that the labels displayed on pivots with the code in Part 1 are plotted in the past. In realtime, they would only appear where they are after 50 bars have elapsed from that point. The other plots are plotted on the bar where their conditions are detected.
You can display thousands of Unicode characters and symbols using Pine. As you can see with our script, it is very easy to do so. The challenge will often be to find the exact symbols you are looking for. Many websites exist to help you explore Unicode characters or symbols. The PineCoders Resources page contains a section presenting a few of them.
Duyck has a Unicode font function script containing functions to convert strings to monospaced Unicode representations. TradingView uses the Trebuchet font for most of its text, including text displayed with Pine scripts. While its numerals are monospace and will align vertically in labels text, Duyck's functions will be handy when you need to convert characters to a monospaced form, so they also align vertically in multi-line labels.
What is Unicode?
Unicode is to character encoding what Wikipedia is to knowledge; it holds codes to a good proportion of the characters or symbols used by humans, past or present. In the early days of computing, environments from different manufacturers often used different character encoding schemes, making transport between them difficult. Unicode solves that challenge. It is a comprehensive encoding scheme that visionaries from Xerox and Apple came up with in the late 80's. The addition of members from the Research Libraries Group, Sun Microsystems, Microsoft, Next and Metaphor created the "Unicode working group" and later, the Unicode Consortium , which continues to improve and manage the Unicode standard.
Theoretically, Unicode encodes values representing characters or glyphs —not their pictorial representations. The letters "A" or "a", or the blue heart emoji "💙" are each represented by a Unicode value. In practice, however, there are many different versions of the Latin alphabet in Unicode. That is how our low pivot label can display different representations of the letters "ITV". The exact rendition of Unicode symbols on a specific device is left to equipment manufacturers and typeface designers.
The current Unicode space is comprised of 17 planes of 65,536 characters each, which allows for more than one million code points . Planes are further divided into character blocks , which typically hold a character set corresponding to one script—or language. Emoticons are in the character block starting at U+1F600.
Look first. Then leap.
Annualized Futures Spread2つの銘柄間のスプレッドを年率換算してオシレーターの枠に表示するスクリプトです。
(BTCUSD現物とBTC-0625先物契約のような2銘柄間で使用することを想定しています。)
設定で年率換算していない生の乖離率の表示に切り替えることも可能です。
初期設定ではFTXの BTCUSDとBTCUSD-0624、BTCUSDとBTC-1231、ETHUSDとETH-0625 が指定されています。
そのまま使用しても構いませんし、設定やソースコードを編集して活用してくださって構いません。
ーーーーーーーーーーーーー
This custom script can be used to display the annualized spread rate between two specified symbols like BTCUSD and BTC-0625.
It is also possible to display raw spreads that are not annualized. (Just simply clicking the checkbox in setting.)
The default settings are BTC0625 and BTCUSD, BTC1231 and BTCUSD, and ETH0625 and ETHUSD on FTX Exchange.
You may use it as-is, or edit the settings or modify the source code as you like.
(This script was removed due to a violation of the English-Only house rule once, so this is a repost with a revised title and text.)
String Manipulation Framework [PineCoders FAQ]█ OVERVIEW
This script provides string manipulation functions to help Pine coders.
█ FUNCTIONS PROVIDED
f_strLeft(_str, _n)
Function returning the leftmost `_n` characters in `_str`.
f_strRight(_str, _n)
Function returning the rightmost `_n` characters in `_str`.
f_strMid(_str, _from, _to)
Function returning the substring of `_str` from character position `_from` to `_to` inclusively.
f_strLeftOf(_str, _of)
Function returning the sub-string of `_str` to the left of the `_of` separating character.
f_strRightOf(_str, _of)
Function returning the sub-string of `_str` to the right of the `_of` separating character.
f_strCharPos(_str, _chr)
Function returning the position of the first occurrence of `_chr` in `_str`, where the first character position is 0. Returns -1 if the character is not found.
f_strReplace(_src, _pos, _str)
Function that replaces a character at position `_pos` in the `_src` string with the `_str` character or string.
f_tickFormat()
Function returning a format string usable with `tostring()` to round a value to the symbol's tick precision.
f_tostringPad(_val, _fmt)
Function returning a string representation of a numeric `_val` using a special `_fmt` string allowing all strings to be of the same width, to help align columns of values.
`f_tostringPad()`
Using the functions should be straightforward, but `f_tostringPad()` requires more explanations. Its purpose is to help coders produce columns of fixed-width string representations of numbers which can be used to produce columns of numbers that vertically align neatly in labels, something that comes in handy when, for example, you need to center columns, yet still produce numbers of various lengths that nonetheless align.
While the formatting string used with this function resembles the one used in tostring() , it has a few additional characteristics:
• The question mark (" ? ") is used to indicate that padding is needed.
• If negative numbers must be handled by the function, the first character of the formatting string must be a minus sign ("-"),
otherwise the unary minus sign of negative numbers will be stripped out.
• You will produce more predictable results by using "0" rather than "#" in the formatting string.
You can experiment with `f_tostringPad()` formatting strings by changing the one used in the script's inputs and see the results on the chart.
These are some valid examples of formatting strings that can be used with `f_tostringPad()`:
"???0": forces strings to be four units wide, in all-positive "int" format.
"-???0": forces strings to be four units wide, plus room for a unary minus sign in the first position, in "int" format.
"???0.0": forces strings to be four units wide to the left of the point, all-positive, with a decimal point and then a mantissa rounded to a single digit.
"-???0.0?": same as above, but adds a unary minus sign for negative values, and adds a space after the single-digit mantissa.
"?????????0.0": forces the left part of the float to occupy the space of 10 digits, with a decimal point and then a mantissa rounded to a single digit.
█ CHART
The information displayed by this indicator uses the values in the script's Inputs, so you can use them to play around.
The chart shows the following information:
• Column 0 : The numeric input values in a centered column, converted to strings using tostring() without a formatting argument.
• Column 1 : Shows the values formatted using `f_tostringPad()` with the formatting string from the inputs.
• Column 2 : Shows the values formatted using `f_tostringPad()` but with only the part of the formatting string left of the decimal point, if it contains one.
• Column 3 : Shows the values formatted using `f_tostringPad()` but with the part of the formatting string left of the decimal point,
to which is added the right part of the `f_tostringPad()` formatting string, to obtain the precision in ticks of the symbol the chart is on.
• Column 4 : Shows the result of using the other string manipulation functions in the script on the source string supplied in the inputs.
It also demonstrates how to split up a label in two distinct parts so that you can vertically align columns when the leftmost part contains strings with varying lengths.
You will see in our code how we construct this column in two steps.
█ LIMITATIONS
The Pine runtime is optimized for number crunching. Too many string manipulations will take a toll on the performance of your scripts, as can readily be seen with the running time of this script. To minimize the impact of using string manipulation functions in your scripts, consider limiting their calculation to the first or last bar of the dataset when possible. This can be achieved by using the var keyword when declaring variables containing the result of your string manipulations, or by enclosing blocks of code in if blocks using barstate.isfirst or barstate.islast .
█ NOTES
To understand the challenges we face when trying to align strings vertically, it is useful to know that:
• As is the case in many other places in the TadingView UI and other docs, the Pine runtime uses the MS Trebuchet font to display label text.
• Trebuchet uses proportionally-spaced letters (a "W" takes more horizontal space than an "I"), but fixed-space digits (a "1" takes the same horizontal space as a "3").
Digits all use a figure space width, and it is this property that allows us to align numbers vertically.
The fact that letters are proportionally spaced is the reason why we can't vertically align columns using a "legend" + ":" `+ value structure when the "legend" part varies in width.
• The unary minus sign is the width of a punctuation space . We use this property to pad the beginning of numbers
when you use a "-" as the first character of the `f_tostringPad()` formatting string.
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
█ THANKS
Thanks to LonesomeTheBlue for the `f_strReplace()` function.
Look first. Then leap.
Joined and Sliced String ArrayUsing the new Pine Script array built-ins to join string elements together for label text. The array is sliced to remove extraneous elements.
Buy/Sell IndicatorBased on logic from many top contributors here, the script utilizes LazyBear's WaveTrend Oscillator Indicator along with custom code to plot a few key components for daily trading;
Boundaries for entry and exit points which are based on a 6-day trend in OPEN/HIGH and OPEN/LOW prices.
Daily HIGH and LOW points to establish a good view of stock's movements
Entry and exit points with confidence levels. These can be treated as entry points for short to medium term investments
Entry points come in the colours of White and Lime, where white is slightly confident and lime is extremely confident
Exit points come in the colours of Maroon, and Red, where maroon is slightly confident and red is extremely confident
Each Entry and Exit point also comes without text, or with a M or H above it, where M indicates medium confidence on the point and an O indicates overconfidence.
Use Case:
The best possible use case is to enter a trade on a LIME point with O text, this means that is an overconfident entry point.
The trade should be exited on a RED point with O text, this means that is an overconfident exit point.
But you can do with the indicators as you please.
In addition to LazyBear's code, the following existing models and indicators are taken into account:
RSI of closing price over a period of 25
EMA of RSI
Trend Follower - Light Mode | jhFollow up script for my Trend Follower script.
I'm used to dark mode, so I coded a few key plots in white, so those are changed into black on the script.
Notably:
- > 1 ATR in black dots along the baseline
- Current and previous ATR text labels to the right of the price
- A text label spacing input that allows you to adjust the spacing for text label from price.
This is a trend following system that combines 3 indicators which provide different functionalities, also a concept conceived by VP's No Nonsense FX / NNFX method.
1. Baseline
The main baseline filter is an indicator called Modular Filter created by Alex Grover
- www.tradingview.com
- Alex Grover - Modular Filter
-------
That's the moving average like baseline following price, filtering long and short trends and providing entry signals when the price crosses the baseline.
Entry signal indicated with arrows.
2. Volume/Volatility, I will called it Trend Strength
The next indicator is commonly known as ASH, Absolute Strength Histogram.
This indicator was shared by VP as a two line cross trend confirmation indicator, however I discovered an interesting property when I modified the calculation of the histogram.
- Alex Grover Absolute Strength
-------
My modification and other info here
- Absolute Strength Histogram v2
-------
I simplified the display of the trend strength by plotting squares at the bottom of the chart.
- Lighted Squares shows strength
- Dimmed Squares shows weakness
3. Second Confirmation / Exits / Trailing Stop
Finally the last indicator is my usage of QQE (Qualitative Quantitative Estimation), demonstrated in my QQE Trailing Line Indicator
- QQE Trailing Line for Trailing Stop
-------
Three usages of this amazing indicator, serving as :
- Second trend confirmation
- Exit signal when price crosses the trailing line
- Trailing stop when you scaled out the second trade
This indicator is plotted with crosses.
Additional plots and information
Bar Color
- Green for longs, Red for shorts, White when the baseline direction conflicts with the QQE trailing line direction
- When it's white, it's usually ranging and not trending, ASH will also keep you off ranging periods.
-------
ATR Filter
- White circles along the baseline, they will show up if the price has moved more than one ATR from the baseline
- The default allowance is 1 ATR.
-------
The previous and current ATR value
- Label on the right side of the chart showing the previous and current value of ATR
Strategy Death To The Bear Simple strategy for the indicator "Death To The Bear".
Simple rules:
- Entry according to the selected weapons.
- Take profit 1 (TP1) in% of daily ATR (can be set, default 20%)
- Active Stop in Breakeven when I take profit in TP1.
- Take profit 2 (TP1) in% of daily ATR (can be set, default 30%)
* Pyramidization can be changed from the configuration (maximum number of tickets to average your price)
* Many do not like to pyramid, but I can assure you that with good management, and good choice of the instrument and time frame, you will get good money.
Note: at the request of some people who cannot see the EMOJI in the configuration you can choose TEXT.
Thumbs up
Craig Cobb Cradle Strategy//@version=5
strategy("Craig Cobb Cradle Strategy", overlay=true, margin_long=100, margin_short=100)
// ─────────────────────────────────────────────
// Inputs
// ─────────────────────────────────────────────
emaLenFast = input.int(10, "Fast EMA")
emaLenSlow = input.int(20, "Slow EMA")
smallCandlePct = input.float(0.35, "Small candle max size (% of ATR)")
// MACD Inputs
fastLength = input.int(12)
slowLength = input.int(26)
signalLength = input.int(9)
// ─────────────────────────────────────────────
// EMAs (Cradle Zone)
// ─────────────────────────────────────────────
ema10 = ta.ema(close, emaLenFast)
ema20 = ta.ema(close, emaLenSlow)
plot(ema10, color=color.yellow, title="10 EMA")
plot(ema20, color=color.orange, title="20 EMA")
inCradleZone = low <= ema10 and high >= ema20 or low <= ema20 and high >= ema10
// Trend alignment
bullTrend = ema10 > ema20
bearTrend = ema10 < ema20
// ─────────────────────────────────────────────
// MACD + signal line
// ─────────────────────────────────────────────
macd = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signal = ta.ema(macd, signalLength)
hist = macd - signal
// MACD confluence: Signal line moving in trend direction
macdBull = signal > signal // signal rising
macdBear = signal < signal // signal falling
// ─────────────────────────────────────────────
// Small Cradle Candle (the trigger candle)
// Candle must be small relative to ATR
// ─────────────────────────────────────────────
atr = ta.atr(14)
candleSize = high - low
smallCandle = candleSize <= atr * smallCandlePct
// Bullish small candle
bullishCandle = close > open and smallCandle
// Bearish small candle
bearishCandle = close < open and smallCandle
// ─────────────────────────────────────────────
// Cradle Entry Conditions
// ─────────────────────────────────────────────
longEntry = bullTrend and inCradleZone and bullishCandle and macdBull
shortEntry = bearTrend and inCradleZone and bearishCandle and macdBear
// ─────────────────────────────────────────────
// Plot signals
// ─────────────────────────────────────────────
plotshape(longEntry, title="Long Cradle", style=shape.labelup, color=color.lime, text="Cradle Long")
plotshape(shortEntry, title="Short Cradle", style=shape.labeldown, color=color.red, text="Cradle Short")
// ─────────────────────────────────────────────
// Alerts
// ─────────────────────────────────────────────
alertcondition(longEntry, title="Cradle Long Alert", message="Cradle long setup detected")
alertcondition(shortEntry, title="Cradle Short Alert", message="Cradle short setup detected")
// Strategy entry (optional)
if longEntry
strategy.entry("Long", strategy.long)
if shortEntry
strategy.entry("Short", strategy.short)
Etherium CME gaps multi-timeframe auto finderThis indicator is a powerful tool that automatically detects and visualizes price gaps (Gaps) in the Ethereum CME futures market across multiple timeframes and also provides alert functionality. Price gaps occur when the futures market is inactive for a certain period, often acting as potential support or resistance zones.
What is an Ethereum CME Gap?
CME (Chicago Mercantile Exchange) is one of the largest derivatives exchanges globally. The Ethereum CME futures market is closed on weekends and certain holidays. When the market reopens, a price difference may occur between the previous closing price and the new opening price, referred to as a "CME Gap."
Key Features of the Indicator
Multi-timeframe gap detection: Detects and displays gaps across 5m, 15m, 30m, 1h, 4h, 1d timeframes simultaneously.
Customizable CME Symbol: You can specify Ethereum CME futures symbols, such as ETH1!.
Two gap price display methods:
CME_price: Displays the gap based on the actual price levels in the CME futures market.
Chart_price: Adjusts the gap to match the price levels on the chart being viewed (e.g., spot market). This helps visualize the impact of futures gaps on the spot market.
Visual customization:
Individual color settings for bullish/bearish gap boxes for each timeframe.
Adjust the extension (display length) of gap boxes in bars.
Configure label display, position, text size, background, and text color.
Highlight significant gaps: Emphasize gaps above a specified percentage with a unique color and border thickness.
Alert functionality: Receive notifications when a gap is detected, with options to enable alerts only for specific timeframes.
Why CME Gaps Matter
Traders often consider CME gaps as significant price zones.
Gap Fill: Historical data shows that many gaps tend to get "filled" over time, meaning the price returns to the gap area, reaching the start or end point of the gap.
Support/Resistance: Unfilled gaps can serve as potential support (Bullish Gap) or resistance (Bearish Gap) zones.
Bullish Gap: Occurs when the current opening price is higher than the previous closing price. Typically leaves an unfilled gap below (previous high), which can act as potential support.
Bearish Gap: Occurs when the current opening price is lower than the previous closing price. Typically leaves an unfilled gap above (previous low), which can act as potential resistance.
How to Use the Indicator
Add Indicator on TradingView: Click the "Indicators" button on the TradingView chart.
Find the indicator in "My Scripts" or "Invite-Only Scripts" and add it to the chart.
Adjust Settings: Once the indicator is added, click the settings (gear) icon to adjust inputs.
CME Symbol (ETH): ETH1! is typically the default symbol for Ethereum CME futures. Confirm based on your broker or data feed.
Min gap %: Set the minimum gap size in percentage; smaller gaps will not be displayed.
Select Exchanges to Display gap price: Choose between "CME_price" or "Chart_price." For viewing futures gaps on a spot chart, "Chart_price" is recommended.
Show Xm/h/d gap boxes: Select which timeframe gap boxes to display.
Color, Extension, Label settings: Customize the visual aspects of gap boxes and labels.
Highlight gap % (>=): Set the minimum percentage for highlighting significant gaps.
Enable Alerts: Choose whether to receive alerts when a gap is detected.
Alert Timeframe: Select whether alerts apply to all timeframes or specific ones only.
Chart Analysis
Once the indicator is applied, gap boxes for the selected timeframes appear on the chart.
Green shades indicate Bullish Gaps, and red shades indicate Bearish Gaps (default green can be customized, and bearish gap color can be set separately).
Highlighted gaps may carry higher significance and should be monitored carefully.
Potential trading opportunities can be explored when the price approaches or attempts to fill a gap.
Usage Strategies (Examples)
Support/Resistance Confirmation: The lower boundary of a bullish gap can act as potential support, while the upper boundary of a bearish gap can act as potential resistance. Observe for reversals or breakouts when price reaches these areas.
Retracement Trading: Trade when the price returns to fill a gap after leaving it through a sharp move up or down.
Multi-timeframe Analysis: Gaps overlapping across multiple timeframes can form stronger support/resistance zones.
Considerations
* "Gap Filled" Condition: The indicator does not draw a gap if it determines that the gap has already been filled by the current bar’s low (bullish gap) or high (bearish gap).
* Tool Only: This indicator is a gap detection tool and should not be used alone for trading decisions. Always combine with other technical analysis tools and your trading strategy.
* Past Data ≠ Future Guarantee: Historical gap fill trends do not guarantee future occurrences.
This indicator allows effective tracking of Ethereum CME futures gaps and provides valuable insights for enhancing your trading strategy.
Previous Session Lines — High, Low, and 50% LevelsThis indicator automatically marks the previous completed session’s price range on your chart. You select a daily session window (for example: 09:30–16:00) and the script calculates:
* Previous Session High
* Previous Session Low
* Previous Session 50% (Midpoint)
When a session closes, the indicator draws all three levels on the chart and extends them forward for 24 hours, giving you clean, stable reference levels for the current trading day. Only the most recent session is shown; older sessions are automatically removed.
These levels are commonly used by day traders and swing traders to identify:
* Key support and resistance zones
* Breakout or rejection levels
* Market bias for the new session
* Areas where liquidity tends to accumulate
* Price reaction levels during overnight or intraday trading
Because the lines do not update in real time during the session, the levels remain static, accurate, and truly represent the completed session.
Settings users can adjust:
Session Settings:
* Start and end time of the session (repeats daily)
* Custom session name, which appears on the line labels
Line Appearance:
* Color
* Line thickness
* Line style (solid, dashed, dotted)
Label Appearance:
* Text size (tiny to huge)
* Text color automatically adjusts to contrast with the selected line color
Why this indicator is useful:
* Makes prior session structure immediately visible
* Helps identify high-probability reaction areas
* Shows only one session to reduce clutter
* Lines stay stable regardless of chart zoom or scaling
* Labels stay aligned at the right side of the chart
* Works on all timeframes, including extended hours and crypto charts
This tool is ideal for traders who rely on structured session analysis, including day traders, futures traders, forex traders, crypto traders, and anyone using session highs and lows to guide trading decisions.
This was developed to create an auto-mapping tool to comply with MrZinc's "London 50" strategy. You can learn more about that on his YouTube channel www.youtube.com
You can follow my YouTube trading channel here
www.youtube.com
ATR EMA Bands (Kerry Lovvorn Style) - Fixed Scale//@version=5
indicator("ATR EMA Bands (Kerry Lovvorn Style) - Fixed Scale",
overlay = true,
scale = scale.right, // ⭐ 强制使用右侧价格刻度
precision = 2)
// ——— 参数 ———
src = input.source(close, "Source")
emaLength = input.int(34, "EMA Length")
atrLength = input.int(13, "ATR Length")
atrMult1 = input.float(1.0, "ATR ×1")
atrMult2 = input.float(2.0, "ATR ×2")
atrMult3 = input.float(3.0, "ATR ×3")
// ——— 计算 ———
ema = ta.ema(src, emaLength)
atr = ta.atr(atrLength)
// 上下轨
upper1 = ema + atr * atrMult1
upper2 = ema + atr * atrMult2
upper3 = ema + atr * atrMult3
lower1 = ema - atr * atrMult1
lower2 = ema - atr * atrMult2
lower3 = ema - atr * atrMult3
// ——— 绘图 ———
plot(ema, "EMA", color = color.white, linewidth = 2)
plot(upper1, "Upper 1×ATR", color = color.new(color.green, 0))
plot(upper2, "Upper 2×ATR", color = color.new(color.green, 30))
plot(upper3, "Upper 3×ATR", color = color.new(color.green, 60))
plot(lower1, "Lower 1×ATR", color = color.new(color.red, 0))
plot(lower2, "Lower 2×ATR", color = color.new(color.red, 30))
plot(lower3, "Lower 3×ATR", color = color.new(color.red, 60))
// ——— 可选:在当前 K 线上标记数值,方便你肉眼对比 ———
showDebug = input.bool(false, "Show Debug Labels (for checking value vs position)")
if showDebug
var label lb = na
if barstate.islast
label.delete(lb)
txt = "EMA: " + str.tostring(ema, format.mintick) + "\n" +
"U1: " + str.tostring(upper1, format.mintick) + "\n" +
"U2: " + str.tostring(upper2, format.mintick) + "\n" +
"U3: " + str.tostring(upper3, format.mintick)
lb := label.new(bar_index, upper1, txt, style = label.style_label_right, textcolor = color.white, color = color.new(color.black, 40))
INFOMATION BOARD5-Line Indicator Description (English)This indicator displays a dynamic information board directly on the chart.It features a bright red background with bold white text for maximum visibility.The message can blink at adjustable speeds to attract user attention.Users may customize text size and vertical screen placement.Designed for alerts, warnings, or educational disclaimers without cluttering the chart
RSI MTF 15m + 1h (Oriol)//@version=5
indicator("RSI MTF 15m + 1h (Oriol)", overlay = false, timeframe = "", timeframe_gaps = true)
// ─── PARÀMETRES ─────────────────────────────────────────────
rsiLength = input.int(14, "Període RSI")
src = input.source(close, "Font de preu")
tfFast = input.timeframe("15", "Timeframe ràpid (RSI 15m)")
tfSlow = input.timeframe("60", "Timeframe lent (RSI 1h)")
showSignals = input.bool(true, "Mostrar senyals LONG/SHORT")
// ─── RSI MULTITIMEFRAME ────────────────────────────────────
// RSI del timeframe ràpid (per defecte 15m)
src_fast = request.security(syminfo.tickerid, tfFast, src)
rsi_fast = ta.rsi(src_fast, rsiLength)
// RSI del timeframe lent (per defecte 1h)
src_slow = request.security(syminfo.tickerid, tfSlow, src)
rsi_slow = ta.rsi(src_slow, rsiLength)
// ─── DIBUIX RSI ─────────────────────────────────────────────
plot(rsi_fast, title = "RSI ràpid (15m)", color = color.new(color.aqua, 0), linewidth = 2)
plot(rsi_slow, title = "RSI lent (1h)", color = color.new(color.orange, 0), linewidth = 2)
hline(70, "Sobrecomprat", color = color.new(color.red, 70), linestyle = hline.style_dashed)
hline(30, "Sobrevenut", color = color.new(color.lime, 70), linestyle = hline.style_dashed)
hline(50, "Mitja", color = color.new(color.gray, 80))
// ─── CONDICIONS D’EXEMPLE ───────────────────────────────────
// LONG: RSI 1h < 40 i RSI 15m creua cap amunt 30
// SHORT: RSI 1h > 60 i RSI 15m creua cap avall 70
longCond = (rsi_slow < 40) and ta.crossover(rsi_fast, 30)
shortCond = (rsi_slow > 60) and ta.crossunder(rsi_fast, 70)
// ─── SENYALS (SENSE SCOPE LOCAL) ────────────────────────────
plotshape(showSignals and longCond,
title = "Possible LONG",
style = shape.triangleup,
location = location.bottom,
color = color.new(color.lime, 0),
size = size.small,
text = "LONG")
plotshape(showSignals and shortCond,
title = "Possible SHORT",
style = shape.triangledown,
location = location.top,
color = color.new(color.red, 0),
size = size.small,
text = "SHORT")
// ─── ALERTES ────────────────────────────────────────────────
alertcondition(longCond, title = "Senyals LONG RSI 15m+1h",
message = "Condició LONG RSI 15m + 1h complerta")
alertcondition(shortCond, title = "Senyals SHORT RSI 15m+1h",
message = "Condició SHORT RSI 15m + 1h complerta")
MTF Candle Countdown — HUD V1 (By Price-Action-Art)
MTF Candle Countdown — HUD V1 (By Price-Action-Art)
A clean, lightweight HUD that shows you exactly how much time is left in multiple higher-timeframe candles — all in one place.
This tool is designed for traders who rely on multi-timeframe precision.
Instead of constantly switching charts or checking timers, the HUD gives you a real-time countdown for up to six timeframes (Daily, 4H, 1H, 30m, 15m, 5m by default).
You can fully customize the timeframes, text size, and HUD position on your chart.
Perfect for:
Intraday and scalping timing
Swing traders waiting for HTF candle closes
ICT / SMC structure-based traders
Anyone who needs exact candle close timing without distractions
Features:
Real-time multi-timeframe candle countdown
Fully adjustable HUD placement (all corners)
Customizable timeframes and text size
Clean, minimal, and non-intrusive design
Updates only on the last bar for performance efficiency
Optional border for a sharper HUD look
Whether you’re waiting for a Daily close to confirm structure or timing your entries around 5m/15m candles, this HUD keeps everything visible and precise at a glance.
If you find this tool helpful, feel free to like, comment, and follow — it motivates me to keep releasing more tools for the community.
5m FVGs Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
[Statistics] killzone SFPSFP Statistics (ICT Sessions)
This indicator automatically finds and draws the high and low of the Asia, London, and New York trading sessions. It then hunts for Swing Failure Patterns (SFPs) that sweep these key session levels.
The main purpose of this script is to gather statistics on when these high-probability SFPs occur, allowing you to map out and identify the times of day when they are most frequent.
How to Use This Indicator
Set Your SFP Timeframe: In the settings, choose the timeframe you want to hunt for SFPs on (e.g., 1H, 15m). Important: You must also set your main chart to this exact same timeframe for the statistics to be collected correctly.
Define Your Sessions: Go to the "Session Definitions" tab.
Set the Global Timezone to your preferred trading timezone (e.g., "America/New_York"). This controls all session times and table times.
Adjust the start and end times for Asia, London, and NY AM sessions.
You can turn off sessions you don't want to track (like NY Lunch or NY PM).
You can also change the colors and text style for the session boxes here.
Set Confirmation Bars: In "SFP Engine Settings," the "Confirmation Bars" (default is 2) defines how many bars must close after the SFP bar without invalidating the level. An SFP is only "confirmed" and drawn after this period.
0 = Confirms immediately on the SFP candle's close.
2 = Confirms 2 bars after the SFP candle's close.
Read the Statistics: The "Custom SFP Statistics" table will appear on your chart. This table logs every confirmed SFP and tells you:
Which time of day they happen most.
How many were Bearish (swept a high) vs. Bullish (swept a low).
It's set by default to show the "Top 20" most frequent times, sorted chronologically.
Filter Your Chart (Optional): If your chart feels cluttered, go to "Visual Time Filter" and turn it ON.
Set a time window (e.g., "09:30-11:00").
The indicator will now only draw SFP signals that occurred within that specific time window. This is perfect for focusing on a single killzone.
How to Set Up Alerts
You can set up server-side alerts to be notified every time a new SFP is confirmed.
Check the "Enable SFP Alerts" box at the top of the indicator's settings.
Click the "Alert" button (alarm clock icon) on the TradingView toolbar.
In the "Condition" dropdown, select "SFP Statistics (ICT Sessions)".
In the second dropdown, choose "Any alert() function call".
Most Important Step: In the "Message" box, delete any default text and type in this exact placeholder:
{{alert_message}}
Set the trigger to "Once Per Bar Close".
Click "Create".
How Alerts Work (Triggers & Filtering)
Trigger: Alerts are tied to the confirmed signal. An alert will only fire after your "Confirmation Bars" have passed and the SFP is locked in. This prevents you from getting alerts on fake-outs.
Alert Filtering: The alerts are linked to the "Visual Time Filter". If you turn on the Visual Time Filter (e.g., to 09:30-11:00), you will only receive alerts for SFPs that are confirmed within that time window. If an SFP happens at 14:00, the script will ignore it, it will not be drawn, and it will not send you an alert. This allows you to get alerts only for the session you are actively trading.
Note: This is a first draft of this indicator. I will continue to work on it and improve it over time, as it may still contain small bugs.
Acknowledgements:
A big thank you to TFO (tradeforopp). The session detection logic and the visual style for the session boxes were adapted from his excellent "ICT Killzones & Pivots " indicator.
Current State: Overbought/Oversold + Trend KAPIL GOYALThis Pine Script calculates the RSI (Relative Strength Index) and compares it against preset thresholds to classify the market as Deep/Moderate/Mild Oversold or Deep/Moderate/Mild Overbought. It also checks whether the current price is above or below the 50-day moving average to define the trend as Uptrend or Downtrend. The script then combines both signals into one clean, real-time text output—like “Moderate Oversold + Uptrend”—displayed in a small table at the chart corner. It’s designed to give a quick, clutter-free snapshot of the current market state without plotting multiple indicators.
How to use:
Apply this indicator to any chart (e.g., Tesla on TradingView). It will show one line of text describing the current condition based on RSI and trend. Use it for quick decision cues:
“Oversold + Uptrend” suggests potential accumulation or rebound zones.
“Overbought + Downtrend” warns of exhaustion or profit-taking zones.
Combine it with your entry/exit strategy—like your 30DMA/50DMA rule or momentum filters—to confirm timing rather than act alone.
Anchored ATH Drawdown LevelsThe Anchored ATH Drawdown Levels plots horizontal lines from a chosen anchor price (ATH), showing potential pullback zones at set percentage drops below it.
This indicator's use lies in its anchored ATH framework, which rapidly visualizes precise drawdown levels as dynamic levels of interest or price targets enabling traders to anticipate pullback depths and potential reversal levels without manual calculations.
Pick "True ATH" for the all-time high or "Period ATH" for anchored highs reset weekly, monthly, or quarterly. Lines stretch right for a cleaner visual.
Key Features
Anchoring: True ATH (lifetime max) or Period ATH (resets on 1W/1M/3M intervals).
Drawdown Levels: 8 adjustable levels (defaults: -5%, -10%, -15%, -20% on; -25% to -50% off). Toggle each, set drop % (0.1-99.9), pick color, style (solid/dashed/dotted), width (1-3).
ATH Line: Optional ATH line with custom color, style, width.
Unified Look: Global overrides for all levels' color, style, width.
Labels: Show % drops (with/without prices) via text boxes or full tags; sizes from tiny to large.
Projection: Lines extend 5-100 bars right (default 20).
Settings
Anchor: Mode and timeframe.
Display: Toggle levels/ATH, set extension.
Labels: Style (text/full/none), size, price display.
Global/ATH/Levels: Colors, styles, widths (per-level or shared).
How to Use
Load on chart (overlays prices; handles up to 500 lines).
Choose anchor for your high.
Tune levels for key pullbacks (e.g., -5% minor, -20% major).
Customize visuals where the lines update on new peaks.
SevenDayHighLowTableWithBoxes [CHE]SevenDayHighLowTableWithBoxes — Seven-day day-range boxes with a weekday-aware “ghost” projection and a compact table that tracks recent extremes and per-weekday hit rates.
Summary
This indicator visualizes each trading day as a colored box and annotates the final high and low with compact markers. It maintains a rolling seven-day view and a five-column table showing day name, high, low, range, and a per-weekday projection hit statistic. A dashed “ghost” box projects a typical range for the current weekday using a running average and an adjustable scaling factor. The script is written in Pine v6, runs on the main chart (overlay true), and emphasizes stable object handling and closed-bar finalization at day boundaries.
Motivation: Why this design?
Intraday traders often need fast context for where today’s price sits relative to recent daily extremes, without switching timeframes. A simple daily high/low overlay is informative but lacks structure, sizing context, and continuity. By grouping bars into local days (configurable UTC offset), drawing explicit boxes, and projecting a weekday-typical range, the chart becomes easier to scan. The compact table gives a quick audit trail of the latest seven days while tracking how often the weekday projection would have covered the realized range.
What’s different vs. standard approaches?
Reference baseline: Plain daily high/low lines or session boxes without context.
Architecture differences:
Weekday-tinted boxes and labels for today plus up to six prior days.
Weekday average range drives a dashed projection (“ghost”) sized by a user-defined percentage.
Per-weekday hit statistics recorded as hits over totals and displayed in the table.
ATR-based vertical offsets keep labels readable.
Live updates intraday; state is finalized at the local day switch.
Practical effect: The chart shows where current price sits inside a known daily envelope, plus how “typical” the day’s movement is for this weekday, aiding expectations and planning.
How it works (technical)
The script computes a local daily timestamp using the user’s UTC offset. A day change finalizes the prior day, writes its high, low, start and end indices, and records the bar indices of the terminal high and low.
For each weekday, it maintains a running average of realized ranges with a cap on the lookback count. The ghost projection length is the weekday average scaled by the user’s percentage setting.
Anchor selection for the ghost uses the most recent extreme and the close relative to the intraday midpoint to choose a low-anchored or high-anchored box.
A five-column table (Day, High, Low, Range, Ghost OK) is refreshed on the last bar. The “Ghost OK” column shows per-weekday cumulative hits over totals with a percentage, calculated before including the just-finished day.
Object counts are bounded to seven days by pruning arrays and deleting old boxes and labels. Visual updates for historical objects occur on the last bar to minimize overhead. No `security()` calls are used.
Parameter Guide
UTC (+/−) — Controls local day boundaries — Default: minus five hours — Set to your venue’s local time.
Session (for Time gate) — Session string — Default: full week — (Optional) computed internally; not applied to gating.
Show 7-Day High/Low Table — Toggles the table — Default: true — Disable to reduce UI load.
Show Day Boxes in Chart — Toggles day boxes — Default: true — Disable for a cleaner chart.
Table Position — Nine-point anchor — Default: Middle Right — Move to avoid overlap.
Table Background / Text Color / Min Cell Width — Styling controls — Defaults: gray background, white text, width twelve characters.
Weekday Colors (Sun…Sat) — Row and box tints — Defaults: semi-transparent hues — Adjust for your theme.
Triangle Transparency — Marker opacity — Default: zero — Increase to fade high/low dots.
Day Label Transparency — Day name opacity — Default: zero — Increase to reduce emphasis.
Box Border Width — Box stroke width — Default: one — Increase for stronger edges.
Extend Boxes Right — Extend current box — Default: false — Useful for forward planning.
Show Average Range Ghost Box — Dashed projection — Default: true — Disable if distracting.
Ghost Border Color / Width — Ghost styling — Defaults: gray, width one.
Ghost Length percent of AvgRange — Projection scale — Default: one hundred; bounds zero to five hundred — Lower to be conservative.
Max History Days for Average — Cap per-weekday averaging — Default: two hundred fifty-two; bounds thirty to five hundred.
ATR Length / Day Label ATR Multiplier / Triangle Up ATR Multiplier / Triangle Down ATR Multiplier — Offsets for label placement — Defaults: length one hundred; multipliers zero — Increase on dense instruments to prevent overlap.
Reading & Interpretation
Day boxes: The filled rectangle marks each day’s full high-low span; color encodes the weekday.
Markers: Small dots near the terminal high and low highlight where the final extremes occurred.
Ghost box: A dashed box sized by the weekday average range, anchored based on recent behavior. It is a typical span, not a target.
Table: Row one shows “Today”. Rows below list up to six prior days. “Ghost OK” shows per-weekday cumulative hits over totals with a percentage, which reflects historical coverage quality for that weekday.
Practical Workflows & Combinations
Trend following: Use the current box plus recent boxes to read expansion or compression days; combine with basic structure such as higher-highs and higher-lows or lower-lows and lower-highs for confirmation.
Exits and risk: When price nears the ghost boundary late in the session, consider managing exposure more conservatively.
Multi-asset and multi-timeframe: Works on minute charts. As a starting point, use five to less than sixty minutes. For cross-checks, pair with a higher timeframe bias filter.
Behavior, Constraints & Performance
Repaint/confirmation: The indicator updates intraday; extremes and ghost position can move while the day is open. Values are finalized on the next local day start.
HTF/security: None used; repaint risk is limited to live-bar movement.
Resources: `max_bars_back` five thousand; arrays are pruned to seven days; the table and color sync run on the last bar; the live ghost updates only in real time.
Known limits: Weekday averages can be unrepresentative during regime shifts, events, or gaps. Day boundaries depend on the UTC offset being set correctly. No alerts are included. The script displays warning labels when the timeframe is below five minutes or at sixty minutes and above.
Sensible Defaults & Quick Tuning
Start with the defaults.
Ghost too aggressive: Lower the percent scale.
Labels overlap: Increase ATR multipliers.
Clutter or performance issues: Hide the table or boxes, or disable the ghost.
Day boundary misaligned: Adjust the UTC offset to your market.
What this indicator is—and isn’t
This is a visualization and context layer for daily extremes and a weekday-based typical span. It does not predict direction, does not manage orders, and is not a complete trading system. Use it alongside market structure, risk controls, and position management.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino






















