Crude Oil: Backwardation Vs ContangoCrude Oil, CL
Plots Futures Curve: Futures contract prices over the next 3.5 years; to easily visualize Backwardation Vs Contango(carrying charge) markets.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation(As the above; contract prices decreasing into the future): it's a bullish sign: Buyers want this commodity, and they want it NOW.
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
TO UPDATE (every year or so): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of several similar Futures Curve indicators: Meats | Metals | Grains | VIX | Crude Oil
If you want to build from this; to work on other commodities; be aware that Tradingview limits the number of contract calls to 40 (hence the multiple indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
-If this takes too long to load (due to so many security calls); comment out the more distant future half of the contracts; and their respective labels. Or comment out every other contract and every other label if you prefer.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 20th June 2022
© twingall
스크립트에서 "Futures"에 대해 찾기
LibraryCOT█ OVERVIEW
This library is a Pine programmer's tool that provides functions to access Commitment of Traders (COT) data for futures. Four of our scripts use it:
• Commitment of Traders: Legacy Metrics
• Commitment of Traders: Disaggregated Metrics
• Commitment of Traders: Financial Metrics
• Commitment of Traders: Total
If you do not program in Pine and want to use COT data, please see the indicators linked above.
█ CONCEPTS
Commitment of Traders (COT) data is tallied by the Commodity Futures Trading Commission (CFTC) , a US federal agency that oversees the trading of derivative markets such as futures in the US. It is weekly data that provides traders with information about open interest for an asset. The CFTC oversees derivative markets traded on different exchanges, so COT data is available for assets that can be traded on CBOT, CME, NYMEX, COMEX, and ICEUS.
Accessing COT data from a Pine script requires the generation of a ticker ID string for use with request.security() . The ticker string must be encoded in a special format that includes both CFTC and TradingView-specific content. The format of the ticker IDs is somewhat complex; this library's functions make their generation easier. Note that if you know the COT ticker ID string for specific data, you can enter it from the chart's "Symbol Search" dialog box.
A ticker for COT data in Pine has the following structure:
COT:__<_metricDirection><_metricType>
where an underscore prefixing a component name inside <> is only included if the component is not a null string, and:
Is a digit representing the type of the COT report the data comes from: "" for legacy COT data, "2" for disaggregated data and "3" for financial data.
Is a six digit code that represents a commodity. Example: wheat futures (root "ZW") have the code "001602".
Is either "F" if the report data should exclude Options data, or "FO" if such data is included.
Is the TradingView code of the metric. This library's `metricNameAndDirectionToTicker()` function creates both
the and components of a COT ticker from the metric names and directions listed in the above chart.
The different metrics are explained in the CFTC's Explanatory Notes .
Is the direction of the metric: "Long", "Short", "Spreading" or "No direction".
Not all directions are applicable to all metrics. The valid ones are listed next to each metric in the above chart.
Is the type of the metric, possible values are "All", "Old" and "Other".
The difference between the types is explained in the "Old and Other Futures" section of the CFTC's Explanatory Notes .
As an example, the Legacy report Open Interest data for ZW futures (options included) in the old standard has the ticker "COT:001602_FO_OI_OLD". The same data using the current standard without futures has the ticker "COT:001602_F_OI".
█ USING THE LIBRARY
The first functions in the library are helper functions that generate components of a COT ticker ID. The last function, `COTTickerid()`, is the one that generates the full ticker ID string by calling some of the helper functions. We use it like this in our example:
exampleTicker = COTTickerid(
COTType = "Legacy",
CFTCCode = convertRootToCOTCode("Auto"),
includeOptions = false,
metricName = "Open Interest",
metricDirection = "No direction",
metricType = "All")
This library's chart displays the valid values for the `metricName` and `metricDirection` arguments. They vary for each of the three types of COT data (the `COTType` argument). The chart also displays the COT ticker ID string in the `exampleTicker` variable.
Look first. Then leap.
The library's functions are:
rootToCFTCCode(root)
Accepts a futures root and returns the relevant CFTC code.
Parameters:
root : Root prefix of the future's symbol, e.g. "ZC" for "ZC1!"" or "ZCU2021".
Returns: The part of a COT ticker corresponding to `root`, or "" if no CFTC code exists for the `root`.
currencyToCFTCCode(curr)
Converts a currency string to its corresponding CFTC code.
Parameters:
curr : Currency code, e.g., "USD" for US Dollar.
Returns: The corresponding to the currency, if one exists.
optionsToTicker(includeOptions)
Returns the part of a COT ticker using the `includeOptions` value supplied, which determines whether options data is to be included.
Parameters:
includeOptions : A "bool" value: 'true' if the symbol should include options and 'false' otherwise.
Returns: The part of a COT ticker: "FO" for data that includes options and "F" for data that doesn't.
metricNameAndDirectionToTicker(metricName, metricDirection)
Returns a string corresponding to a metric name and direction, which is one component required to build a valid COT ticker ID.
Parameters:
metricName : One of the metric names listed in this library's chart. Invalid values will cause a runtime error.
metricDirection : Metric direction. Possible values are: "Long", "Short", "Spreading", and "No direction".
Valid values vary with metrics. Invalid values will cause a runtime error.
Returns: The part of a COT ticker ID string, e.g., "OI_OLD" for "Open Interest" and "No direction",
or "TC_L" for "Traders Commercial" and "Long".
typeToTicker(metricType)
Converts a metric type into one component required to build a valid COT ticker ID.
See the "Old and Other Futures" section of the CFTC's Explanatory Notes for details on types.
Parameters:
metricType : Metric type. Accepted values are: "All", "Old", "Other".
Returns: The part of a COT ticker.
convertRootToCOTCode(mode, convertToCOT)
Depending on the `mode`, returns a CFTC code using the chart's symbol or its currency information when `convertToCOT = true`.
Otherwise, returns the symbol's root or currency information. If no COT data exists, a runtime error is generated.
Parameters:
mode : A string determining how the function will work. Valid values are:
"Root": the function extracts the futures symbol root (e.g. "ES" in "ESH2020") and looks for its CFTC code.
"Base currency": the function extracts the first currency in a pair (e.g. "EUR" in "EURUSD") and looks for its CFTC code.
"Currency": the function extracts the quote currency ("JPY" for "TSE:9984" or "USDJPY") and looks for its CFTC code.
"Auto": the function tries the first three modes (Root -> Base Currency -> Currency) until a match is found.
convertToCOT : "bool" value that, when `true`, causes the function to return a CFTC code.
Otherwise, the root or currency information is returned. Optional. The default is `true`.
Returns: If `convertToCOT` is `true`, the part of a COT ticker ID string.
If `convertToCOT` is `false`, the root or currency extracted from the current symbol.
COTTickerid(COTType, CTFCCode, includeOptions, metricName, metricDirection, metricType)
Returns a valid TradingView ticker for the COT symbol with specified parameters.
Parameters:
COTType : A string with the type of the report requested with the ticker, one of the following: "Legacy", "Disaggregated", "Financial".
CTFCCode : The for the asset, e.g., wheat futures (root "ZW") have the code "001602".
includeOptions : A boolean value. 'true' if the symbol should include options and 'false' otherwise.
metricName : One of the metric names listed in this library's chart.
metricDirection : Direction of the metric, one of the following: "Long", "Short", "Spreading", "No direction".
metricType : Type of the metric. Possible values: "All", "Old", and "Other".
Returns: A ticker ID string usable with `request.security()` to fetch the specified Commitment of Traders data.
█ AVAILABLE METRICS
Different COT types provide different metrics. The table of all metrics available for each of the types can be found below.
+------------------------------+------------------------+
| Legacy (COT) Metric Names | Directions |
+------------------------------+------------------------+
| Open Interest | No direction |
| Noncommercial Positions | Long, Short, Spreading |
| Commercial Positions | Long, Short |
| Total Reportable Positions | Long, Short |
| Nonreportable Positions | Long, Short |
| Traders Total | No direction |
| Traders Noncommercial | Long, Short, Spreading |
| Traders Commercial | Long, Short |
| Traders Total Reportable | Long, Short |
| Concentration Gross LT 4 TDR | Long, Short |
| Concentration Gross LT 8 TDR | Long, Short |
| Concentration Net LT 4 TDR | Long, Short |
| Concentration Net LT 8 TDR | Long, Short |
+------------------------------+------------------------+
+-----------------------------------+------------------------+
| Disaggregated (COT2) Metric Names | Directions |
+-----------------------------------+------------------------+
| Open Interest | No Direction |
| Producer Merchant Positions | Long, Short |
| Swap Positions | Long, Short, Spreading |
| Managed Money Positions | Long, Short, Spreading |
| Other Reportable Positions | Long, Short, Spreading |
| Total Reportable Positions | Long, Short |
| Nonreportable Positions | Long, Short |
| Traders Total | No Direction |
| Traders Producer Merchant | Long, Short |
| Traders Swap | Long, Short, Spreading |
| Traders Managed Money | Long, Short, Spreading |
| Traders Other Reportable | Long, Short, Spreading |
| Traders Total Reportable | Long, Short |
| Concentration Gross LE 4 TDR | Long, Short |
| Concentration Gross LE 8 TDR | Long, Short |
| Concentration Net LE 4 TDR | Long, Short |
| Concentration Net LE 8 TDR | Long, Short |
+-----------------------------------+------------------------+
+-------------------------------+------------------------+
| Financial (COT3) Metric Names | Directions |
+-------------------------------+------------------------+
| Open Interest | No Direction |
| Dealer Positions | Long, Short, Spreading |
| Asset Manager Positions | Long, Short, Spreading |
| Leveraged Funds Positions | Long, Short, Spreading |
| Other Reportable Positions | Long, Short, Spreading |
| Total Reportable Positions | Long, Short |
| Nonreportable Positions | Long, Short |
| Traders Total | No Direction |
| Traders Dealer | Long, Short, Spreading |
| Traders Asset Manager | Long, Short, Spreading |
| Traders Leveraged Funds | Long, Short, Spreading |
| Traders Other Reportable | Long, Short, Spreading |
| Traders Total Reportable | Long, Short |
| Concentration Gross LE 4 TDR | Long, Short |
| Concentration Gross LE 8 TDR | Long, Short |
| Concentration Net LE 4 TDR | Long, Short |
| Concentration Net LE 8 TDR | Long, Short |
+-------------------------------+------------------------+
4H HOD/LOD Checkpoint Analysis4H HOD/LOD Checkpoint Analysis - Detailed User Guide
OVERVIEW
This indicator is a data-driven probability framework for NQ Futures traders that predicts High-of-Day (HOD) and Low-of-Day (LOD) placement based on statistical analysis of 3,136+ trading days (2013-2025). Unlike traditional indicators that rely on technical signals, this tool uses checkpoint-based state analysis with zero forward-looking bias to provide real-time probabilities of whether the daily range is complete.
⚠️ IMPORTANT: This indicator is specifically designed for NQ FUTURES ONLY. All probabilities, patterns, and statistics were derived from a 10+ year historical dataset of NQ 1-minute bars. Using this on other instruments will produce inaccurate results.
CORE CONCEPT: CHECKPOINT METHODOLOGY
What is a Checkpoint?
A checkpoint occurs when a 4-hour candle closes. At this moment, the indicator "locks" the current market state and calculates probabilities for the remainder of the trading day. The key innovation is that state never changes after locking - probabilities remain constant throughout the session until the next checkpoint.
The Six 4-Hour Candles (EST):
6PM (18:00-22:00) - Evening/Globex open
10PM (22:00-02:00) - Asia session
2AM (02:00-06:00) - Early London
6AM (06:00-10:00) - Late London + NY Open
10AM (10:00-14:00) - NY Morning
2PM (14:00-17:00) - NY Afternoon (3 hours only)
Five Checkpoints:
10PM Checkpoint - After 6PM closes
2AM Checkpoint - After 10PM closes
6AM Checkpoint - After 2AM closes
10AM Checkpoint - After 6AM closes (most critical)
2PM Checkpoint - After 10AM closes (highest conviction fade signals)
HOW IT WORKS: THE THREE-FACTOR STATE SYSTEM
At each checkpoint, the indicator evaluates three critical factors to determine probability:
1. ELIMINATIONS (Quantity)
An "elimination" occurs when a candle trades beyond a previous candle's high or low, effectively removing that candle from contention for HOD/LOD.
Example at 10AM Checkpoint:
6PM high = 18,000
10PM high = 18,050 (eliminates 6PM high)
2AM high = 18,100 (eliminates 10PM high)
6AM high = 18,075 (does NOT eliminate 2AM high)
Result: 2 eliminations
The number of eliminations indicates trend strength:
0 eliminations = Range-bound, high probability extremes already set
1-2 eliminations = Moderate trend
3-4 eliminations = Strong trend day, range likely to extend
2. STRUCTURE (Pattern Type)
The indicator distinguishes between two elimination patterns:
Sequential: Eliminations occur in order (6pm → 10pm → 2am → 6am → 10am)
Indicates smooth, consistent trend
Example: 10pm eliminates 6pm, then 2am eliminates 10pm (sequential)
Skip: Eliminations skip candles
Indicates choppy/reversal behavior
Example: 2am eliminates 6pm but NOT 10pm (skip pattern)
Why it matters: Skip patterns show 2X probability differences compared to sequential patterns. At 10AM checkpoint with 2 eliminations, skip pattern shows 64% participation rate vs 36% for sequential pattern with previous survived.
3. PREVIOUS CANDLE STATUS
Did the immediately prior candle get eliminated?
Eliminated: Previous candle's high/low was taken out
Indicates relentless trend
Higher probability of continuation
Survived: Previous candle's high/low still intact
Indicates trend pause
Higher probability of mean reversion or range completion
Critical insight: High and low are tracked separately. At 2AM checkpoint, 10PM might have eliminated 6PM high (relentless uptrend) but NOT eliminated 6PM low (low survived). This creates different probabilities for HOD vs LOD.
VISUAL ELEMENTS
4-Hour Candle Boxes
Each 4H candle is displayed as a colored box showing its range:
Gray = 6PM (evening)
Blue = 10PM (Asia)
Purple = 2AM (early London)
Orange = 6AM (London + NY Open) - THE CURVE SESSION
Teal = 10AM (NY morning) - THE MONEY SESSION
Red = 2PM (NY afternoon) - THE FADE SESSION
HOD/LOD Lines
Black horizontal lines extend from current HOD/LOD with labels showing:
Which candle set the extreme
Current price level
THE CHECKPOINT TABLE EXPLAINED
Table Header:
Shows current checkpoint (e.g., "🎯 10AM CHECKPOINT") or "⏳ PRE-CHECKPOINT" if between checkpoints.
Main Metrics (Side-by-Side Comparison):
The table displays HOD and LOD separately in two columns because they can have different patterns:
METRIC
HODLOD Eliminations
Number of candles eliminated so far for highs
Number of candles eliminated so far for lows
Structure
Sequential or Skip pattern for highs
Sequential or Skip pattern for lows
Prev Candle
Was previous candle's high eliminated or did it survive?
Was previous candle's low eliminated or did it survive?
Pattern
Combined interpretation: Relentless/Paused/Skip/Early
Combined interpretation: Relentless/Paused/Skip/Early
Color Coding:
Structure Row:
White = Sequential (smooth trend)
Orange = Skip (choppy/reversal)
Previous Candle Row:
Red = Eliminated (relentless trend continuing)
Blue = Survived (trend paused)
Pattern Row:
Red = Relentless (previous eliminated + sequential = strong trend)
Blue = Paused (previous survived + sequential = trend pause)
Orange = Skip/Chop (skip pattern = reversal likely)
Gray = Early (0-1 eliminations, too early to tell)
Probability Section:
Prob Already In: Percentage chance that HOD/LOD has already been set
Color coding:
Green (>75%) = High confidence extreme is in, FADE
Yellow (45-75%) = Moderate confidence
Red (<45%) = Low confidence extreme is in, CONTINUATION likely
Sample Size: Shows how many historical occurrences match this exact state (n=XXX)
Larger samples = higher confidence
Most common states have n=500-2,000+
Current: Which candle currently holds HOD/LOD
Pattern Guide Section:
Appears when you have 2+ eliminations. Provides interpretation:
📈 Paused: Trend has paused, 2pm more likely to set extreme
📈 Relentless: Breaking higher/lower, continuation expected
📈 Skip/Chop: Choppy pattern, next session likely
Same for lows with 📉 symbol.
PRACTICAL TRADING EXAMPLES
Example 1: High Conviction Fade Setup
State at 10AM Checkpoint:
Eliminations: 0 (both HOD/LOD)
Structure: None (no eliminations yet)
Prev Candle: Survived
Table shows:
HOD Prob Already In: 68.9% (n=582)
LOD Prob Already In: 73.6% (n=785)
Interpretation: Range is likely complete. Fade extremes. With 0 eliminations and 70%+ probability, this is a high-conviction mean reversion signal.
Example 2: Strong Continuation Signal
State at 10AM Checkpoint:
Eliminations: 3 (both HOD/LOD)
Structure: Sequential
Prev Candle: Eliminated (relentless)
Table shows:
HOD Prob Already In: 29.8% (n=1,758)
LOD Prob Already In: 34.6% (n=1,451)
Pattern: 📈 Relentless / 📉 Relentless
Interpretation: Strong trend day. Only 30-35% chance range is complete. Look for breakouts in direction of trend. 10AM and 2PM likely to extend range.
Example 3: Pattern Structure Edge
State at 10AM Checkpoint:
Eliminations: 2 (HOD)
Structure: Skip (orange background)
Prev Candle: Eliminated vs Alternative State:
Eliminations: 2 (HOD)
Structure: Sequential
Prev Candle: Survived
Result: Skip pattern shows 64% chance 10AM participates vs 36% for sequential+survived. Skip pattern = 2X more likely to see 10AM high. This structural edge is unique to this indicator.
Example 4: Different HOD vs LOD Patterns
State at 10AM Checkpoint:
HOD: 2 eliminations, Sequential, Previous Eliminated (Relentless) = 46.7% in
LOD: 2 eliminations, Skip, Previous Eliminated (Choppy) = 48.4% in
Interpretation: Highs show relentless uptrend but lows show choppy behavior. This divergence suggests potential for upside continuation but with volatility. Not a clean trend day.
KEY CHECKPOINT STATISTICS (DERIVED FROM 10-YEAR DATASET)
10PM Checkpoint (After 6PM):
Very early in day
13.5% HOD in, 21.3% LOD in
Most likely outcome: Range extends into 6AM/10AM
2AM Checkpoint (After 10PM):
Still early
With 0 elims: 22-31% in (balanced)
With 1 elim: 8-12% in (strong trend signal)
6AM Checkpoint (After 2AM) - Critical Decision Point:
With 0 elims: 40-47% in (balanced, could go either way)
With 2 elims: 18-22% in (strong trend into 6AM/10AM)
Most likely outcome: 10AM sets extremes (~38-40%)
10AM Checkpoint (After 6AM) - Highest Conviction:
With 0 elims: 69-74% in → FADE (high confidence)
With 3 elims: 30-35% in → BUY/SELL continuation
This is THE money checkpoint for high-probability setups
2PM Checkpoint (After 10AM) - Maximum Fade Conviction:
With 0-3 elims: 67-95% in → FADE strongly
With 4 elims: 49-61% in (monster trend, weaker fade)
2PM is primarily a mean reversion session
UNDERSTANDING THE UNDERLYING DATA
All probabilities are derived from analysis of:
Instrument: NQ Futures (E-mini NASDAQ-100)
Timeframe: 1-minute bars
Period: January 2013 - December 2025
Sample: 3,136+ complete trading days
Methodology: Real-time checkpoint analysis with zero forward-looking bias
Why NQ-Specific?
Each futures contract has unique:
Session characteristics (6AM in NQ shows 60-64% curve behavior, other sessions differ)
Timing patterns (NQ's 10AM session has 67-74% immediate takeouts)
Volatility profiles (NQ 2PM shows 56% bullish bias vs ES shows different bias)
Using this indicator on ES, RTY, or other instruments will produce inaccurate results because the probability tables are NQ-specific.
ORIGINALITY & INNOVATION
What Makes This Indicator Unique:
Zero Forward-Looking Bias: State locks at checkpoint moments. Traditional indicators recalculate continuously, introducing bias. This indicator freezes probabilities at the exact moment a 4H candle closes.
Three-Factor State System: Combines elimination count, structure pattern, and previous candle status. Most indicators only track one dimension. This multi-factor approach provides 2X+ probability differentials.
Separate HOD/LOD Tracking: Highs and lows can have different patterns simultaneously (relentless high with choppy low). This indicator tracks them separately for precision.
Pattern Structure Analysis: Distinguishes between sequential and skip patterns, a concept not found in standard indicators. Skip patterns show mean reversion while sequential shows continuation.
10+ Year Statistical Foundation: Every probability is backed by hundreds to thousands of historical occurrences (sample sizes shown in table). Not based on theories or assumptions.
Checkpoint-Specific Probabilities: Different checkpoints have different probability profiles. 10AM checkpoint with 0 eliminations = 70%+ fade. 6AM checkpoint with same state = 40%+ fade. Context matters.
HOW TO USE THIS INDICATOR
Step 1: Wait for Checkpoint
The table will show "⏳ PRE-CHECKPOINT" until a 4H candle closes. Probabilities are only valid at checkpoint moments.
Step 2: Read the State
Check the three factors:
How many eliminations?
Sequential or skip?
Previous candle eliminated or survived?
Step 3: Check Probability
Look at "Prob Already In" percentage:
>75% (Green) = High confidence extreme is set, fade
45-75% (Yellow) = Moderate confidence, use other confirmation
<45% (Red) = Low confidence extreme is set, continuation likely
Step 4: Check Sample Size
Larger sample (n=1,000+) = higher confidence
Smaller sample (n=50-200) = use caution, edge is real but less robust
Step 5: Consider Pattern
Read the pattern guide:
Relentless = trend continuing
Paused = trend stalled, mean reversion
Skip/Chop = reversal/range likely
Step 6: Compare HOD vs LOD
If both show similar patterns = cleaner signal
If divergent patterns = complex day, be cautious
BEST PRACTICES
Focus on 10AM and 2PM checkpoints - These have the highest conviction signals
Combine with price action - Don't fade blindly at 90% probability if price is breaking out strongly
Larger samples = better edges - Prioritize setups with n=500+
Watch for pattern divergence - When HOD and LOD show different patterns, expect complexity
Remember session characteristics:
6AM = THE CURVE SESSION (60-64% mean reversion when Q2 breaks Q1)
10AM = THE MONEY SESSION (67-74% immediate takeouts, highest conviction)
2PM = THE FADE SESSION (67-95% extremes already in)
SETTINGS
Show 4H Candle Boxes - Display colored boxes for each 4H candle
Show HOD/LOD Lines - Display horizontal lines at current extremes
Show Checkpoint Analysis - Display probability table
Table Position - Choose where to place the checkpoint table
Table Size - Tiny/Small/Normal
Colors - Customize box colors for each session
LIMITATIONS & DISCLAIMERS
NQ FUTURES ONLY - Do not use on other instruments
Not a standalone system - Use as confluence with your strategy
Historical data - Past performance doesn't guarantee future results
Sample size variance - Some states have smaller samples, use judgment
Requires understanding - Read this guide fully before trading with this tool
FINAL NOTES
This indicator represents 10+ years of NQ futures data distilled into actionable, real-time probabilities. The checkpoint methodology ensures zero forward-looking bias, while the three-factor state system provides granular edge that traditional indicators miss.
Remember: This tool provides probabilities, not certainties. Trade with proper risk management, and use this as one input in your decision-making process.
First presented FVG (w/stats) w/statistical hourly ranges & biasOverview
This indicator identifies the first Fair Value Gap (FVG) that forms during each hourly session and provides comprehensive statistical analysis based on 12 years of historical NASDAQ (NQ) data. It combines price action analysis with probability-based statistics to help traders make informed decisions.
⚠️ IMPORTANT - Compatibility
Market: This indicator is designed exclusively for NASDAQ futures (NQ/MNQ)
Timeframe: Statistical data is based on FVGs formed on the 5-minute timeframe
FVG Detection: Works on any timeframe, but use 5-minute for accuracy matching the statistical analysis
All hardcoded statistics are derived from 12 years of NQ historical data
What It Does
1. FVG Detection & Visualization
Automatically detects the first FVG (bullish or bearish) that forms each hour
Draws colored boxes around FVGs:
Blue boxes = Bullish FVG (gap up)
Red boxes = Bearish FVG (gap down)
FVG boxes extend to the end of the hour
Optional midpoint lines show the center of each FVG
Uses volume imbalance logic (outside prints) to refine FVG boundaries
2. Hourly Reference Lines
Vertical Delimiter: Marks the start of each hour
Hourly Open Line: Shows where the current hour opened
Expected Range Lines: Projects the anticipated high/low based on historical data
Choose between Mean (average) or Median (middle value) statistics
Upper range line (teal/green)
Lower range line (red)
All lines span exactly one hour from the moment it opens
Optional labels show price values at line ends
3. Real-Time Statistics Table
The table displays live data for the current hour only:
Hour: Current hour in 12-hour format (AM/PM)
FVG Status: Shows if a Bull FVG, Bear FVG, or no FVG has formed yet
Green background = Bullish FVG detected
Red background = Bearish FVG detected
1st 15min: Direction of the first 15 minutes (Bullish/Bearish/Neutral/Pending)
Continuation %: Historical probability that the hour continues in the first 15-minute direction
Color-coded: Green for bullish, red for bearish
Avg Range %: Expected percentage range for the current hour (based on 12-year mean)
FVG Effect %: Historical probability that FVG direction predicts hourly close direction
Shows BISI→Bull % for bullish FVGs
Shows SIBI→Bear % for bearish FVGs
Blank if no FVG has formed yet
Time Left: Countdown timer showing MM:SS remaining in the hour (updates in real-time)
Hourly Bias: Historical directional tendency (bullish % or bearish %)
H Open: Current hour's opening price
Exp Range: Projected price range (Low - High) based on historical average
Customization Options
Detection Settings:
Lower Timeframe Selection (15S, 1min, 5min) - controls FVG detection granularity
Display Settings:
FVG box colors (bullish/bearish)
Midpoint lines (show/hide, color, style)
Table Settings:
Position (9 locations: corners, edges, center)
Text size (Tiny, Small, Normal, Large)
Hourly Lines:
Toggle each line type on/off
Hour delimiter (color, width)
Open line (color, width, style)
Range lines (color, width, style)
Choose Mean or Median statistics for range calculation
Show/hide labels with customizable text size
How to Use
Apply to NQ futures chart (NQ1! or MNQ1!)
Set chart to 5-minute timeframe for optimal FVG detection matching the statistical data
Watch for the first FVG to form each hour
Reference the table for probability-based decision support:
High continuation % = strong directional bias
FVG Effect % shows reliability of the FVG signal
Time Left helps manage entries/exits within the hour
Use range lines as potential targets or reversal zones
Statistical Foundation
All statistics are derived from:
12 years of NASDAQ (NQ) historical data
Hourly analysis of FVG formation patterns
First 15-minute directional analysis
Mean and Median calculations for range expectations
Data encompasses 2,400+ samples per hour
Best Practices
✅ Use on NQ/MNQ futures only
✅ Best on 5-minute charts (matches statistical data)
✅ Combine FVG signals with continuation probabilities
✅ Use range lines as potential profit targets
✅ Watch the countdown timer for hour-end setups
❌ Do not use on other markets (statistics won't apply)
❌ Avoid using during low-liquidity hours (5PM ET has minimal data)
Technical Notes
Timezone: America/New_York (EST/EDT)
Weekend filtering: Automatically hides data during market closure
Updates in real-time on live bars
Maximum 500 boxes/lines for performance
FVG detection includes volume imbalance (body gap) refinement
Credits
Statistical analysis based on 12 years of NASDAQ historical data. FVG detection methodology follows ICT concepts with volume imbalance refinement.
Disclaimer: This indicator provides statistical analysis based on historical data. Past performance does not guarantee future results. Always use proper risk management.
Would you like me to adjust any section or add/remove anything?6-9 Session & Levels - Customizable Range Analysis Indicator
Description:
This indicator provides comprehensive session-based range analysis designed for intraday traders. It calculates and displays key levels based on a customizable session period (default 6:00-9:00 AM ET).
Core Features:
Sespastedthis is a summary for another indicator- i was hoping for something more like this in terms of content etc22:23Architected comprehensive indicator summary matching professional documentation style.The user wants me to rewrite the summary for their FVG indicator in a similar style to the example provided. The example is more structured, detailed, and professional. Let me create a comprehensive summary that follows that format:
Clear title
Description/Overview
Core Features (broken down into sections)
Input Settings Explained (detailed breakdown of all customization options)
How It Works section
Use Case
Note/Disclaimer
Let me make it thorough and match the style while being accurate to their indicator's functionality.Here's a detailed summary in that format:
Every Hour 1st FVG with Statistical Analysis - NASDAQ Hourly Trading Intelligence
Description:
This indicator identifies the first Fair Value Gap (FVG) that forms during each hourly session and provides comprehensive probability-based statistical analysis derived from 12 years of NASDAQ (NQ) historical data. It combines real-time FVG detection with hardcoded statistical probabilities to help intraday traders make informed decisions based on historical patterns and hourly price action dynamics.
IMPORTANT: This indicator is specifically calibrated for NASDAQ futures (NQ/MNQ) only. All statistical data is derived from 12 years of NQ historical analysis with FVGs detected on the 5-minute timeframe. Using this indicator on other markets will produce invalid statistical results.
Core Features:
FVG Detection & Visualization
Automatically detects and displays the first Fair Value Gap (bullish or bearish) that forms within each hourly session
Color-coded boxes mark FVG zones: Blue for bullish FVGs (gap up), Red for bearish FVGs (gap down)
FVG boxes extend precisely to the end of the hour boundary
Optional midpoint lines show the center point of each FVG
Uses volume imbalance logic (outside prints) to refine FVG boundaries beyond simple wick-to-wick gaps
Supports both chart timeframe detection and lower timeframe detection via request.security_lower_tf
Hourly Reference Lines
Vertical Hour Delimiter: Marks the exact start of each new hour with an extendable vertical line
Hourly Open Line: Displays the opening price of the current hour
Expected Range Lines: Projects anticipated high and low levels based on 12 years of statistical data
Choose between Mean (average) or Median (middle value) calculations
Upper range line shows expected high
Lower range line shows expected low
All lines span exactly one hour from open to close
Optional labels display exact price values at the end of each line
Real-Time Statistics Table
Displays comprehensive live data for the current hour only:
Hour: Current hour in 12-hour format (e.g., "9AM", "2PM")
FVG Status: Shows detection state with color coding
"None Yet" (white background) - No FVG detected
"Bull FVG" (green background) - Bullish FVG identified
"Bear FVG" (red background) - Bearish FVG identified
1st 15min: Direction of first 15 minutes (Bullish/Bearish/Neutral/Pending)
Continuation %: Historical probability that the hour closes in the direction of the first 15 minutes
Green background with up arrow (↑) for bullish continuation probability
Red background with down arrow (↓) for bearish continuation probability
Avg Range %: Expected percentage range for the current hour based on 12-year mean
FVG Effect %: Historical effectiveness of FVG directional prediction
Shows "BISI→Bull %" for bullish FVGs (gap up predicting bullish hourly close)
Shows "SIBI→Bear %" for bearish FVGs (gap down predicting bearish hourly close)
Displays blank if no FVG has formed yet
Time Left: Real-time countdown timer showing minutes and seconds remaining in the hour (MM:SS format)
Hourly Bias: Historical directional tendency showing bullish or bearish percentage bias
H Open: Current hour's opening price
Exp Range: Projected price range showing "Low - High" based on selected statistic (mean or median)
Input Settings Explained:
Detection Settings
Lower Timeframe: Select the base timeframe for FVG detection
Options: 15S (15 seconds), 1 (1 minute), 5 (5 minutes)
Recommendation: Use 5-minute to match the statistical data sample
The indicator uses this timeframe to scan for FVG patterns even when viewing higher timeframes
Display Settings
Bullish FVG Color: Set the color and transparency for bullish (upward) FVG boxes
Bearish FVG Color: Set the color and transparency for bearish (downward) FVG boxes
Show Midpoint Lines: Toggle horizontal lines at the center of each FVG box
Midpoint Line Color: Customize the midpoint line color
Midpoint Line Style: Choose between Solid, Dotted, or Dashed line styles
Table Settings
Table Position: Choose from 9 locations:
Top: Left, Center, Right
Middle: Left, Center, Right
Bottom: Left, Center, Right
Table Text Size: Select from Tiny, Small, Normal, or Large for readability on different screen sizes
Hourly Lines Settings
Show Hourly Lines: Master toggle for all hourly reference lines
Show Hour Delimiter: Toggle the vertical line marking each hour's start
Delimiter Color: Customize color and transparency
Delimiter Width: Set line thickness (1-5)
Show Hourly Open: Toggle the horizontal line at the hour's opening price
Open Line Color: Customize color
Open Line Width: Set thickness (1-5)
Open Line Style: Choose Solid, Dashed, or Dotted
Show Range Lines: Toggle the expected high/low projection lines
Range Statistic: Choose "Mean" (12-year average) or "Median" (12-year middle value)
Range High Color: Customize upper range line color and transparency
Range Low Color: Customize lower range line color and transparency
Range Line Width: Set thickness (1-5)
Range Line Style: Choose Solid, Dashed, or Dotted
Show Line Labels: Toggle price labels at the end of all horizontal lines
Label Text Size: Choose Tiny, Small, or Normal
How It Works:
FVG Detection Logic:
The indicator scans price action on the selected lower timeframe (default: 1-minute) looking for Fair Value Gaps using a 3-candle pattern:
Bullish FVG: Formed when candle 's high is below candle 's low, creating an upward gap
Bearish FVG: Formed when candle 's low is above candle 's high, creating a downward gap
The detection is refined using volume imbalance logic by checking for body gaps (outside prints) on both sides of the middle candle. This narrows the FVG zone to areas where bodies don't touch, indicating stronger imbalances.
Only the first FVG that forms during each hour is displayed. If a bullish FVG forms first, it takes priority. The FVG box is drawn from the formation time through to the end of the hour.
Statistical Analysis:
All probability statistics are hardcoded from 12 years (2,400+ samples per hour) of NASDAQ futures analysis:
First 15-Minute Direction: At 15 minutes into each hour, the indicator determines if price closed above, below, or equal to the hour's opening price
Continuation Probability: Historical analysis shows the likelihood that the hour closes in the same direction as the first 15 minutes
Example: If 9AM's first 15 minutes are bullish, there's a 60.1% chance the entire 9AM hour closes bullish (lowest continuation hour)
4PM shows the highest continuation at 86.1% for bullish first 15 minutes
FVG Effectiveness: Tracks how often the first FVG's direction correctly predicts the hourly close direction
BISI (Bullish Imbalance/Sell-side Inefficiency) → Bullish close probability
SIBI (Bearish Imbalance/Buy-side Inefficiency) → Bearish close probability
Range Expectations: Mean and median values represent typical price movement percentage for each hour
9AM and 10AM show the largest ranges (~0.6%)
5PM shows minimal range (~0.06%) due to low liquidity
Hourly Reference Lines:
When each new hour begins:
Vertical delimiter marks the hour's start
Hourly open line plots at the first bar's opening price
Range projection lines calculate expected high/low:
Upper Range = Hourly Open + (Range% / 100 × Hourly Open)
Lower Range = Hourly Open - (Range% / 100 × Hourly Open)
Lines extend exactly to the hour's end time
Labels appear at line endpoints showing exact prices
Real-Time Updates:
FVG Status: Updates immediately when the first FVG forms
First 15min Direction: Locked in at the 15-minute mark
Countdown Timer: Uses timenow to update every second
Table Statistics: Refresh on every bar close
Timezone Handling:
All times are in America/New_York (Eastern Time)
Automatically filters weekend periods (Saturday and Sunday before 6PM)
Hour detection accounts for daylight saving time changes
Use Cases:
Intraday Trading Strategy Development:
FVG Entry Signals: Use the first hourly FVG as a directional bias
Bullish FVG + High continuation % = Strong long setup
Bearish FVG + High continuation % = Strong short setup
First 15-Minute Breakout: Combine first 15-min direction with continuation probabilities
Wait for first 15 minutes to complete
If continuation % is above 70%, trade in that direction
Example: 4PM bullish first 15 min = 86.1% chance hour closes bullish
Range Targeting: Use expected high/low lines as profit targets or reversal zones
Price approaching mean high = potential resistance
Price approaching mean low = potential support
Compare mean vs median for different risk tolerance (median is more conservative)
Hour Selection: Focus trading on hours with:
High FVG effectiveness (11AM: 81.5% BISI→Bull)
High continuation rates (4PM: 86.1% bull continuation)
Avoid low-continuation hours like 9AM (60.1%)
Time Management: Use the countdown timer to:
Enter early in the hour when FVG forms
Exit before hour-end if no follow-through
Avoid late-hour entries with <15 minutes remaining
Statistical Edge Identification:
Compare current hour's FVG against historical effectiveness
Identify when first 15-min direction contradicts FVG direction (conflict = caution)
Use hourly bias to confirm or contradict FVG signals
Monitor if price stays within expected range or breaks out (outlier moves)
Risk Management:
Expected range lines provide logical stop-loss placement
FVG Effect % helps size positions (higher % = larger position)
Time Left countdown aids in time-based stop management
Avoid trading hours with neutral bias or low continuation rates
Statistical Foundation:
All embedded statistics are derived from:
12 years of NASDAQ futures (NQ) continuous contract data
5-minute timeframe FVG detection methodology
24 hours per day analysis (excluding weekends)
2,400+ samples per hour for robust statistical validity
America/New_York timezone for session alignment
Data includes:
Hourly range analysis (mean, median, standard deviation)
First 15-minute directional analysis
FVG formation frequency and effectiveness
Continuation probability matrices
Bullish/bearish bias percentages
Best Practices:
✅ Do:
Use exclusively on NASDAQ futures (NQ1! or MNQ1!)
Apply on 5-minute charts for optimal FVG detection matching statistical samples
Wait for first 15 minutes to complete before acting on continuation probabilities
Combine FVG signals with continuation % and FVG Effect % for confluence
Use expected range lines as initial profit targets
Monitor the countdown timer for time-based trade management
Focus on hours with high statistical edges (4PM, 11AM, 10AM)
❌ Don't:
Use on other markets (ES, RTY, YM, stocks, forex, crypto) - statistics will be invalid
Rely solely on FVG without confirming with continuation probabilities
Trade during low-liquidity hours (5PM shows only 0.06% average range)
Ignore the first 15-minute direction when it conflicts with FVG direction
Apply to timeframes significantly different from 5-minute for FVG detection
Use median range expectations aggressively (they're conservative)
Technical Implementation Notes:
Timezone: Fixed to America/New_York with automatic DST adjustment
Weekend Filtering: Automatically hides data Saturday and Sunday before 6PM ET
Performance: Maximum 500 boxes and 500 lines for optimal chart rendering
Update Frequency: Table updates on every bar close; timer updates every second using timenow
FVG Priority: Bullish FVGs take precedence when both form simultaneously
Lower Timeframe Detection: Uses request.security_lower_tf for accurate sub-chart-timeframe FVG detection
Precision: All price labels use format.mintick for appropriate decimal precision
Big thanks to @Trades-Dont-Lie for the FPFVG code in his excellent indicator that I've used here
4H Candle Curves4H Candle Curves - Detailed User Guide
OVERVIEW
This indicator reveals curve vs continuation behavior in NQ Futures by analyzing how price responds after breaking the first-hour range. Based on 10+ years of statistical analysis (2013-2025, 3,136+ trading days), it identifies which 4-hour sessions exhibit mean reversion (curve) behavior versus trend continuation when Q2 (second hour) breaks Q1 (first hour) extremes.
⚠️ IMPORTANT: This indicator is specifically designed for NQ FUTURES ONLY. All curve probabilities and statistics were derived from a decade-long dataset of NQ 1-minute bars. Using this on other instruments will produce inaccurate results.
CORE CONCEPT: THE CURVE
What is a "Curve"?
A curve occurs when price breaks out of the first hour's range in Q2 (hour 2), but then reverses direction in the second half (Q3+Q4) to make a new extreme on the opposite side.
Curve Example (Upside Break → Downside Reversal):
Q1 (Hour 1): Price establishes range 25,000 - 25,050
Q2 (Hour 2): Price breaks ABOVE Q1 high, reaches 25,100
Q3+Q4 (Hours 3-4): Price curves back down, makes new LOW below 25,000
Result: Q2 broke high, but second half curved back to make new low below Q1 = CURVE
What is "Continuation"?
Continuation occurs when Q2 breaks Q1 range and the second half extends further in the same direction.
Continuation Example (Upside Break → Further Upside):
Q1 (Hour 1): Price establishes range 25,000 - 25,050
Q2 (Hour 2): Price breaks ABOVE Q1 high, reaches 25,100
Q3+Q4 (Hours 3-4): Price continues higher, makes new HIGH above 25,100
Result: Q2 broke high, second half made new high above Q2 = CONTINUATION
THE CRITICAL DISCOVERY: 6AM IS THE CURVE SESSION
Curve Probabilities by Session:
When Q2 Breaks Q1 HIGH:
6AM: 60.6% curve (new low below Q1) | 38.5% continuation
2AM: 38.4% curve | 46.7% continuation (balanced)
10AM: 17.2% curve | 60.4% continuation ← STRONG continuation bias
6PM: 29.6% curve | 59.0% continuation
10PM: 27.5% curve | 55.1% continuation
When Q2 Breaks Q1 LOW:
6AM: 64.4% curve (new high above Q1) | 35.0% continuation ← HIGHEST curve
2AM: 42.8% curve | 43.3% continuation (balanced)
10AM: 16.7% curve | 51.6% continuation ← STRONG continuation bias
6PM: 33.7% curve | 51.1% continuation
10PM: 33.1% curve | 48.6% continuation
Key Insight:
6AM is THE ONLY SESSION with >60% curve probability in both directions. This makes it a uniquely exploitable mean reversion session. When Q2 breaks Q1 range during 6AM, expect the second half to curve back 60-64% of the time.
10AM shows the opposite: Strong continuation bias (60% when Q2 breaks high, 52% when Q2 breaks low). 10AM breakouts tend to follow through.
HOW IT WORKS: THE QUARTER SYSTEM
The Six 4-Hour Candles (EST):
Each trading day (6pm-5pm) is divided into six 4-hour periods:
6PM (18:00-22:00) - Evening/Globex open | Blue box
10PM (22:00-02:00) - Asia session | Purple box
2AM (02:00-06:00) - Early London | Orange box
6AM (06:00-10:00) - Late London + NY Open | Green box ← THE CURVE SESSION
10AM (10:00-14:00) - NY Morning | Red box ← THE CONTINUATION SESSION
2PM (14:00-17:00) - NY Afternoon | Yellow box (3 hours only)
The Four Quarters:
Each 4-hour candle (except 2PM) is divided into four 1-hour quarters:
Q1 (Hour 1, minutes 0-60): Establishes initial range
Q2 (Hour 2, minutes 60-120): Tests Q1 range - breaks or holds?
Q3 (Hour 3, minutes 120-180): Second half begins
Q4 (Hour 4, minutes 180-240): Second half completes
2PM candle only has 3 hours (14:00-17:00), so quarters are adjusted accordingly.
The Three-Step Analysis:
STEP 1: Q1 Establishes Range
The first hour sets the high and low for the session. This becomes the reference range.
STEP 2: Q2 Break Detection
The indicator monitors whether Q2 (hour 2) breaks above Q1 high or below Q1 low.
STEP 3: Second Half Response
Once Q2 breaks Q1 range, the indicator tracks what happens in Q3+Q4:
Does price CURVE back to make new extreme on opposite side?
Does price CONTINUE to make new extreme in same direction?
Or does price stay within the established range?
VISUAL ELEMENTS EXPLAINED
1. 4-Hour Candle Boxes
Colored boxes display the high-to-low range of each 4H candle:
Blue = 6PM (evening session start)
Purple = 10PM (Asia session)
Orange = 2AM (early London)
Green = 6AM ← THE CURVE SESSION (watch for mean reversion)
Red = 10AM ← THE CONTINUATION SESSION (trend follow-through)
Yellow = 2PM (afternoon close, 3 hours only)
2. Quarter Separator Lines
Vertical dotted lines mark the boundaries between quarters (1H, 2H, 3H marks). This helps you see:
When Q1 ends (after 1 hour)
When Q2 ends / second half begins (after 2 hours)
When Q3 ends (after 3 hours)
3. Candle Name Labels
At the 2-hour mark (Q2/Q3 boundary), a label shows:
Candle name (e.g., "6am")
Directional indicator:
🔼 = Q2 broke Q1 HIGH
🔽 = Q2 broke Q1 LOW
⚠️ = Q2 broke BOTH Q1 high and low (extended range)
No symbol = Q2 stayed within Q1 range
THE LIVE STATUS TABLE
Located in your chosen corner (default: bottom-right), this table shows real-time analysis of the current 4H candle.
Header Row:
"LIVE: CANDLE" - Shows which 4H session you're currently in
Quarter Row:
"Quarter: Q1/Q2/Q3/Q4 (Hour X)" - Shows which quarter you're currently forming
STATUS Section:
The status updates dynamically based on what has happened:
During Q1-Q2 (First Half):
"⏳ Q1 Building..." - First hour forming, range being established
"⏳ Q2 Building..." - Second hour in progress, Q2 within Q1 range so far
"🔼 Q2 Broke Q1 HIGH" - Q2 has broken above Q1 high
"🔽 Q2 Broke Q1 LOW" - Q2 has broken below Q1 low
"⚠️ Q2 Broke BOTH Q1 Extremes" - Q2 extended range in both directions
During Q3-Q4 (Second Half):
"✓ CURVE CONFIRMED" - Q2 broke one direction, second half reversed to opposite side
"✓ CONTINUATION CONFIRMED" - Q2 broke one direction, second half extended further same direction
"⏳ 2nd Half In Progress" - Q2 broke Q1, waiting to see if curve or continuation
"📊 No Q2 Break Occurred" - Q2 stayed within Q1 range (no curve/continuation setup)
EXPECTATION Section:
Shows the probabilities based on the current state:
When Q2 breaks Q1 high in 6AM:
EXPECT 2nd half:
CURVE (low < Q1): 60.6%
CONT (high > Q2): 38.5%
This tells you there's a 60.6% chance the second half will curve back to make a new low below Q1, versus 38.5% chance it continues higher above Q2.
When curve/continuation is confirmed:
Q2 broke high → 2nd half made new LOW below Q1
Curve: 60.6%
Shows what actually happened and the historical probability.
Color Coding:
Purple background = Curve confirmed (mean reversion occurred)
Green background = Continuation confirmed (upside extension)
Red background = Continuation confirmed (downside extension)
Blue background = Second half in progress, watching
Yellow background = No Q2 break (no setup)
Gray background = Still in first half, building
THE CURVE REFERENCE TABLE
Located in your chosen corner (default: bottom-left), this table provides a quick reference for all sessions.
Table Structure:
TOP SECTION: "When Q2 BREAKS Q1 HIGH"
BOTTOM SECTION: "When Q2 BREAKS Q1 LOW"
How to Read:
"Curve" column = % of time second half makes new extreme on OPPOSITE side
"Cont" column = % of time second half makes new extreme in SAME direction
"Winner" column = Which behavior is more likely
Purple highlight = Curve is the winner (higher %)
Blue highlight = Continuation is the winner
🔥 symbol = Strong edge (>60%)
Quick Reference Usage:
You're in 10AM session, Q2 just broke Q1 high. Look at top section, 10AM row:
Curve: 17.2%
Cont: 60.4%
Winner: CONT
Interpretation: 10AM breakouts tend to follow through. Only 17% chance of curving back. Trade with the break, not against it.
PRACTICAL TRADING EXAMPLES
Example 1: Perfect 6AM Curve Setup
Scenario:
6AM candle in progress
7:00 AM: Q1 ends, range is 18,000 - 18,050
7:30 AM: Price breaks above 18,050, reaches 18,075 (Q2 broke Q1 high)
Live table shows: "🔼 Q2 Broke Q1 HIGH"
Expectation: "CURVE (low < Q1): 60.6%"
Trading Decision:
Even though price broke to new highs, the 60.6% curve probability suggests looking for short opportunities expecting price to curve back below 18,000 in Q3-Q4.
Typical Outcome:
8:15 AM (Q3): Price starts declining
9:15 AM (Q4): Price makes new low at 17,990
Result: ✓ CURVE CONFIRMED
Example 2: 10AM Continuation Signal
Scenario:
10AM candle in progress
11:00 AM: Q1 ends, range is 18,100 - 18,150
11:45 AM: Price breaks above 18,150, reaches 18,180 (Q2 broke Q1 high)
Live table shows: "🔼 Q2 Broke Q1 HIGH"
Expectation: "CONT (high > Q2): 60.4%"
Trading Decision:
With 60.4% continuation probability, breakout likely to follow through. Look for long opportunities expecting extension above 18,180 in Q3-Q4.
Typical Outcome:
12:30 PM (Q3): Price continues higher to 18,200
1:15 PM (Q4): Price makes new high at 18,225
Result: ✓ CONTINUATION CONFIRMED
Example 3: Using Reference Table During Live Trading
You see Q2 breaking Q1 low during 2AM session:
Quick reference check:
2AM row, "When Q2 BREAKS Q1 LOW" section
Curve: 42.8% | Cont: 43.3% | Winner: Balanced
Interpretation: This is a coin flip - 2AM session is balanced when Q2 breaks low. Don't force a directional bias. Wait for second half price action confirmation or skip the setup.
Example 4: No Setup Scenario
Scenario:
6AM candle, Q2 ends at 8:00 AM
Q2 stayed within Q1 range (no break above or below)
Live table shows: "📊 No Q2 Break Occurred"
Trading Decision:
No curve/continuation setup exists. This analysis only applies when Q2 breaks Q1 range. Monitor for different strategies or wait for next 4H candle.
UNDERSTANDING THE UNDERLYING METHODOLOGY
Data Foundation:
Instrument: NQ Futures (E-mini NASDAQ-100)
Timeframe: 1-minute bars for precise quarter tracking
Period: January 2013 - December 2025
Sample: 3,136+ complete trading days
Total 4H Candles Analyzed: ~18,800+ individual sessions
Analysis Process:
For each 4H candle in the dataset:
Calculate Q1 high and low (first hour range)
Track whether Q2 breaks Q1 high, Q1 low, both, or neither
When Q2 breaks Q1 range, measure second half response:
Did Q3+Q4 make new low below Q1? (curve when Q2 broke high)
Did Q3+Q4 make new high above Q1? (curve when Q2 broke low)
Did Q3+Q4 make new high above Q2? (continuation when Q2 broke high)
Did Q3+Q4 make new low below Q2? (continuation when Q2 broke low)
Calculate percentages for each session
Why NQ-Specific?
Different futures contracts exhibit different intraday personality:
NQ (NASDAQ):
Tech-heavy, volatility-prone
6AM shows extreme curve behavior (60-64%) due to NY Open reversal tendency
10AM shows strong continuation (60%) as trends establish
ES (S&P 500) would show different probabilities because:
Lower volatility than NQ
Different institutional participation patterns
Different response to macro events
The indicator's probabilities are calibrated specifically to NQ behavior patterns. Using it on ES, RTY, or other instruments will produce misleading signals.
ORIGINALITY & INNOVATION
What Makes This Indicator Unique:
Quarter-Based Curve Analysis: Unlike traditional indicators that only identify breakouts, this tracks what happens after the breakout. The curve vs continuation framework is novel and provides directional edge.
Session-Specific Behavior: Recognizes that 6AM behaves fundamentally differently than 10AM. Most indicators apply the same logic across all sessions. This indicator provides session-specific probabilities.
Statistical Validation: Every probability shown is backed by 10+ years of data (2,900+ candles per session). Not based on theory or discretionary observation.
Real-Time Quarter Tracking: Precisely identifies which quarter you're in and what stage of the pattern is forming. Provides forward-looking probabilities based on current state.
The 6AM Discovery: The 60-64% curve probability in 6AM is a quantified, repeatable edge that contradicts traditional "breakout = continuation" assumptions. This session exhibits mean reversion characteristics that most traders miss.
Dual-Direction Analysis: Tracks both upside breaks (Q2 > Q1 high) and downside breaks (Q2 < Q1 low) separately, as they can have different probabilities.
Visual Quarter System: The combination of colored boxes, quarter separators, and real-time labels provides instant visual understanding of pattern stage and expected behavior.
HOW TO USE THIS INDICATOR
Step 1: Identify Current 4H Candle
Check which colored box you're in and what session it represents.
Step 2: Wait for Q2 to Complete
The setup doesn't exist until Q2 (hour 2) breaks Q1 range. Monitor the live table.
Step 3: Check Q2 Break Status
Did Q2 break Q1 high? Q1 low? Both? Or neither?
Step 4: Consult Reference Table
Look up current session in curve reference table. What's the probability?
Step 5: Apply Session-Specific Strategy
For 6AM (60-64% curve):
Q2 breaks high → Expect curve back for new low
Q2 breaks low → Expect curve back for new high
Strategy: FADE the Q2 break, look for reversal entries in Q3-Q4
For 10AM (52-60% continuation):
Q2 breaks high → Expect continuation higher
Q2 breaks low → Expect continuation lower
Strategy: TRADE WITH the Q2 break, look for continuation entries in Q3-Q4
For 2AM (38-43% curve, 43-47% continuation):
Balanced probabilities
Strategy: Wait for Q3 price action to confirm direction, or skip
For 6PM/10PM (50-59% continuation):
Moderate continuation bias
Strategy: Lean with the break but use tight stops
Step 6: Monitor Live Status
Watch the live table for confirmation:
"✓ CURVE CONFIRMED" = Mean reversion occurred
"✓ CONTINUATION CONFIRMED" = Follow-through occurred
"⏳ 2nd Half In Progress" = Still developing
BEST PRACTICES
Focus on 6AM for curve trades - This is THE high-probability mean reversion session
Focus on 10AM for continuation trades - This is THE high-probability breakout session
Be cautious with 2AM - Balanced probabilities mean lower edge
Use quarter separators - Enter trades early in Q3 after Q2 break, don't wait for Q4
Combine with price action - Don't blindly fade 6AM or follow 10AM; wait for confirming price structure
Respect the 60% rule - 6AM curve happens 60% of time, which means 40% it doesn't. Manage risk accordingly
Watch for "No Q2 Break" - If Q2 doesn't break Q1, this analysis doesn't apply
Consider overnight context - If 6AM opens with huge gap, curve probability may be affected
SETTINGS & CUSTOMIZATION
Display Settings:
Show 4H Candle Boxes - Toggle colored range boxes
Box Colors - Customize color for each session
Show Quarter Separators - Show/hide 1H, 2H, 3H lines
Show Candle Name Labels - Show/hide session labels at 2H mark
Separator Line Style - Solid/Dashed/Dotted
Max Historical Candles - How many past 4H candles to display (1-50)
Table Settings:
Show Live Status Table - Toggle real-time analysis table
Show Curve Reference Table - Toggle probability reference table
Table Positions - Place tables in any corner
Table Text Size - Tiny/Small/Normal
LIMITATIONS & DISCLAIMERS
NQ FUTURES ONLY - All probabilities are NQ-specific, do not use on other instruments
Requires Q2 break - No curve/continuation setup exists if Q2 stays within Q1 range
Probabilities, not certainties - 60% means it happens 6 out of 10 times, not every time
Lower timeframe noise - 1-minute tracking can be choppy, consider using 5min+ for entries
Gap days - Large overnight gaps may affect curve/continuation probabilities
Not standalone - Use as confluence with your strategy, not as sole decision factor
Historical performance - Past statistics don't guarantee future results
WHY THE CURVE CONCEPT MATTERS
Traditional trading wisdom says: "Breakout = Continuation"
This indicator proves that's not always true. Specifically, during the 6AM session (late London + NY Open), when Q2 breaks the Q1 range, price curves back to the opposite extreme 60-64% of the time.
This creates a unique exploitable edge:
Most breakout traders go LONG when Q2 breaks Q1 high
But in 6AM, 60.6% of the time, price curves back down for new low
Shorting the breakout (counter-intuitive) is the higher-probability trade
The 10AM session shows the opposite:
Breakouts in 10AM tend to follow through (52-60%)
Traditional "trade the breakout" strategy works better here
By knowing which session you're in, you can adapt your strategy to match the session's personality.
FINAL NOTES
This indicator distills 10+ years of NQ intraday behavior into actionable, session-specific probabilities. The discovery that 6AM exhibits 60-64% curve behavior while 10AM exhibits 52-60% continuation behavior provides a statistical edge for mean reversion and trend-following traders respectively.
The highest-probability setups:
6AM Q2 break → FADE (60-64% edge for curve)
10AM Q2 break → FOLLOW (52-60% edge for continuation)
2AM = SKIP (balanced probabilities, no clear edge)
Master the 6AM curve and 10AM continuation first. These two sessions provide the clearest statistical edges.
Remember: Trade with proper risk management. This tool provides probabilities based on historical behavior, not predictions of future performance.
Black-76 Options on Futures [Loxx]Black-76 Options on Futures is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". This version is to price Options on Futures. The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDvol, Speed
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Rate/Carry Greeks: Rho futures option
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The Black-Scholes-Merton model can be "generalized" by incorporating a cost-of-carry rate b. This model can be used to price European options on stocks, stocks paying a continuous dividend yield, options on futures , and currency options:
c = S * e^((b - r) * T) * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(-d2) - S * e^((b - r) * T) * N(-d1)
where
d1 = (log(S / X) + (b + v^2 / 2) * T) / (v * T^0.5)
d2 = d1 - v * T^0.5
b = r ... gives the Black and Scholes (1973) stock option model.
b = r — q ... gives the Merton (1973) stock option model with continuous dividend yield q.
b = 0 ... gives the Black (1976) futures option model. <== this is the one used for this indicator!
b = 0 and r = 0 ... gives the Asay (1982) margined futures option model.
b = r — rf ... gives the Garman and Kohlhagen (1983) currency option model.
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
d = dividend yield
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Session Relative VolumeSession Relative Volume is an advanced intraday futures volume indicator that analyzes volume separately for Asia, London, and New York sessions - something standard relative volume tools can’t do.
Instead of aggregating the entire day’s volume, the indicator compares current volume to historical averages for the same session and time of day, allowing you to spot true volume strength and meaningful spikes, especially around session opens.
Background
Relative volume helps traders spot unusual activity: high volume often signals institutional participation and trending days, while low volume suggests weak commitment and possible mean reversion. In futures markets, sessions ( Asia, London, New York ) must be analyzed separately, but TradingView’s Relative Volume in Time aggregates the entire day, masking session-specific behavior - especially during the New York open. Since volume can vary by more than 20× between sessions, standard averages struggle to identify meaningful volume spikes when trader conviction matters most.
Indicator Description
The “Session Relative Volume” indicator solves these problems by calculating historical average volume specific to each session and time of day, and comparing current volume against those benchmarks. It offers four display modes and fully customizable session times
Altogether, it provides traders with a powerful tool for analyzing intraday futures volume, helping to better assess market participation, trader conviction, and overall market conditions - ultimately supporting improved trading decisions.
Parameters
Mode – display mode:
R-VOL: Relative cumulative session-specific volume at time
VOL CUM: Cumulative session volume at time compared to historical average cumulative session-specific volume
VOL AVG: Average session intrabar volume at time compared to historical average session-specific intrabar volume
VOL: Individual bars volume, highlighting (solid color) unusual spikes
Lookback period – number of days used for calculating historical average session volume at time
MA Len – length of the moving average, representing average bar volume within a session based on previous periods (different from historical cumulative volume!). Used only in VOL and VOL AVG modes
MA Thresh – deviation from moving average, used to detect bar volume spikes (bar volume > K × moving average)
Start Time – End Time and Time Zone parameters for each session. The time zone must be set using TradingView’s format (e.g., GMT+1).
Robrechtian Long-Medium Breakout Trend SystemRobrechtian Long–Medium-Term Breakout Trend System
A professional, rule-based trend-following strategy designed to capture large, sustained price movements using pure price action and breakouts.
This system follows long-established trend-following philosophy: no prediction, no volatility targeting, and no profit targets. Only disciplined entries, position additions, and exits driven entirely by trend structure.
Core Principles
Breakout-driven entries: Initial positions are taken only when price breaks above/below the 80-day Donchian channel, confirming a long–medium-term trend shift.
Short-term confirmation: Breakouts must also exceed the 20-day channel, reducing false positives.
Trend-direction filter: A 50-day moving average slope filter ensures alignment with the broader trend.
Explosive bar filter: Entries avoid excessively large, single-candle expansions (>2.5× ATR(20)) to prevent chasing exhaustion spikes.
Pyramiding into strength: Additional units are added only when price makes fresh 20-day breakouts in the direction of the trend. No scaling out. No adding on dips.
Exit only on trend violation: Positions are closed exclusively when price breaks the opposite 80-day channel. This preserves unlimited upside while enforcing disciplined exits.
Pure trend philosophy: No volatility targeting, no smoothing, no discretionary overrides, no optimization for short-term performance.
Intended Use
This system is designed primarily for diversified futures portfolios, where diversification across dozens of globally liquid markets creates robustness and stability. However, it may also be used on individual assets for educational and analytical purposes.
The system embraces the core trend-following logic:
Small losses, big winners, and unlimited upside when trends persist.
⚠️ WARNINGS / DISCLAIMERS
⚠️ Warning 1 — This strategy is not optimized for single stocks
The Robrechtian Trend System is designed for multi-asset futures portfolios, not single equities.
Performance on individual tickers may vary greatly due to lack of diversification.
⚠️ Warning 2 — Trend following includes substantial drawdowns
Deep drawdowns are a normal and expected feature of all long-term trend-following systems.
The strategy does not attempt to smooth returns or manage volatility.
If you seek steady, low-volatility equity curves, this system is not suitable.
⚠️ Warning 3 — No volatility targeting or risk smoothing
This system intentionally avoids volatility-based position sizing.
Trades may experience larger fluctuations than systems using risk parity or vol targeting.
⚠️ Warning 4 — Not financial advice
This script is for educational and research purposes only.
Past performance does not guarantee future results.
Use at your own risk.
⚠️ Warning 5 — TradingView backtests have known limitations
TradingView does not simulate:
futures contract roll logic
slippage
real bid/ask spreads
liquidity conditions
limit-up/limit-down behavior
Results may vary from live market execution.
Micro/Mini P&L [LDT]Overview
Micro/Mini P&L is a risk and P&L visualization tool built primarily for futures traders.
It provides accurate dollar-based calculations for either micros or minis, regardless of which contract type you are currently charting.
The indicator automatically detects your instrument (NQ, MNQ, ES, MES, YM, RTY, CL, GC, etc.) and adjusts point-value data accordingly, allowing you to chart one contract while evaluating risk for another.
This removes the need for manual conversions and keeps your position data consistent at all times.
Although optimized for futures, the tool also works on any other asset for general trade-level visualization.
Features
• Automatic instrument detection for major futures markets including NQ/MNQ, ES/MES, YM/MYM, RTY/M2K, CL/MCL, GC/MGC and others.
Point-value logic adjusts instantly based on the detected symbol ensuring accurate calculations without manual configuration.
• Micro/Mini display toggle, allowing you to calculate dollar values for either contract type regardless of which contract is on your chart.
Useful for traders who prefer charting minis whilst trading micros or the opposite.
• Trade-level visualization, including Entry, Take Profit and Stop Loss levels with automatically drawn lines and optional TP/SL zone shading for clear and structured display on the chart.
• Dynamic P/L calculations, showing both point-based and dollar-based metrics in real time.
This includes TP/SL dollar values, points to target/stop, real-time P/L and an optional risk-reward ratio.
• Adaptive risk table, displaying contract counts from 1 up to your selected maximum, total dollar risk for each row and highlighting your chosen contract size.
This provides a straightforward method for evaluating risk, scaling and position sizing.
• Customizable display options, including color settings, label visibility, extension length, bar offsets and table positioning.
This allows the tool to remain clean, unobtrusive and easy to integrate into any chart layout.
Purpose
This tool is designed to give futures traders a clear, consistent and reliable way to view dollar-accurate risk per contract without performing manual conversions.
Whether you trade micros or minis, the displayed values always align with your selected contract type, even when charting the opposite market.
VIX: Backwardation Vs ContangoVIX: Backwardation Vs Contango
Quickly visualize Contango vs Backwardation in the S&P 500 Volatility Index by plotting the prices of the futures contracts over the next 9 months
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
TO UPDATE(every few months recommended): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of several similar indicators: Meats | Metals | Grains | VIX
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and pin to Scale A to plot on the same scale as price
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Meats: Backwardation/CantangoMEATS: Live Cattle , Feeder Cattle, Lean Hogs (LE, GF , HE)
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
Note: indicator does NOT map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Live Cattle (LE); 8 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
CryptoFlux Dynamo [JOAT]CryptoFlux Dynamo: Velocity Scalping Strategy
WHAT THIS STRATEGY IS
CryptoFlux Dynamo is an open-source Pine Script v6 strategy designed for momentum-based scalping on cryptocurrency perpetual futures. It combines multiple technical analysis methods into a unified system that adapts its behavior based on current market volatility conditions.
This script is published open-source so you can read, understand, and modify the complete logic. The description below explains everything the strategy does so that traders who cannot read Pine Script can fully understand how it works before using it.
HOW THIS STRATEGY IS ORIGINAL AND WHY THE INDICATORS ARE COMBINED
This strategy uses well-known indicators (MACD, EMA, RSI, MFI, Bollinger Bands, Keltner Channels, ATR). The originality is not in the individual indicators themselves, but in the specific way they are integrated into a regime-adaptive system. Here is the detailed justification for why these components are combined and how they work together:
The Problem Being Solved:
Standard indicator-based strategies use fixed thresholds. For example, a typical MACD strategy might enter when the histogram crosses above zero. However, in cryptocurrency markets, volatility changes dramatically throughout the day and week. A MACD crossover during a low-volatility consolidation period has very different implications than the same crossover during a high-volatility trending period. Using the same entry thresholds and stop distances in both conditions leads to either:
Too many false signals during consolidation (if thresholds are loose)
Missing valid opportunities during expansion (if thresholds are tight)
Stops that are too tight during volatility spikes (causing premature exits)
Stops that are too wide during compression (giving back profits)
The Solution Approach:
This strategy first classifies the current volatility regime using normalized ATR (ATR as a percentage of price), then dynamically adjusts ALL other parameters based on that classification. This creates a context-aware system rather than a static threshold comparison.
How Each Component Contributes to the System:
ATR-Based Regime Classification (The Foundation)
The strategy calculates ATR over 21 periods, smooths it with a 13-period EMA to reduce noise from wicks, then divides by price to get a normalized percentage. This ATR% is classified into three regimes:
- Compression (ATR% < 0.8%): Market is consolidating, breakouts are more likely but false signals are common
- Expansion (ATR% 0.8% - 1.6%): Normal trending conditions
- Velocity (ATR% > 1.6%): High volatility, larger moves but also larger adverse excursions
This regime classification then controls stop distances, profit targets, trailing stop offsets, and signal strength requirements. The regime acts as a "meta-parameter" that tunes the entire system.
EMA Ribbon (8/21/34) - Trend Structure Detection
The three EMAs establish trend direction and structure. When EMA 8 > EMA 21 > EMA 34, the trend structure is bullish. The slope of the middle EMA (21) is calculated over 8 bars and converted to degrees using arctangent. This slope measurement quantifies trend strength, not just direction.
Why these specific periods? The 8/21/34 sequence follows Fibonacci-like spacing and provides good separation on 5-minute cryptocurrency charts. The fast EMA (8) responds to immediate price action, the mid EMA (21) represents the short-term trend, and the slow EMA (34) acts as a trend filter.
The EMA ribbon works with the regime classification: during compression regimes, the strategy requires stronger ribbon alignment before entry because false breakouts are more common.
MACD (8/21/5) - Momentum Measurement
The MACD uses faster parameters (8/21/5) than the standard (12/26/9) because cryptocurrency markets move faster than traditional markets. The histogram is smoothed with a 5-period EMA to reduce noise.
The key innovation is the adaptive histogram baseline. Instead of using a fixed threshold, the strategy calculates a rolling baseline from the smoothed absolute histogram value, then multiplies by a sensitivity factor (1.15). This means the threshold for "significant momentum" automatically adjusts based on recent momentum levels.
The MACD works with the regime classification: during velocity regimes, the histogram baseline is effectively higher because recent momentum has been stronger, preventing entries on relatively weak momentum.
RSI (21 period) and MFI (21 period) - Independent Momentum Confirmation
RSI measures momentum using price changes only. MFI (Money Flow Index) measures momentum using price AND volume. By requiring both to confirm, the strategy filters out price moves that lack volume support.
The 21-period length is longer than typical (14) to reduce noise on 5-minute charts. The trigger threshold (55 for longs, 45 for shorts) is slightly offset from 50 to require momentum in the trade direction, not just neutral readings.
These indicators work together: a signal requires RSI > 55 AND MFI > 55 for longs. This dual confirmation reduces false signals from price manipulation or low-volume moves.
Bollinger Bands (1.5 mult) and Keltner Channels (1.8 mult) - Squeeze Detection
When Bollinger Bands contract inside Keltner Channels, volatility is compressing and a breakout is likely. This is the "squeeze" condition. When the bands expand back outside the channels, the squeeze "releases."
The strategy uses a 1.5 multiplier for Bollinger Bands (tighter than standard 2.0) and 1.8 for Keltner Channels. These values were chosen to identify meaningful squeezes on 5-minute cryptocurrency charts without triggering too frequently.
The squeeze detection works with the regime classification: squeeze releases during compression regimes receive additional signal strength points because breakouts from consolidation are more significant.
Volume Impulse Detection - Institutional Participation Filter
The strategy calculates a volume baseline (34-period SMA) and standard deviation. A "volume impulse" is detected when current volume exceeds the baseline by 1.15x OR when the volume z-score exceeds 0.5.
This filter ensures entries occur when there is meaningful market participation, not during low-volume periods where price moves are less reliable.
Volume impulse is required for all entries and adds points to the composite signal strength score.
Cycle Oscillator - Trend Alignment Filter
The strategy calculates a 55-period EMA as a cycle basis, then measures price deviation from this basis as a percentage. When price is more than 0.15% above the cycle basis, the cycle is bullish. When more than 0.15% below, the cycle is bearish.
This filter prevents counter-trend entries. Long signals require bullish cycle alignment; short signals require bearish cycle alignment.
BTC Dominance Filter (Optional) - Market Regime Filter
The strategy can optionally use BTC.D (Bitcoin Dominance) as a market regime filter. When BTC dominance is rising (slope > 0.12), the market is in "risk-off" mode and long entries on altcoins are filtered. When dominance is falling (slope < -0.12), short entries are filtered.
This filter is optional because the BTC.D data feed may lag during low-liquidity periods.
How The Components Work Together (The Mashup Justification):
The strategy uses a composite scoring system where each signal pathway contributes points:
Trend Break pathway (30 points): Requires EMA ribbon alignment + positive slope + price breaks above recent structure high
Momentum Surge pathway (30 points): Requires MACD histogram > adaptive baseline + MACD line > signal + RSI > 55 + MFI > 55 + volume impulse
Squeeze Release pathway (25 points): Requires BB inside KC (squeeze) then release + momentum bias + histogram confirmation
Micro Pullback pathway (15 points): Requires shallow retracement to fast EMA within established trend + histogram confirmation + volume impulse
Additional modifiers:
+5 points if volume impulse is present, -5 if absent
+5 points in velocity regime, -2 in compression regime
+5 points if cycle is aligned, -5 if counter-trend
A trade only executes when the composite score reaches the minimum threshold (default 55) AND all filters agree (session, cycle bias, BTC dominance if enabled).
This scoring system is the core innovation: instead of requiring ALL conditions to be true (which would generate very few signals) or ANY condition to be true (which would generate too many false signals), the strategy requires ENOUGH conditions to be true, with different conditions contributing different weights based on their reliability.
HOW THE STRATEGY CALCULATES ENTRIES AND EXITS
Entry Logic:
1. Calculate current volatility regime from ATR%
2. Calculate all indicator values (MACD, EMA, RSI, MFI, squeeze, volume)
3. Evaluate each signal pathway and sum points
4. Check all filters (session, cycle, dominance, kill switch)
5. If composite score >= 55 AND all filters pass, generate entry signal
6. Calculate position size based on risk per trade and regime-adjusted stop distance
7. Execute entry with regime name as comment
Position Sizing Formula:
RiskCapital = Equity * (0.65 / 100)
StopDistance = ATR * StopMultiplier(regime)
RawQuantity = RiskCapital / StopDistance
MaxQuantity = Equity * (12 / 100) / Price
Quantity = min(RawQuantity, MaxQuantity)
Quantity = round(Quantity / 0.001) * 0.001
This ensures each trade risks approximately 0.65% of equity regardless of volatility, while capping total exposure at 12% of equity.
Stop Loss Calculation:
Stop distance is ATR multiplied by a regime-specific multiplier:
Compression regime: 1.05x ATR (tighter stops because moves are smaller)
Expansion regime: 1.55x ATR (standard stops)
Velocity regime: 2.1x ATR (wider stops to avoid premature exits during volatility)
Take Profit Calculation:
Target distance is ATR multiplied by regime-specific multiplier and base risk/reward:
Compression regime: 1.6x ATR * 1.8 base R:R * 0.9 regime bonus = approximately 2.6x ATR
Expansion regime: 2.05x ATR * 1.8 base R:R * 1.0 regime bonus = approximately 3.7x ATR
Velocity regime: 2.8x ATR * 1.8 base R:R * 1.15 regime bonus = approximately 5.8x ATR
Trailing Stop Logic:
When adaptive trailing is enabled, the strategy calculates a trailing offset based on ATR and regime:
Compression regime: 1.1x base offset (looser trailing to avoid noise)
Expansion regime: 1.0x base offset (standard)
Velocity regime: 0.8x base offset (tighter trailing to lock in profits during fast moves)
The trailing stop only activates when it would be tighter than the initial stop.
Momentum Fail-Safe Exits:
The strategy closes positions early if momentum reverses:
Long positions close if MACD histogram turns negative OR EMA ribbon structure breaks (fast EMA crosses below mid EMA)
Short positions close if MACD histogram turns positive OR EMA ribbon structure breaks
This prevents holding through momentum reversals even if stop loss hasn't been hit.
Kill Switch:
If maximum drawdown exceeds 6.5%, the strategy disables new entries until manually reset. This prevents continued trading during adverse conditions.
HOW TO USE THIS STRATEGY
Step 1: Apply to Chart
Use a 5-minute chart of a high-liquidity cryptocurrency perpetual (BTC/USDT, ETH/USDT recommended)
Ensure at least 200 bars of history are loaded for indicator stabilization
Use standard candlestick charts only (not Heikin Ashi, Renko, or other non-standard types)
Step 2: Understand the Visual Elements
EMA Ribbon: Three lines (8/21/34 periods) showing trend structure. Bullish when stacked upward, bearish when stacked downward.
Background Color: Shows current volatility regime
- Indigo/dark blue = Compression (low volatility)
- Purple = Expansion (normal volatility)
- Magenta/pink = Velocity (high volatility)
Bar Colors: Reflect signal strength divergence. Brighter colors indicate stronger directional bias.
Triangle Markers: Entry signals. Up triangles below bars = long entry. Down triangles above bars = short entry.
Dashboard (top-right): Real-time display of regime, ATR%, signal strengths, position status, stops, targets, and risk metrics.
Step 3: Interpret the Dashboard
Regime: Current volatility classification (Compression/Expansion/Velocity)
ATR%: Normalized volatility as percentage of price
Long/Short Strength: Current composite signal scores (0-100)
Cycle Osc: Price deviation from 55-period EMA as percentage
Dominance: BTC.D slope and filter status
Position: Current position direction or "Flat"
Stop/Target: Current stop loss and take profit levels
Kill Switch: Status of drawdown protection
Volume Z: Current volume z-score
Impulse: Whether volume impulse condition is met
Step 4: Adjust Parameters for Your Needs
For more conservative trading: Increase "Minimum Composite Signal Strength" to 65 or higher
For more aggressive trading: Decrease to 50 (but expect more false signals)
For higher timeframes (15m+): Increase "Structure Break Window" to 12-15, increase "RSI Momentum Trigger" to 58
For lower liquidity pairs: Increase "Volume Impulse Multiplier" to 1.3, increase slippage in strategy properties
To disable short selling: Uncheck "Enable Short Structure"
To disable BTC dominance filter: Uncheck "BTC Dominance Confirmation"
STRATEGY PROPERTIES (BACKTEST SETTINGS)
These are the exact settings used in the strategy's Properties dialog box. You must use these same settings when evaluating the backtest results shown in the publication:
Initial Capital: $100,000
Justification: This amount is higher than typical retail accounts. I chose this value to demonstrate percentage-based returns that scale proportionally. The strategy uses percentage-based position sizing (0.65% risk per trade), so a $10,000 account would see the same percentage returns with 10x smaller position sizes. The absolute dollar amounts in the backtest should be interpreted as percentages of capital.
Commission: 0.04% (commission_value = 0.04)
Justification: This reflects typical perpetual futures exchange fees. Major exchanges charge between 0.02% (maker) and 0.075% (taker). The 0.04% value is a reasonable middle estimate. If your exchange charges different fees, adjust this value accordingly. Higher fees will reduce net profitability.
Slippage: 1 tick
Justification: This is conservative for liquid pairs like BTC/USDT on major exchanges during normal conditions. For less liquid altcoins or during high volatility, actual slippage may be higher. If you trade less liquid pairs, increase this value to 2-3 ticks for more realistic results.
Pyramiding: 1
Justification: No position stacking. The strategy holds only one position at a time. This simplifies risk management and prevents overexposure.
calc_on_every_tick: true
Justification: The strategy evaluates on every price update, not just bar close. This is necessary for scalping timeframes where waiting for bar close would miss opportunities. Note that this setting means backtest results may differ slightly from bar-close-only evaluation.
calc_on_order_fills: true
Justification: The strategy recalculates immediately after order fills for faster response to position changes.
RISK PER TRADE JUSTIFICATION
The default risk per trade is 0.65% of equity. This is well within the TradingView guideline that "risking more than 5-10% on a trade is not typically considered viable."
With the 12% maximum exposure cap, even if the strategy takes multiple consecutive losses, the total risk remains manageable. The kill switch at 6.5% drawdown provides additional protection by halting new entries during adverse conditions.
The position sizing formula ensures that stop distance (which varies by regime) is accounted for, so actual risk per trade remains approximately 0.65% regardless of volatility conditions.
SAMPLE SIZE CONSIDERATIONS
For statistically meaningful backtest results, you should select a dataset that generates at least 100 trades. On 5-minute BTC/USDT charts, this typically requires:
2-3 months of data during normal market conditions
1-2 months during high-volatility periods
3-4 months during low-volatility consolidation periods
The strategy's selectivity (requiring 55+ composite score plus all filters) means it generates fewer signals than less filtered approaches. If your backtest shows fewer than 100 trades, extend the date range or reduce the minimum signal strength threshold.
Fewer than 100 trades produces statistically unreliable results. Win rate, profit factor, and other metrics can vary significantly with small sample sizes.
STRATEGY DESIGN COMPROMISES AND LIMITATIONS
Every strategy involves trade-offs. Here are the compromises made in this design and the limitations you should understand:
Selectivity vs. Opportunity Trade-off
The 55-point minimum threshold filters many potential trades. This reduces false signals but also misses valid setups that don't meet all criteria. Lowering the threshold increases trade frequency but decreases win rate. There is no "correct" threshold; it depends on your preference for fewer higher-quality signals vs. more signals with lower individual quality.
Regime Classification Lag
The ATR-based regime detection uses historical data (21 periods + 13-period smoothing). It cannot predict sudden volatility spikes. During flash crashes or black swan events, the strategy may be classified in the wrong regime for several bars before the classification updates. This is an inherent limitation of any lagging indicator.
Indicator Parameter Sensitivity
The default parameters (MACD 8/21/5, EMA 8/21/34, RSI 21, etc.) are tuned for BTC/ETH perpetuals on 5-minute charts during 2024 market conditions. Different assets, timeframes, or market regimes may require different parameters. There is no guarantee that parameters optimized on historical data will perform similarly in the future.
BTC Dominance Filter Limitations
The CRYPTOCAP:BTC.D data feed may lag during low-liquidity periods or weekends. The dominance slope calculation uses a 5-bar SMA, adding additional delay. If you notice the filter behaving unexpectedly, consider disabling it.
Backtest vs. Live Execution Differences
TradingView backtesting does not replicate actual broker execution. Key differences:
Backtests assume perfect fills at calculated prices; real execution involves order book depth, latency, and partial fills
The calc_on_every_tick setting improves backtest realism but still cannot capture sub-bar price action or order book dynamics
Commission and slippage settings are estimates; actual costs vary by exchange, time of day, and market conditions
Funding rates on perpetual futures are not modeled in backtests and can significantly impact profitability over time
Exchange-specific limitations (position limits, liquidation mechanics, order types) are not modeled
Market Condition Dependencies
This strategy is designed for trending and breakout conditions. During extended sideways consolidation with no clear direction, the strategy may generate few signals or experience whipsaws. No strategy performs well in all market conditions.
Cryptocurrency-Specific Risks
Cryptocurrency markets operate 24/7 without session boundaries. This means:
No natural "overnight" risk reduction
Volatility can spike at any time
Liquidity varies significantly by time of day
Exchange outages or issues can occur at any time
WHAT THIS STRATEGY DOES NOT DO
To be straightforward about limitations:
This strategy does not guarantee profits. Past backtest performance does not indicate future results.
This strategy does not predict the future. It reacts to current conditions based on historical patterns.
This strategy does not account for funding rates, which can significantly impact perpetual futures profitability.
This strategy does not model exchange-specific execution issues (partial fills, requotes, outages).
This strategy does not adapt to fundamental news events or black swan scenarios.
This strategy is not optimized for all market conditions. It may underperform during extended consolidation.
IMPORTANT RISK WARNINGS
Past performance does not guarantee future results. The backtest results shown reflect specific historical market conditions and parameter settings. Markets change constantly, and strategies that performed well historically may underperform or lose money in the future. A single backtest run does not constitute proof of future profitability.
Trading involves substantial risk of loss. Cryptocurrency derivatives are highly volatile instruments. You can lose your entire investment. Only trade with capital you can afford to lose completely.
This is not financial advice. This strategy is provided for educational and informational purposes only. It does not constitute investment advice, trading recommendations, or any form of financial guidance. The author is not a licensed financial advisor.
You are responsible for your own decisions. Before using this strategy with real capital:
Thoroughly understand the code and logic by reading the open-source implementation
Forward test with paper trading or very small positions for an extended period
Verify that commission, slippage, and execution assumptions match your actual trading environment
Understand that live results will differ from backtest results
Consider consulting with a qualified financial advisor
No guarantees or warranties. This strategy is provided "as is" without any guarantees of profitability, accuracy, or suitability for any purpose. The author is not responsible for any losses incurred from using this strategy.
OPEN-SOURCE CODE STRUCTURE
The strategy code is organized into these sections for readability:
Configuration Architecture: Input parameters organized into logical groups (Core Controls, Optimization Constants, Regime Intelligence, Signal Pathways, Risk Architecture, Visualization)
Helper Functions: calcQty() for position sizing, clamp01() and normalize() for value normalization, calcMFI() for Money Flow Index calculation
Core Indicator Engine: EMA ribbon, ATR and regime classification, MACD with adaptive baseline, RSI, MFI, volume analytics, cycle oscillator, BTC dominance filter, squeeze detection
Signal Pathway Logic: Trend break, momentum surge, squeeze release, micro pullback pathways with composite scoring
Entry/Exit Orchestration: Signal filtering, position sizing, entry execution, stop/target calculation, trailing stop logic, momentum fail-safe exits
Visualization Layer: EMA plots, regime background, bar coloring, signal labels, dashboard table
You can read and modify any part of the code. Understanding the logic before deployment is strongly recommended.
- Made with passion by officialjackofalltrades
Auto Position CalculatorA position sizing tool that automatically detects the instrument you're trading and calculates the correct position size based on your risk parameters.
What It Does
This indicator calculates how many contracts, lots, or shares to trade based on your account size, risk percentage, and stop loss distance. It auto-detects the instrument type and adjusts the point/pip value accordingly.
Supported Instruments
Futures: NQ, MNQ, ES, MES, YM, MYM, RTY, M2K, CL, MCL, GC, MGC
Forex: All major pairs (USD, EUR, GBP, JPY, etc.)
Index CFDs: NAS100, US500, US30, GER40, UK100
Metals: XAU, XAG
Crypto and Stocks: Automatic detection
How to Use
Set your account size and risk % in settings
Click the settings icon and place Entry, Stop Loss, and Take Profit on the chart
The position size and risk calculations appear automatically
Levels auto-reset at your chosen session (Asia, London, or New York open)
Limitations
CFD and forex pip values assume standard lot sizing - your broker may differ
Auto-detection relies on ticker naming conventions, which vary by broker/data feed
Session reset times are based on ET (Eastern Time)
SMC Alpha Sentiment Pro [Binance Futures Data]The SMC Alpha Sentiment Pro is an advanced decision-support tool developed for the Crypto Trade community. Unlike traditional lagging indicators, this script focuses on Market Sentiment and Smart Money Concepts (SMC) by analyzing real-time data from Binance Futures.
🔍 Key Data Points:
Open Interest (OI): Tracks new capital entering the market to confirm trend strength.
Long/Short Ratio (LSR): Identifies retail positioning. We look for "Smart Money" opportunities when retail (LSR > 1) is trapped or providing liquidity for institutional moves.
RSI & ATR: Used to identify exhaustion levels and ensure sufficient volatility for the trade.
Volume Filter: A built-in security layer that validates signals only when current volume exceeds the 20-period average.
🚥 Signal Logic:
SMC LONG: Triggered when OI is rising, LSR is below 1 and falling (retail selling), RSI is showing extreme strength (>= 68), and volume is surging.
SMC SHORT: Triggered when OI is rising, LSR is above 1 and rising (retail buying), RSI is showing extreme weakness (<= 32), and volume is surging.
📈 Best Practices:
Timeframe: Optimized for 15-minute (15M) charts.
Exchange: Specifically designed to pull ticker data from Binance Futures.
Disclaimer: This script is for educational purposes only. Trading involves significant risk.
CME FX Futures Correlation MatrixThis indicator calculates the correlation between major CME FX futures and displays it in a visual table. It shows how closely pairs like EUR/USD, GBP/USD, USD/JPY, USD/CHF, USD/CAD, AUD/USD, and NZD/USD move together or in opposite directions.
The indicator inherits the timeframe of the chart it’s applied to.
Color coding:
Red: strong correlation (absolute value > 80%), both positive and negative
Green: moderate/low correlation
How to launch it
Apply the indicator to a CME chart (e.g., EUR/USD futures).
Set Numbers of Bars Back to the desired lookback period (default 100).
The table appears in the center of the chart, showing correlation percentages between all major FX futures.
Opening-Range BreakoutNote: Default trading date range looks mediocre. Set date range to "Entire History" to see full effect of the strategy. 50.91% profitable trades, 1.178 profit factor, steady profits and limited drawdown. Total P&L: $154,141.18, Max Drawdown: $18,624.36. High R^2
█ Overview
The Opening-Range Breakout strategy is a mechanical, session‑based day‑trading system designed to capture the initial burst of directional momentum immediately following the market open. It defines a user‑configurable “opening range” window, measures its high and low boundaries, then places breakout stop orders at those levels once the range closes. Built‑in filters on minimum range width, reward‑to‑risk ratios, and optional reversal logic help refine entries and manage risk dynamically.
█ How It Works
Opening‑Range Formation
Between 9:30–10:15 AM ET (configurable), the script tracks the highest high and lowest low to form the day’s opening range box.
On the first bar after the range window closes, the range high (OR_high) and low (OR_low) are “locked in.”
Range‑Width Filter
To avoid false breakouts in low‑volatility mornings, the range must be at least X% of the current price (default 0.35%).
If the measured opening-range width < minimum threshold, no orders are placed that day.
Entry & Order Placement
Long: a stop‑buy order at the opening‑range high.
Short: a stop‑sell order at the opening‑range low.
Only one side can trigger (or both if reverse logic is enabled after a losing trade).
Risk Management
Once triggered, each trade uses an ATR‑style stop-loss defined as a percentage retracement of the range (default 50% of range width).
Profit target is set at a configurable Reward/Risk Ratio (default 1.1×).
Optional: Reverse on Stop‑Loss – if the initial breakout loses, immediately reverse into the opposite side on the same day.
Session Exit
Any open positions are closed at the end of the regular trading day (default 3:45 PM ET window end, with hard flat at session close).
Visual cues are provided via green (range high) and red (range low) step‑line plots directly on the chart, allowing you to see the range box and breakout triggers in real time.
█ Why It Works
Early Momentum Capture: The first 15 – 60 minutes of trading encapsulate overnight news digestion and institutional order flow, creating a well‑defined volatility “range.”
Mechanical Discipline: Clear, rule‑based entries and exits remove emotional guesswork, ensuring consistency.
Volatility Filtering: By requiring a minimum range width, the system avoids choppy, low‑range days where false breakouts are common.
Dynamic Sizing: Stops and targets scale with the opening range, adapting automatically to each day’s volatility environment.
█ How to Use
Set Your Instruments & Timeframe
-Apply to any futures contract on a 1‑ to 5‑minute chart.
-Ensure chart timezone is set to America/New_York.
Configure Inputs
-Opening‑Range Window: e.g. “0930-1015” for a 45‑minute range.
-Min. OR Width (%): e.g. 0.35 for 0.35% of current price.
-Reward/Risk Ratio: e.g. 1.1 for a modest profit target above your stop.
-Max OR Retracement %: e.g. 50 to set stop at 50% of range width.
-One Trade Per Day: toggle to limit to a single breakout.
-Reverse on Stop Loss: toggle to flip direction after a losing breakout.
Monitor the Chart
-Watch the green and red range boundaries form during the session open.
-Orders will automatically submit on the first bar after the range window closes, conditioned on your filters.
Review & Adjust
-Backtest across multiple months to validate performance on your preferred contract.
-Tweak range duration, minimum width, and R/R multiple to fit your risk tolerance and desired win‑rate vs. expectancy balance.
█ Settings Reference
Input Defaults
Opening‑Range Window - Time window to form OR (HHMM-HHMM) - 0930–1015
Regular Trading Day - Full session for EOD flat (HHMM-HHMM) - 0930–1545
Min. OR Width (%) - Minimum OR size as % of close to trigger orders - 0.35
Reward/Risk Ratio - Profit target multiple of stop‑loss distance - 1.1
Max OR Retracement (%) - % of OR width to use as stop‑loss distance - 50
One Trade Per Day - Limit to a single breakout order per day - false
Reverse on Stop Loss - Reverse direction immediately after a losing trade - true
Disclaimer
This strategy description and any accompanying code are provided for educational purposes only and do not constitute financial advice or a solicitation to trade. Futures trading involves substantial risk, including possible loss of capital. Past performance is not indicative of future results. Traders should assess their own risk tolerance and conduct thorough backtesting and forward-testing before committing real capital.
Forward Curve Visualization ToolProvide the spot symbol and the futures product root, and the script automatically scans all relevant contracts for you—no more tedious manual searches. The result is a clean, intuitive chart showing the live forward curve in real time.
It also detects contango or backwardation conditions (based on spot < F1 < F2 < F3).
Future Features:
Plot historical snapshots of the curve (1 day, 1 week, or 1 month ago) to understand market trends over time.
Display additional metrics such as annualized basis, cost of carry (CoC), and even volume or open interest for deeper insights.
If you trade futures and watch the forward curve, this script will give you the actionable data you need and get more ideas or features you’d like to see. Let’s build them together!
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 well as in historical backtesting.
This post and the script don’t provide any financial advice.
Metals:Backwardation/ContangoMETALS: Gold , Silver , Copper ( GC , SI, HG)
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Gold ( GC ); 21 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Grains:Backwardation/ContangoGRAINS: Wheat , Soybeans , Corn (ZW, ZS, ZC )
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
The above chart shows a nice example of backwardation.
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Wheat (ZW); 15 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Settlement priceThis script is meant to be used intraday, on futures products.
It charts the previous day/week/month settlement price as a constant level intraday.
The settlement price of a product is calculated by the exchange at the end of each day. It is shown in the D/W/M chart as the close price. The settlement price does not coincide with the last close price intraday, thus creating the need of a script like this.
The settlement price can be a pivotal price in intraday futures trading, as it can act as support or resistance
You can select the resolution of the settlement by the "Resolution" input
Cumulative Intraday Volume with Long/Short LabelsThis indicator calculates a running total of volume for each trading day, then shows on the price chart when that total crosses levels you choose. Every day at 6:00 PM Eastern Time, the total goes back to zero so it always reflects only the current day’s activity. From that moment on, each time a new candle appears the indicator looks at whether the candle closed higher than it opened or lower. If it closed higher, the candle’s volume is added to the running total; if it closed lower, the same volume amount is subtracted. As a result, the total becomes positive when buyers have dominated so far today and negative when sellers have dominated.
Because futures markets close at 6 PM ET, the running total resets exactly then, mirroring the way most intraday traders think in terms of a single session. Throughout the day, you will see this running total move up or down according to whether more volume is happening on green or red candles. Once the total goes above a number you specify (for example, one hundred thousand contracts), the indicator will place a small “Long” label at that candle on the main price chart to let you know buying pressure has reached that level. Similarly, once the total goes below a negative number you choose (for example, minus one hundred thousand), a “Short” label will appear at that candle to signal that selling pressure has reached your chosen threshold. You can set these threshold numbers to whatever makes sense for your trading style or the market you follow.
Because raw volume alone never turns negative, this design uses candle direction as a sign. Green candles (where the close is higher than the open) add volume, and red candles (where the close is lower than the open) subtract volume. Summing those signed volume values tells you in a single number whether buying or selling has been stronger so far today. That number resets every evening, so it does not carry over any buying or selling from previous sessions.
Once you have this indicator on your chart, you simply watch the “summed volume” line as it moves throughout the day. If it climbs past your long threshold, you know buyers are firmly in control and a long entry might make sense. If it falls past your short threshold, you know sellers are firmly in control and a short entry might make sense. In quieter markets or times of low volume, you might use a smaller threshold so that even modest buying or selling pressure will trigger a label. During very active periods, a larger threshold will prevent too many signals when volume spikes frequently.
This approach is straightforward but can be surprisingly powerful. It does not rely on complex formulas or hidden statistical measures. Instead, it simply adds and subtracts daily volume based on candle color, then alerts you when that total reaches levels you care about. Over several years of historical testing, this formula has shown an ability to highlight moments when intraday sentiment shifts decisively from buyers to sellers or vice versa. Because the indicator resets every day at 6 PM, it always reflects only today’s sentiment and remains easy to interpret without carrying over past data. You can use it on any intraday timeframe, but it works especially well on five-minute or fifteen-minute charts for futures contracts.
If you want a clear gauge of whether buyers or sellers are dominating in real time, and you prefer a rule-based method rather than a complex model, this indicator gives you exactly that. It shows net buying or selling pressure at a glance, resets each session like most intraday traders do, and marks the moments when that pressure crosses the levels you decide are important. By combining a daily reset with signed volume, you get a single number that tells you precisely what the crowd is doing at any given moment, without any of the guesswork or hidden calculations that more complicated indicators often carry.
CL Live lotsize ROOSTER📄 Description:
This is a utility script designed for manual futures traders who enter with market orders and want to size their positions precisely based on $ risk.
⚙️ Features:
✅ Calculates live contract size based on:
A fixed dollar risk amount (e.g. $100)
A manually set static stop-loss price
The live market price as your entry
✅ Uses a configurable risk-reward ratio (e.g. 1:3)
✅ Plots entry, stop, and target levels on the chart
✅ Displays calculated contract size as a floating label
🎯 Why this tool?
Built to support fast execution workflows , this tool helps traders who:
Enter trades at candle close or open
Want to pre-calculate their market order size before the signal
Prefer a visual, consistent, real-time R:R validation system
Avoid fumbling with the long/short position tool at the last second
🔧 Settings:
Static Stop-Loss Price: Enter the price level where you'd place your SL
Account Risk ($): How much you’re willing to risk per trade
Risk-Reward Ratio: Set your target multiplier (e.g. 3 for 3R)






















