Prime NumbersPrime Numbers highlights prime numbers (no surprise there 😅), tokens and the recent "active" feature in "input".
🔸 CONCEPTS
🔹 What are Prime Numbers?
A prime number (or a prime) is a natural number greater than 1 that is not a product of two smaller natural numbers.
Wikipedia: Prime number
🔹 Prime Factorization
The fundamental theorem of arithmetic states that every integer larger than 1 can be written as a product of one or more primes. More strongly, this product is unique in the sense that any two prime factorizations of the same number will have the same number of copies of the same primes, although their ordering may differ. So, although there are many different ways of finding a factorization using an integer factorization algorithm, they all must produce the same result. Primes can thus be considered the "basic building blocks" of the natural numbers.
Wikipedia: Fundamental theorem of arithmetic
Math Is Fun: Prime Factorization
We divide a given number by Prime Numbers until only Primes remain.
Example:
24 / 2 = 12 | 24 / 3 = 8
12 / 3 = 4 | 8 / 2 = 4
4 / 2 = 2 | 4 / 2 = 2
|
24 = 2 x 3 x 2 | 24 = 3 x 2 x 2
or | or
24 = 2² x 3 | 24 = 2² x 3
In other words, every natural/integer number above 1 has a unique representation as a product of prime numbers, no matter how the number is divided. Only the order can change, but the factors (the basic elements) are always the same.
🔸 USAGE
The Prime Numbers publication contains two use cases:
Prime Factorization: performed on "close" prices, or a manual chosen number.
List Prime Numbers: shows a list of Prime Numbers.
The other two options are discussed in the DETAILS chapter:
Prime Factorization Without Arrays
Find Prime Numbers
🔹 Prime Factorization
Users can choose to perform Prime Factorization on close prices or a manually given number.
❗️ Note that this option only applies to close prices above 1, which are also rounded since Prime Factorization can only be performed on natural (integer) numbers above 1.
In the image below, the left example shows Prime Factorization performed on each close price for the latest 50 bars (which is set with "Run script only on 'Last x Bars'" -> 50).
The right example shows Prime Factorization performed on a manually given number, in this case "1,340,011". This is done only on the last bar.
When the "Source" option "close price" is chosen, one can toggle "Also current price", where both the historical and the latest current price are factored. If disabled, only historical prices are factored.
Note that, depending on the chosen options, only applicable settings are available, due to a recent feature, namely the parameter "active" in settings.
Setting the "Source" option to "Manual - Limited" will factorize any given number between 1 and 1,340,011, the latter being the highest value in the available arrays with primes.
Setting to "Manual - Not Limited" enables the user to enter a higher number. If all factors of the manual entered number are in the 1 - 1,340,011 range, these factors will be shown; however, if a factor is higher than 1,340,011, the calculation will stop, after which a warning is shown:
The calculated factors are displayed as a label where identical factors are simplified with an exponent notation in superscript.
For example 2 x 2 x 2 x 5 x 7 x 7 will be noted as 2³ x 5 x 7²
🔹 List Prime Numbers
The "List Prime Numbers" option enables users to enter a number, where the first found Prime Number is shown, together with the next x Prime Numbers ("Amount", max. 200)
The highest shown Prime Number is 1,340,011.
One can set the number of shown columns to customize the displayed numbers ("Max. columns", max. 20).
🔸 DETAILS
The Prime Numbers publication consists out of 4 parts:
Prime Factorization Without Arrays
Prime Factorization
List Prime Numbers
Find Prime Numbers
The usage of "Prime Factorization" and "List Prime Numbers" is explained above.
🔹 Prime Factorization Without Arrays
This option is only there to highlight a hurdle while performing Prime Factorization.
The basic method of Prime Factorization is to divide the base number by 2, 3, ... until the result is an integer number. Continue until the remaining number and its factors are all primes.
The division should be done by primes, but then you need to know which one is a prime.
In practice, one performs a loop from 2 to the base number.
Example:
Base_number = input.int(24)
arr = array.new()
n = Base_number
go = true
while go
for i = 2 to n
if n % i == 0
if n / i == 1
go := false
arr.push(i)
label.new(bar_index, high, str.tostring(arr))
else
arr.push(i)
n /= i
break
Small numbers won't cause issues, but when performing the calculations on, for example, 124,001 and a timeframe of, for example, 1 hour, the script will struggle and finally give a runtime error.
How to solve this?
If we use an array with only primes, we need fewer calculations since if we divide by a non-prime number, we have to divide further until all factors are primes.
I've filled arrays with prime numbers and made libraries of them. (see chapter "Find Prime Numbers" to know how these primes were found).
🔹 Tokens
A hurdle was to fill the libraries with as many prime numbers as possible.
Initially, the maximum token limit of a library was 80K.
Very recently, that limit was lifted to 100K. Kudos to the TradingView developers!
What are tokens?
Tokens are the smallest elements of a program that are meaningful to the compiler. They are also known as the fundamental building blocks of the program.
I have included a code block below the publication code (// - - - Educational (2) - - - ) which, if copied and made to a library, will contain exactly 100K tokens.
Adding more exported functions will throw a "too many tokens" error when saving the library. Subtracting 100K from the shown amount of tokens gives you the amount of used tokens for that particular function.
In that way, one can experiment with the impact of each code addition in terms of tokens.
For example adding the following code in the library:
export a() => a = array.from(1) will result in a 100,041 tokens error, in other words (100,041 - 100,000) that functions contains 41 tokens.
Some more examples, some are straightforward, others are not )
// adding these lines in one of the arrays results in x tokens
, 1 // 2 tokens
, 111, 111, 111 // 12 tokens
, 1111 // 5 tokens
, 111111111 // 10 tokens
, 1111111111111111111 // 20 tokens
, 1234567890123456789 // 20 tokens
, 1111111111111111111 + 1 // 20 tokens
, 1111111111111111111 + 8 // 20 tokens
, 1111111111111111111 + 9 // 20 tokens
, 1111111111111111111 * 1 // 20 tokens
, 1111111111111111111 * 9 // 21 tokens
, 9999999999999999999 // 21 tokens
, 1111111111111111111 * 10 // 21 tokens
, 11111111111111111110 // 21 tokens
//adding these functions to the library results in x tokens
export f() => 1 // 4 tokens
export f() => v = 1 // 4 tokens
export f() => var v = 1 // 4 tokens
export f() => var v = 1, v // 4 tokens
//adding these functions to the library results in x tokens
export a() => const arraya = array.from(1) // 42 tokens
export a() => arraya = array.from(1) // 42 tokens
export a() => a = array.from(1) // 41 tokens
export a() => array.from(1) // 32 tokens
export a() => a = array.new() // 44 tokens
export a() => a = array.new(), a.push(1) // 56 tokens
What if we could lower the amount of tokens, so we can export more Prime Numbers?
Look at this example:
829111, 829121, 829123, 829151, 829159, 829177, 829187, 829193
Eight numbers contain the same number 8291.
If we make a function that removes recurrent values, we get fewer tokens!
829111, 829121, 829123, 829151, 829159, 829177, 829187, 829193
//is transformed to:
829111, 21, 23, 51, 59, 77, 87, 93
The code block below the publication code (// - - - Educational (1) - - - ) shows how these values were reduced. With each step of 100, only the first Prime Number is shown fully.
This function could be enhanced even more to reduce recurrent thousands, tens of thousands, etc.
Using this technique enables us to export more Prime Numbers. The number of necessary libraries was reduced to half or less.
The reduced Prime Numbers are restored using the restoreValues() function, found in the library fikira/Primes_4.
🔹 Find Prime Numbers
This function is merely added to show how I filled arrays with Prime Numbers, which were, in turn, added to libraries (after reduction of recurrent values).
To know whether a number is a Prime Number, we divide the given number by values of the Primes array (Primes 2 -> max. 1,340,011). Once the division results in an integer, where the divisor is smaller than the dividend, the calculation stops since the given number is not a Prime.
When we perform these calculations in a loop, we can check whether a series of numbers is a Prime or not. Each time a number is proven not to be a Prime, the loop starts again with a higher number. Once all Primes of the array are used without the result being an integer, we have found a new Prime Number, which is added to the array.
Doing such calculations on one bar will result in a runtime error.
To solve this, the findPrimeNumbers() function remembers the index of the array. Once a limit has been reached on 1 bar (for example, the number of iterations), calculations will stop on that bar and restart on the next bar.
This spreads the workload over several bars, making it possible to continue these calculations without a runtime error.
The result is placed in log.info() , which can be copied and pasted into a hardcoded array of Prime Number values.
These settings adjust the amount of workload per bar:
Max Size: maximum size of Primes array.
Max Bars Runtime: maximum amount of bars where the function is called.
Max Numbers To Process Per Bar: maximum numbers to check on each bar, whether they are Prime Numbers.
Max Iterations Per Bar: maximum loop calculations per bar.
🔹 The End
❗️ The code and description is written without the help of an LLM, I've only used Grammarly to improve my description (without AI :) )
스크립트에서 "12月4号是什么星座"에 대해 찾기
EAOBS by MIGVersion 1
1. Strategy Overview Objective: Capitalize on breakout movements in Ethereum (ETH) price after the Asian open pre-market session (7:00 PM–7:59 PM EST) by identifying high and low prices during the session and trading breakouts above the high or below the low.
Timeframe: Any (script is timeframe-agnostic, but align with session timing).
Session: Pre-market session (7:00 PM–7:59 PM EST, adjustable for other time zones, e.g., 12:00 AM–12:59 AM GMT).
Risk-Reward Ratios (R:R): Targets range from 1.2:1 to 5.2:1, with a fixed stop loss.
Instrument: Ethereum (ETH/USD or ETH-based pairs).
2. Market Setup Session Monitoring: Monitor ETH price action during the pre-market session (7:00 PM–7:59 PM EST), which aligns with the Asian market open (e.g., 9:00 AM–9:59 AM JST).
The script tracks the highest high and lowest low during this session.
Breakout Triggers: Buy Signal: Price breaks above the session’s high after the session ends (7:59 PM EST).
Sell Signal: Price breaks below the session’s low after the session ends.
Visualization: The session is highlighted on the chart with a white background.
Horizontal lines are drawn at the session’s high and low, extended for 30 bars, along with take-profit (TP) and stop-loss (SL) levels.
3. Entry Rules Long (Buy) Entry: Enter a long position when the price breaks above the session’s high price after 7:59 PM EST.
Entry price: Just above the session high (e.g., add a small buffer, like 0.1–0.5%, to avoid false breakouts, depending on volatility).
Short (Sell) Entry: Enter a short position when the price breaks below the session’s low price after 7:59 PM EST.
Entry price: Just below the session low (e.g., subtract a small buffer, like 0.1–0.5%).
Confirmation: Use a candlestick close above/below the breakout level to confirm the entry.
Optionally, add volume confirmation or a momentum indicator (e.g., RSI or MACD) to filter out weak breakouts.
Position Size: Calculate position size based on risk tolerance (e.g., 1–2% of account per trade).
Risk is determined by the stop-loss distance (10 points, as defined in the script).
4. Exit Rules Take-Profit Levels (in points, based on script inputs):TP1: 12 points (1.2:1 R:R).
TP2: 22 points (2.2:1 R:R).
TP3: 32 points (3.2:1 R:R).
TP4: 42 points (4.2:1 R:R).
TP5: 52 points (5.2:1 R:R).
Example for Long: If session high is 3000, TP levels are 3012, 3022, 3032, 3042, 3052.
Example for Short: If session low is 2950, TP levels are 2938, 2928, 2918, 2908, 2898.
Strategy: Scale out of the position (e.g., close 20% at TP1, 20% at TP2, etc.) or take full profit at a preferred TP level based on market conditions.
Stop-Loss: Fixed at 10 points from the entry.
Long SL: Session high - 10 points (e.g., entry at 3000, SL at 2990).
Short SL: Session low + 10 points (e.g., entry at 2950, SL at 2960).
Trailing Stop (Optional):After reaching TP2 or TP3, consider trailing the stop to lock in profits (e.g., trail by 10–15 points below the current price).
5. Risk Management per Trade: Limit risk to 1–2% of your trading account per trade.
Calculate position size: Account Size × Risk % ÷ (Stop-Loss Distance × ETH Price per Point).
Example: $10,000 account, 1% risk = $100. If SL = 10 points and 1 point = $1, position size = $100 ÷ 10 = 0.1 ETH.
Daily Risk Limit: Cap daily losses at 3–5% of the account to avoid overtrading.
Maximum Exposure: Avoid taking both long and short positions simultaneously unless using separate accounts or strategies.
Volatility Consideration: Adjust position size during high-volatility periods (e.g., major news events like Ethereum upgrades or macroeconomic announcements).
6. Trade Management Monitoring :Watch for breakouts after 7:59 PM EST.
Monitor price action near TP and SL levels using alerts or manual checks.
Trade Duration: Breakout lines extend for 30 bars (script parameter). Close trades if no TP or SL is hit within this period, or reassess based on market conditions.
Adjustments: If the market shows strong momentum, consider holding beyond TP5 with a trailing stop.
If the breakout fails (e.g., price reverses before TP1), exit early to minimize losses.
7. Additional Considerations Market Conditions: The 7:00 PM–7:59 PM EST session aligns with the Asian market open (e.g., Tokyo Stock Exchange open at 9:00 AM JST), which may introduce higher volatility due to Asian trading activity.
Avoid trading during low-liquidity periods or extreme volatility (e.g., major crypto news).
Check for upcoming events (e.g., Ethereum network upgrades, ETF decisions) that could impact price.
Backtesting: Test the strategy on historical ETH data using the session high/low breakouts for the 7:00 PM–7:59 PM EST window to validate performance.
Adjust TP/SL levels based on backtest results if needed.
Broker and Fees: Use a low-fee crypto exchange (e.g., Binance, Kraken, Coinbase Pro) to maximize R:R.
Account for trading fees and slippage in your position sizing.
Time zone Adjustment: Adjust session time input for your time zone (e.g., "0000-0059" for GMT).
Ensure your trading platform’s clock aligns with the script’s time zone (default: America/New_York).
8. Example Trade Scenario: Session (7:00 PM–7:59 PM EST) records a high of 3050 and a low of 3000.
Long Trade: Entry: Price breaks above 3050 (e.g., enter at 3051).
TP Levels: 3063 (TP1), 3073 (TP2), 3083 (TP3), 3093 (TP4), 3103 (TP5).
SL: 3040 (3050 - 10).
Position Size: For a $10,000 account, 1% risk = $100. SL = 11 points ($11). Size = $100 ÷ 11 = ~0.09 ETH.
Short Trade: Entry: Price breaks below 3000 (e.g., enter at 2999).
TP Levels: 2987 (TP1), 2977 (TP2), 2967 (TP3), 2957 (TP4), 2947 (TP5).
SL: 3010 (3000 + 10).
Position Size: Same as above, ~0.09 ETH.
Execution: Set alerts for breakouts, enter with limit orders, and monitor TPs/SL.
9. Tools and Setup Platform: Use TradingView to implement the Pine Script and visualize breakout levels.
Alerts: Set price alerts for breakouts above the session high or below the session low after 7:59 PM EST.
Set alerts for TP and SL levels.
Chart Settings: Use a 1-minute or 5-minute chart for precise session tracking.
Overlay the script to see high/low lines, TP levels, and SL levels.
Optional Indicators: Add RSI (e.g., avoid overbought/oversold breakouts) or volume to confirm breakouts.
10. Risk Warnings Crypto Volatility: ETH is highly volatile; unexpected news can cause rapid price swings.
False Breakouts: Breakouts may fail, especially in low-volume sessions. Use confirmation signals.
Leverage: Avoid high leverage (e.g., >5x) to prevent liquidation during volatile moves.
Session Accuracy: Ensure correct session timing for your time zone to avoid misaligned entries.
11. Performance Tracking Journaling :Record each trade’s entry, exit, R:R, and outcome.
Note market conditions (e.g., trending, ranging, news-driven).
Review: Weekly: Assess win rate, average R:R, and adherence to the plan.
Monthly: Adjust TP/SL or session timing based on performance.
SCTI V30Description
The SCTI V30 is an advanced multi-functional technical analysis indicator for TradingView that combines multiple analytical approaches into a single comprehensive tool. This indicator provides:
Multiple Moving Average Types (EMA, SMA, PMA with various calculation methods)
Customizable VWAP with standard deviation bands
Sophisticated Divergence Detection across 12 different indicators
Volume Profile Analysis with peak/trough detection
Highly Configurable Display Options
The indicator is designed to help traders identify trends, potential reversals, and key support/resistance levels across different timeframes.
Features
1. Moving Average Systems
EMA Section: 13 configurable EMA periods (8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584)
SMA Section: 13 configurable SMA periods (same as EMA)
PMA Section: 11 customizable moving averages with multiple calculation methods:
ALMA, EMA, RMA, SMA, SWMA, VWAP, VWMA, WMA
Adjustable lengths from 12 to 1056
Customizable colors, widths, and fill options between MAs
2. VWAP Implementation
Multiple anchor periods (Session, Week, Month, Quarter, Year, etc.)
Standard deviation or percentage-based bands
Option to hide on daily/weekly/monthly timeframes
Customizable band multipliers (1.0, 2.0, 3.0)
3. Divergence Detection
Detects regular and hidden divergences across 12 indicators:
MACD, MACD Histogram, RSI, Stochastic, CCI, Momentum
OBV, VW-MACD, Chaikin Money Flow, Money Flow Index
Williams %R, and custom external indicators
Customizable detection parameters:
Pivot point period (1-50)
Source (Close or High/Low)
Divergence type (Regular, Hidden, or Both)
Minimum number of divergences required (1-11)
Maximum pivot points to check (1-20)
Maximum bars to look back (30-200)
4. Volume Profile Analysis
Configurable profile length (10-5000 bars)
Value Area threshold (0-100%)
Profile placement (Left or Right)
Number of rows (30-130)
Profile width adjustment
Volume node detection:
Peaks (with cluster option)
Troughs (with cluster option)
Highest/Lowest volume nodes
Customizable colors for all elements
Input Parameters
The indicator is organized into 7 parameter groups:
Basic Indicator Settings - Toggle visibility of main components
EMA Settings - Configure 13 EMA periods and visibility
SMA Settings - Configure 13 SMA periods and visibility
PMA Settings - Advanced moving average configuration
VWAP Settings - Volume-weighted average price configuration
Divergence Settings - Comprehensive divergence detection options
Volume Profile & Node Detection - Volume analysis configuration
How to Use
Trend Identification: Use the multiple moving averages to identify trend direction and strength. The Fibonacci-based periods (21, 34, 55, 89, 144, etc.) are particularly useful for this.
Support/Resistance: The VWAP and volume profile components help identify key support/resistance levels.
Divergence Trading: Look for divergences between price and the various indicators to spot potential reversal points.
Volume Analysis: The volume profile shows where the most trading activity occurred, highlighting important price levels.
Customization: Adjust the settings to match your trading style and timeframe. The indicator is highly configurable to suit different trading approaches.
Alerts
The indicator includes alert conditions for:
Positive regular divergence detected
Negative regular divergence detected
Positive hidden divergence detected
Negative hidden divergence detected
Any positive divergence (regular or hidden)
Any negative divergence (regular or hidden)
Notes
The indicator may be resource-intensive due to its comprehensive calculations, especially on lower timeframes with long lookback periods.
Some features (like VWAP) can be hidden on higher timeframes to improve performance.
The default settings are optimized for daily charts but can be adjusted for any timeframe.
This powerful all-in-one indicator provides traders with a complete toolkit for technical analysis, combining trend-following, momentum, volume, and divergence techniques into a single, customizable solution.
SmartMind2The MACD (Moving Average Convergence Divergence) is a popular technical indicator in trading, primarily used to detect trends and possible reversal points.
How is the MACD structured?
The MACD indicator consists of three components:
MACD Line:
Calculated as the difference between two exponential moving averages (EMAs), commonly 12 and 26 periods.
Formula:
MACD Line
=
𝐸
𝑀
𝐴
12
(
Price
)
−
𝐸
𝑀
𝐴
26
(
Price
)
MACD Line=EMA
12
(Price)−EMA
26
(Price)
Signal Line:
An exponential moving average (usually 9 periods) of the MACD line.
Formula:
Signal Line
=
𝐸
𝑀
𝐴
9
(
MACD Line
)
Signal Line=EMA
9
(MACD Line)
Histogram:
Graphically represents the difference between the MACD line and the Signal line.
Formula:
Histogram
=
MACD Line
−
Signal Line
Histogram=MACD Line−Signal Line
Interpretation of MACD:
Buy Signal: Occurs when the MACD line crosses above the signal line (bullish signal).
Sell Signal: Occurs when the MACD line crosses below the signal line (bearish signal).
Trend Reversal: A divergence between price movements and the MACD indicates a potential reversal (e.g., rising prices with a falling MACD).
MACD Liquidity Tracker Strategy [Quant Trading]MACD Liquidity Tracker Strategy
Overview
The MACD Liquidity Tracker Strategy is an enhanced trading system that transforms the traditional MACD indicator into a comprehensive momentum-based strategy with advanced visual signals and risk management. This strategy builds upon the original MACD Liquidity Tracker System indicator by TheNeWSystemLqtyTrckr , converting it into a fully automated trading strategy with improved parameters and additional features.
What Makes This Strategy Original
This strategy significantly enhances the basic MACD approach by introducing:
Four distinct system types for different market conditions and trading styles
Advanced color-coded histogram visualization with four dynamic colors showing momentum strength and direction
Integrated trend filtering using 9 different moving average types
Comprehensive risk management with customizable stop-loss and take-profit levels
Multiple alert systems for entry signals, exits, and trend conditions
Flexible signal display options with customizable entry markers
How It Works
Core MACD Calculation
The strategy uses a fully customizable MACD configuration with traditional default parameters:
Fast MA : 12 periods (customizable, minimum 1, no maximum limit)
Slow MA : 26 periods (customizable, minimum 1, no maximum limit)
Signal Line : 9 periods (customizable, now properly implemented and used)
Cryptocurrency Optimization : The strategy's flexible parameter system allows for significant optimization across different crypto assets. Traditional MACD settings (12/26/9) often generate excessive noise and false signals in volatile crypto markets. By using slower, more smoothed parameters, traders can capture meaningful momentum shifts while filtering out market noise.
Example - DOGE Optimization (45/80/290 settings) :
• Performance : Optimized parameters yielding exceptional backtesting results with 29,800% PnL
• Why it works : DOGE's high volatility and social sentiment-driven price action benefits from heavily smoothed indicators
• Timeframes : Particularly effective on 30-minute and 4-hour charts for swing trading
• Logic : The very slow parameters filter out noise and capture only the most significant trend changes
Other Optimizable Cryptocurrencies : This parameter flexibility makes the strategy highly effective for major altcoins including SUI, SEI, LINK, Solana (SOL) , and many others. Each crypto asset can benefit from custom parameter tuning based on its unique volatility profile and trading characteristics.
Four Trading System Types
1. Normal System (Default)
Long signals : When MACD line is above the signal line
Short signals : When MACD line is below the signal line
Best for : Swing trading and capturing longer-term trends in stable markets
Logic : Traditional MACD crossover approach using the signal line
2. Fast System
Long signals : Bright Blue OR Dark Magenta (transparent) histogram colors
Short signals : Dark Blue (transparent) OR Bright Magenta histogram colors
Best for : Scalping and high-volatility markets (crypto, forex)
Logic : Leverages early momentum shifts based on histogram color changes
3. Safe System
Long signals : Only Bright Blue histogram color (strongest bullish momentum)
Short signals : All other colors (Dark Blue, Bright Magenta, Dark Magenta)
Best for : Risk-averse traders and choppy markets
Logic : Prioritizes only the strongest bullish signals while treating everything else as bearish
4. Crossover System
Long signals : MACD line crosses above signal line
Short signals : MACD line crosses below signal line
Best for : Precise timing entries with traditional MACD methodology
Logic : Pure crossover signals for more precise entry timing
Color-Coded Histogram Logic
The strategy uses four distinct colors to visualize momentum:
🔹 Bright Blue : MACD > 0 and rising (strong bullish momentum)
🔹 Dark Blue (Transparent) : MACD > 0 but falling (weakening bullish momentum)
🔹 Bright Magenta : MACD < 0 and falling (strong bearish momentum)
🔹 Dark Magenta (Transparent) : MACD < 0 but rising (weakening bearish momentum)
Trend Filter Integration
The strategy includes an advanced trend filter using 9 different moving average types:
SMA (Simple Moving Average)
EMA (Exponential Moving Average) - Default
WMA (Weighted Moving Average)
HMA (Hull Moving Average)
RMA (Running Moving Average)
LSMA (Least Squares Moving Average)
DEMA (Double Exponential Moving Average)
TEMA (Triple Exponential Moving Average)
VIDYA (Variable Index Dynamic Average)
Default Settings : 50-period EMA for trend identification
Visual Signal System
Entry Markers : Blue triangles (▲) below candles for long entries, Magenta triangles (▼) above candles for short entries
Candle Coloring : Price candles change color based on active signals (Blue = Long, Magenta = Short)
Signal Text : Optional "Long" or "Short" text inside entry triangles (toggleable)
Trend MA : Gray line plotted on main chart for trend reference
Parameter Optimization Examples
DOGE Trading Success (Optimized Parameters) :
Using 45/80/290 MACD settings with 50-period EMA trend filter has shown exceptional results on DOGE:
Performance : Backtesting results showing 29,800% PnL demonstrate the power of proper parameter optimization
Reasoning : DOGE's meme-driven volatility and social sentiment spikes create significant noise with traditional MACD settings
Solution : Very slow parameters (45/80/290) filter out social media-driven price spikes while capturing only major momentum shifts
Optimal Timeframes : 30-minute and 4-hour charts for swing trading opportunities
Result : Exceptionally clean signals with minimal false entries during DOGE's characteristic pump-and-dump cycles
Multi-Crypto Adaptability :
The same optimization principles apply to other major cryptocurrencies:
SUI : Benefits from smoothed parameters due to newer coin volatility patterns
SEI : Requires adjustment for its unique DeFi-related price movements
LINK : Oracle news events create price spikes that benefit from noise filtering
Solana (SOL) : Network congestion events and ecosystem developments need smoothed detection
General Rule : Higher volatility coins typically benefit from very slow MACD parameters (40-50 / 70-90 / 250-300 ranges)
Key Input Parameters
System Type : Choose between Fast, Normal, Safe, or Crossover (Default: Normal)
MACD Fast MA : 12 periods default (no maximum limit, consider 40-50 for crypto optimization)
MACD Slow MA : 26 periods default (no maximum limit, consider 70-90 for crypto optimization)
MACD Signal MA : 9 periods default (now properly utilized, consider 250-300 for crypto optimization)
Trend MA Type : EMA default (9 options available)
Trend MA Length : 50 periods default (no maximum limit)
Signal Display : Both, Long Only, Short Only, or None
Show Signal Text : True/False toggle for entry marker text
Trading Applications
Recommended Use Cases
Momentum Trading : Capitalize on strong directional moves using the color-coded system
Trend Following : Combine MACD signals with trend MA filter for higher probability trades
Scalping : Use "Fast" system type for quick entries in volatile markets
Swing Trading : Use "Normal" or "Safe" system types for longer-term positions
Cryptocurrency Trading : Optimize parameters for individual crypto assets (e.g., 45/80/290 for DOGE, custom settings for SUI, SEI, LINK, SOL)
Market Suitability
Volatile Markets : Forex, crypto, indices (recommend "Fast" system or smoothed parameters)
Stable Markets : Stocks, ETFs (recommend "Normal" or "Safe" system)
All Timeframes : Effective from 1-minute charts to daily charts
Crypto Optimization : Each major cryptocurrency (DOGE, SUI, SEI, LINK, SOL, etc.) can benefit from custom parameter tuning. Consider slower MACD parameters for noise reduction in volatile crypto markets
Alert System
The strategy provides comprehensive alerts for:
Entry Signals : Long and short entry triangle appearances
Exit Signals : Position exit notifications
Color Changes : Individual histogram color alerts
Trend Conditions : Price above/below trend MA alerts
Strategy Parameters
Default Settings
Initial Capital : $1,000
Position Size : 100% of equity
Commission : 0.1%
Slippage : 3 points
Date Range : January 1, 2018 to December 31, 2069
Risk Management (Optional)
Stop Loss : Disabled by default (customizable percentage-based)
Take Profit : Disabled by default (customizable percentage-based)
Short Trades : Disabled by default (can be enabled)
Important Notes and Limitations
Backtesting Considerations
Uses realistic commission (0.1%) and slippage (3 points)
Default position sizing uses 100% equity - adjust based on risk tolerance
Stop-loss and take-profit are disabled by default to show raw strategy performance
Strategy does not use lookahead bias or future data
Risk Warnings
Past performance does not guarantee future results
MACD-based strategies may produce false signals in ranging markets
Consider combining with additional confluences like support/resistance levels
Test thoroughly on demo accounts before live trading
Adjust position sizing based on your risk management requirements
Technical Limitations
Strategy does not work on non-standard chart types (Heikin Ashi, Renko, etc.)
Signals are based on close prices and may not reflect intraday price action
Multiple rapid signals in volatile conditions may result in overtrading
Credits and Attribution
This strategy is based on the original "MACD Liquidity Tracker System" indicator created by TheNeWSystemLqtyTrckr . This strategy version includes significant enhancements:
Complete strategy implementation with entry/exit logic
Addition of the "Crossover" system type
Proper implementation and utilization of the MACD signal line
Enhanced risk management features
Improved parameter flexibility with no artificial maximum limits
Additional alert systems for comprehensive trade management
The original indicator's core color logic and visual system have been preserved while expanding functionality for automated trading applications.
RACZ-SIGNAL-V2.1RACZ-SIGNAL-V2.1 – Reactive Analytical Confluence Zones
Developed by: RACZ Trading
Indicator Type: Multi-Factor Confluence System
Overlay: Off (separate pane)
Purpose: Detect powerful trade opportunities through confluence of technical signals.
⸻
🔍 What is RACZ?
RACZ stands for Reactive Analytical Confluence Zones.
It’s a high-precision trading tool built for traders who rely on multi-signal confirmation, momentum alignment, and market structure awareness.
Rather than relying on a single technical metric, RACZ dynamically combines RSI, VWAP-RSI, Divergence, ADX, and Volume Analytics to produce a composite signal score from 0 to 12 — the higher the score, the stronger the signal.
⸻
🧠 How It Works – Core Components
1. RSI Analysis
• Detects momentum shifts.
• Compares RSI value to overbought (default: 67) and oversold (default: 33) thresholds.
• Adds points to Bullish or Bearish score.
2. VWAP-RSI
• Uses RSI based on VWAP (Volume Weighted Average Price).
• Adds weight to signals influenced by volume-adjusted price movement.
3. Divergence Detection
• Detects potential reversal zones.
• Bullish Divergence: RSI crosses up from low zone.
• Bearish Divergence: RSI crosses down from high zone.
• Strong confluence signal when present.
4. ADX Dynamic Strength Filter
• Custom-calculated ADX (trend strength indicator).
• Uses a dynamic threshold derived from SMA of ADX over a lookback period, scaled by a factor (default 0.9).
• Ensures signals are only validated in strong trend environments.
5. Volume Z-Score
• Detects anomalies in volume behavior.
• Z-score applied to 20-period volume average & deviation.
• Labels spikes, drops, high/low volume conditions.
⸻
📊 Signal Scoring Logic
Each component (RSI, VWAP-RSI, Divergence, ADX) can score up to 3 points each.
• Bullish Score: Total from bullish alignment of each factor.
• Bearish Score: Total from bearish alignment of each factor.
• Signal Power = max(bullish, bearish)
📈 Signal Interpretation
• BUY: Bullish Score > Bearish Score
• SELL: Bearish Score > Bullish Score
• NEUTRAL: Scores are equal
• Signal power is plotted on a 0–12 histogram:
• 0–5 = Weak
• 6–8 = Medium
• 9–12 = Strong (High Confluence Zone)
🖥️ Live Status Panel (Top-Right Corner)
This real-time panel helps you break down the signal:Component
Value Explanation: RSI / VWAP / DIV / ADX
Shows points contributing to signal
SIGNAL: Current market bias (BUY, SELL, NEUTRAL)
VOLUME: Volume classification (Spike, Drop, High, Low, Normal)
Color-coded for quick interpretation.
✅ How to Use
1. Look at Histogram: Bars ≥6 suggest valid setups, especially ≥9.
2. Confirm Panel Agreement: Check which components are supporting the signal.
3. Validate Volume: Unusual spikes/drops often precede strong moves.
4. Follow Direction: Use BUY/SELL signals aligned with signal power and trend.
⸻
⚙️ Customizable Inputs
• RSI period, overbought/oversold levels
• VWAP-RSI period
• ADX period and dynamic threshold settings
• Fully adjustable to fit any trading style
⸻
🚀 Why Choose RACZ?
• Clarity: Scores & signals derived from multiple tools, not just one.
• Confluence Logic: Designed for traders who look for confirmation across indicators.
• Speed: Real-time responsiveness to changing market dynamics.
• Volume Awareness: Integrated volume intelligence gives a deeper edge.
⸻
⚠️ Disclaimer
This indicator is intended strictly for educational and informational purposes only. It is not financial advice and should not be used to make actual investment decisions. Always conduct your own research or consult with a licensed financial advisor before trading or investing. Use of this script is at your own risk.
NY Opening Range Breakout - MA StopCore Concept
This strategy trades breakouts from the New York opening range (9:30-9:45 AM NY time) on intraday timeframes, designed for scalping and day trading.
Setup Requirements
Timeframe: Works on any timeframe under 15 minutes (1m, 2m, 3m, 5m, 10m)
Session: New York market hours
Range Period: 9:30-9:45 AM NY time (15-minute opening range)
Entry Rules
Long Entries:
Wait for a candle to close above the opening range high
Enter long on the next candle (before 12:00 PM NY time)
Must be above moving average if using MA-based take profit
Short Entries:
Wait for a candle to close below the opening range low
Enter short on the next candle (before 12:00 PM NY time)
Must be below moving average if using MA-based take profit
Risk Management
Stop Loss:
Long trades: Opening range low
Short trades: Opening range high
Take Profit Options:
Fixed Risk Reward: 1.5x the range size (customizable ratio)
Moving Average: Exit when price crosses back through MA
Both: Whichever comes first
Key Features
Trade Direction Options:
Long Only
Short Only
Both directions
Moving Average Filter:
Prevents entries that would immediately hit stop loss
Uses EMA/SMA/WMA/VWMA with customizable length
Acts as dynamic support/resistance
Time Restrictions:
No entries after 12:00 PM NY time (customizable cutoff)
One trade per direction per day
Daily reset of all variables
Visual Elements
Red/green lines showing opening range
Purple line for moving average
Entry and breakout signals with shapes
Take profit and stop loss levels plotted
Information table with current status
Strategy Logic Flow
Morning: Capture 9:30-9:45 range high/low
Wait: Monitor for breakout (previous candle close outside range)
Filter: Check MA condition if using MA-based exits
Enter: Trade on next candle after breakout
Manage: Exit at fixed TP, MA cross, or stop loss
Reset: Start fresh next trading day
This is a momentum-based breakout strategy that capitalizes on early market volatility while using the opening range as natural support/resistance levels.
MACD + SMA 200 Indicator v6🔹 Overview
This advanced indicator combines MACD components with a 200-period SMA to identify high-probability trend directions. It provides:
✅ Multi-timeframe trend analysis (Fast, Slow, and Very Slow MAs)
✅ Visual alerts when the 200 SMA changes direction (bullish/bearish)
✅ Customizable display options (toggle MAs on/off individually)
✅ Clean, professional visuals with color-coded trend confirmation
Perfect for swing traders and investors who want to align with the dominant trend while avoiding false signals.
📊 Key Features
1. Triple Moving Average System
Fast MA (12-period) – Short-term momentum
Slow MA (26-period) – Medium-term trend
Very Slow MA (200-period) – Long-term trend filter (bullish/bearish market)
2. Smart Trend Detection
200 SMA Color Shift: Automatically changes color when trend reverses (green = bullish, red = bearish).
Visual Labels ("BU" / "SD"): Marks where the 200 SMA confirms a new trend direction.
3. Fully Customizable
Toggle each MA on/off (reduce clutter if needed).
Enable/disable colors for cleaner charts.
Adjustable lengths for all moving averages.
4. Built-in Alerts
🔔 "Very Slow MA Turned Green" – Signals potential bullish reversal.
🔔 "Very Slow MA Turned Red" – Signals potential bearish reversal.
🎯 How to Use This Indicator
📈 Bullish Confirmation (Long Setup)
✔ Price above 200 SMA (Very Slow MA turns green)
✔ Fast MA (12) > Slow MA (26) (MACD momentum supports uptrend)
✔ "BU" label appears (confirms trend shift)
📉 Bearish Confirmation (Short Setup)
✔ Price below 200 SMA (Very Slow MA turns red)
✔ Fast MA (12) < Slow MA (26) (MACD momentum supports downtrend)
✔ "SD" label appears (confirms trend shift)
⚙️ Settings & Customization
MA Visibility: Turn individual MAs on/off.
Colors: Disable if you prefer a minimal chart.
Alerts: Enable to get notifications when the 200 SMA changes trend.
📌 Why This Indicator?
Avoid false signals by combining MACD with the 200 SMA.
Clear visual cues make trend identification effortless.
Works on all timeframes (best on 1H, 4H, Daily for swing trades).
🔗 Try it now and trade with the trend! 🚀
📥 Get the Indicator
👉 Click "Add to Chart" and customize it to your trading style!
💬 Feedback? Let me know in the comments how it works for you!
Golden Setup V1Golden Setup V1 is an overlay indicator that automates Tony Rago’s “Golden Setup” price-level framework. It divides the chart into fixed “blockSize” intervals (default 100 points) and plots a series of key horizontal levels within each block—levels at 00, 12, 26, 33, 50, 62, 77 and 88 offsets. These levels act as dynamic support and resistance grids that roll up or down as price moves between blocks.
Key Features
Customizable Offsets
Define eight offset levels corresponding to Rago’s Golden Setup:
00 (Round Number)
12 (Target 12)
26 (First “Golden” level)
33 (Target 33)
50 (Mid-block pivot)
62 (Target 62)
77 (Second “Golden” level)
88 (Target 88)
Multi-Block Coverage
Choose how many blocks above and below the current 100-point block you wish to display, so you always have levels drawn for the surrounding price range.
Golden-Only Filter
A handy toggle lets you show only the two “Golden” offsets (26 & 77), which many traders prioritize for high-probability bounce or breakout areas.
Dynamic Nearest-Level Label
Highlights the closest Golden Setup level (to the right edge of the chart) with a movable label, so you always know which level price is approaching.
Full Styling Control
Customize line colors, widths, block size, label fonts and opacity to suit your charting style.
How It Works
Block Calculation
On each bar, the indicator computes the “current block” by flooring (close / blockSize) and multiplying back by blockSize.
Level Offsets
It adds each of the eight user-defined offsets to that block base (and, if price has moved below the lowest offset, shifts the block down one interval).
Drawing
Each level is drawn as a horizontal line extending across the chart for as many blocks above/below as you select.
Nearest-Level Detection
Within the present block, it calculates which of the plotted levels is closest to price and displays that value on the right edge.
Usage Tips
Use the Golden-Only filter to declutter and focus solely on the 26 & 77 levels, which often act as strong intra-block pivot points.
Combine with volume or momentum indicators to confirm bounces at these levels.
Adjust blockSize (e.g. 50 or 200) if you wish to work in smaller or larger price increments.
⚠️ Disclaimer: This script is for educational and illustrative purposes only. Trading involves risk—always back-test and validate any strategy on a demo account before going live.
CSCMultiTimeframeToolsLibrary "CSCMultiTimeframeTools"
Calculates instant higher timeframe values for higher timeframe analysis with zero lag.
getAdjustedLookback(current_tf_minutes, higher_tf_minutes, length)
Calculate adjusted lookback period for higher timeframe conversion.
Parameters:
current_tf_minutes (int) : Current chart timeframe in minutes (e.g., 5 for 5m).
higher_tf_minutes (int) : Target higher timeframe in minutes (e.g., 15 for 15m).
length (int) : Base length value (e.g., 14 for RSI/MFI).
Returns: Adjusted lookback period (length × multiplier).
Purpose and Benefits of the TimeframeTools Library
This library is designed to solve a critical pain point for traders who rely on higher timeframe (HTF) indicator values while analyzing lower timeframe (LTF) charts. Traditional methods require waiting for multiple candles to close—for example, to see a 1-hour RSI on a 5-minute chart, you’d need 12 closed candles (5m × 12 = 60m) before the value updates. This lag means missed opportunities, delayed signals, and inefficient decision-making.
Why Traders Need This
Whether you’re scalping (5M/15M) or swing trading (1H/4H), this library bridges the gap between timeframes, giving you HTF context in real time—so you can act faster, with confidence.
How This Library Eliminates the Waiting Game
By dynamically calculating the adjusted lookback period, the library allows:
Real-time HTF values on LTF charts – No waiting for candle closes.
Accurate conversions – A 14-period RSI on a 1-hour chart translates to 168 periods (14 × 12) on a 5-minute chart, ensuring mathematical precision.
Flexible application – Works with common indicators like RSI, MFI, CCI, and moving averages (though confirmations should be done before publishing under your own secondary use).
Key Advantages Over Manual Methods
Speed: Instantly reflects HTF values without waiting for candle resolutions.
Adaptability: Adjusts automatically if the user changes timeframes or lengths.
Consistency: Removes human error in manual period calculations.
Limitations to Note
Not a magic bullet – While it solves the lag issue, traders should still:
Validate signals with price action or additional confirmations.
Be mindful of extreme lookback lengths (e.g., a 200-period daily SMA on a 1-minute chart requires 28,800 periods, which may strain performance).
VWAP + EMA Retracement Indicator SwiftEdgeVWAP + EMA Retracement Indicator
Overview
The VWAP + EMA Retracement Indicator is a powerful and visually engaging tool designed to help traders identify high-probability buy and sell opportunities in trending markets. By combining the Volume Weighted Average Price (VWAP) with two Exponential Moving Averages (EMAs) and a unique retracement-based signal logic, this indicator pinpoints moments when the price pulls back to a key zone before resuming its trend. Its modern, AI-inspired visuals and customizable features make it both intuitive and adaptable for traders of all levels.
What It Does
This indicator generates buy and sell signals based on a sophisticated yet straightforward strategy:
Buy Signals: Triggered when the price is above VWAP, has recently retraced to the zone between two EMAs (default 12 and 21 periods), and a strong bullish candle closes above both EMAs.
Sell Signals: Triggered when the price is below VWAP, has retraced to the EMA zone, and a strong bearish candle closes below both EMAs.
Signal Filtering: A customizable cooldown period ensures that only the first signal in a sequence is shown, reducing noise while preserving opportunities for new trends.
Confidence Scores: Each signal includes an AI-inspired confidence score (0-100%), calculated from candle strength and price distance to VWAP, helping traders gauge signal reliability.
The indicator’s visuals enhance decision-making with dynamic gradient lines, a highlighted retracement zone, and clear signal labels, all customizable to suit your preferences.
How It Works
The indicator integrates several components that work together to create a cohesive trading tool:
VWAP: Acts as a dynamic support/resistance level, reflecting the average price weighted by volume. It filters signals to ensure buys occur in uptrends (price above VWAP) and sells in downtrends (price below VWAP).
Dual EMAs: Two EMAs (default 12 and 21 periods) define a retracement zone where the price is likely to consolidate before continuing its trend. Signals are generated only after the price exits this zone with conviction.
Retracement Logic: The indicator looks for price pullbacks to the EMA zone within a user-defined lookback window (default 5 candles), ensuring signals align with trend continuation patterns.
Candle Strength: Signals require strong candles (bullish for buys, bearish for sells) with a minimum body size based on the Average True Range (ATR), filtering out weak or indecisive moves.
Cooldown Mechanism: A unique feature that prevents signal clutter by allowing only the first signal within a user-defined period (default 3 candles), balancing responsiveness with clarity.
Confidence Score: Combines candle body size and price distance to VWAP to assign a score, giving traders an at-a-glance measure of signal strength without needing external analysis.
These components are carefully combined to capture high-probability setups while minimizing false signals, making the indicator suitable for both short-term and swing trading.
How to Use It
Add to Chart: Apply the indicator to a 15-minute chart (recommended) or your preferred timeframe.
Customize Settings:
VWAP Source: Choose the price source (default: hlc3).
EMA Periods: Adjust the fast and slow EMA periods (default: 12 and 21).
Retracement Window: Set how many candles to look back for retracement (default: 5).
ATR Period & Body Size: Define candle strength requirements (default: 14 ATR period, 0.3 multiplier).
Cooldown Period: Control the minimum candles between signals (default: 3; set to 0 to disable).
Candle Requirements: Toggle whether signals require bullish/bearish candles or entire candle above/below EMAs.
Visuals: Enable/disable gradient colors, retracement zone, confidence scores, and choose a color scheme (Neon, Light, or Dark).
Interpret Signals:
Buy: A green "Buy" label with a confidence score appears below the candle when conditions are met.
Sell: A red "Sell" label with a confidence score appears above the candle.
Use the confidence score to prioritize higher-probability signals (e.g., above 80%).
Trade Management: Combine signals with your risk management strategy, such as setting stop-loss below the retracement zone and targeting a 1:2 risk-reward ratio.
Why It’s Unique
The VWAP + EMA Retracement Indicator stands out due to its thoughtful integration of classic indicators with modern enhancements:
Balanced Signal Filtering: The cooldown mechanism ensures clarity without missing key opportunities, unlike many indicators that overwhelm with frequent signals.
AI-Inspired Confidence: The confidence score simplifies decision-making by quantifying signal strength, mimicking advanced analytical tools in an accessible way.
Elegant Visuals: Dynamic gradients, a highlighted retracement zone, and customizable color schemes (Neon, Light, Dark) create a sleek, futuristic interface that’s both functional and visually appealing.
Flexibility: Extensive customization options let traders tailor the indicator to their style, from conservative swing trading to aggressive scalping.
Daily Bollinger Band StrategyOverview of the Daily Bollinger Band Strategy
1. Strategy Overview and Features
This strategy is a tool for backtesting a trading method that uses Bollinger Bands. It is *not* a tool for automated trading.
1-1. Main Display Items
The main chart displays the Bollinger Bands and the 200-day moving average.
It also shows the entry and exit points along with the position size (in units of 100 shares).
1-2. Summary of Trading Rules
For long (buy) strategies, the trade enters when the price crosses above the +1σ line of the Bollinger Bands, aiming to ride an upward trend. The position is exited when the price crosses below the middle band.
For short (sell) strategies, the trade enters when the price crosses below the -1σ line of the Bollinger Bands, aiming to ride a downward trend. The position is exited when the price crosses above the middle band.
1-3. Strategic Enhancements
The strategy uses the slope of the 200-day moving average to determine the trend direction and enter trades accordingly. This improves the win rate and payoff ratio.
Additionally, to reduce the probability of ruin, the risk per trade is limited to 1.0% of capital, and position sizing is adjusted using ATR (a volatility indicator).
2. Trading Rules
2-1. Chart Type
Only daily charts are used.
2-2. Indicators Used
(1) Bollinger Bands** (used for entry and exit signals)
- Period: Fixed at 80 days
- Upper and lower bands: Fixed at ±1σ
(2) Moving Average** (used to determine trend direction)
- Period: Fixed at 200 days
- Trend direction is judged based on whether the difference from the previous day is positive (upward) or negative (downward)
2-3. Buy Rules
Setup:
- Price crosses above the +1σ line from below
- Both the middle band and 200-day moving average are upward sloping
Entry:
- Buy at the next day’s market open using a market order
Exit:
- If the price crosses below the middle band, sell at the next day’s open using a market order
2-4. Sell Rules
Setup:
- Price crosses below the -1σ line from above
- Both the middle band and 200-day moving average are downward sloping
Entry:
- Sell at the next day’s market open using a market order
Exit:
- If the price crosses above the middle band, buy back at the next day’s open using a market order
2-5. Risk Management Rules
- Risk per trade: 1.0% of total capital (acceptable loss = capital × 1.0%)
- Position size: Acceptable loss ÷ 2ATR (rounded down to the nearest unit of 100 shares)
2-6. Other Notes
- No brokerage fees
- No pyramiding
- No partial exits
- No reverse positions (no “stop-and-reverse” trades)
3. Strategy Parameters
The following settings can be specified:
3-1. Period Settings
- Start date: Set the start date for the backtest period
- Stop date: Set the end date for the backtest period
3-2. Display of Trend and Signals
- Show trend: When checked, the background color of the bars is light red for an uptrend and light blue for a downtrend
- Show signal: When checked, entry and exit signals are displayed (note: signals are executed at the next day’s open, so there is a one-day lag in the display)
3-3. Capital Management Settings
- Funds: Capital available for trading (in JPY)
- Risk rate: Specify what percentage of the capital to risk per trade
Settings in the “Properties” tab are not used in this strategy.
4. Backtest Results (Example)
Here are the backtest results conducted by the author:
- Target Stocks: All components of the Nikkei 225
- Test Period: January 4, 2000 – December 30, 2024
- Data Points: 12,886
- Win Rate: 33.45%
- Net Profit: ¥82,132,380
- Payoff Ratio: 2.450
- Expected Value: ¥6,373.8
- Risk Rate: 1.0%
- Probability of Ruin: 0.00%
---
デイリー・ボリンジャーバンド・ストラテジーの概要
1. ストラテジーの概要と特徴
このストラテジーは、ボリンジャーバンドを使ったトレード手法のバックテストを行うツールです。自動売買を行うツールではありません。
1-1. 主な表示項目
メインチャートにボリンジャーバンドと 200日移動平均線を表示します。
また、エントリーと手仕舞いのタイミングと数量(100株単位)も表示されます。
1-2. トレードルールの概要
買い戦略の場合、ボリンジャーバンドの +1σ 超えでエントリーして上昇トレンドに乗り、ミドルバンドを割ったら決済します。
売り戦略の場合、ボリンジャーバンドの -1σ 割りでエントリーして下降トレンドに乗り、ミドルバンドを上抜けたら決済します。
1-3. ストラテジーの工夫点
200日移動平均線の傾きを見てトレンド方向にエントリーをしています。こうして勝率とペイオフレシオの成績を向上しています。
また、破産確率を抑えるために、リスク資金比率を 1.0% にして、ATR(ボラティリティ指標) を使って注文数を調整しています。
2. 売買ルール
2-1. 使用するチャート
日足チャートに限定します
2-2. 使用する指標
(1) ボリンジャーバンド(仕掛けと手仕舞いのシグナルに使用)
期間は80日に固定
上下バンドは ±1σ に固定
(2) 移動平均線(トレンドの方向を見るために使用)
期間は200日に固定
移動平均の値の前日との差がプラスのとき上向き、マイナスのとき下向きと判断
2-3. 買いのルール
セットアップ:ボリンジャーバンドの +1σ を価格が下から上に交差 かつ ミドルバンドと 200日移動平均線が上向き
仕掛け:翌日の寄り付きに成行で買う
手仕舞い:ボリンジャーバンドのミドルバンドを価格が上から下に交差したら、翌日の寄り付きに成行で売る
2-4. 売りのルール
セットアップ:ボリンジャーバンドの -1σ を価格が上から下に交差 かつ ミドルバンドと 200日移動平均線が下向き
仕掛け:翌日の寄り付きに成行で売る
手仕舞い:ボリンジャーバンドのミドルバンドを価格が下から上に交差したら、翌日の寄り付きに成行で買い戻す
2-5. 資金管理のルール
リスク資金比率:資産の 1.0%(許容損失 = 資産 × 1.0%)
注文数:許容損失 ÷ 2ATR(単元株数未満は切り捨て)
2-6. その他
仲介手数料:なし
ピラミッディング:なし
分割決済:なし
ドテン:しない
3. ストラテジーのパラメーター
次の項目が指定できます。
3-1. 期間の設定
Staer date : バックテストの検証期間の開始日を指定します
Stop date : バックテストの検証期間の終了日を指定します
3-2. トレンドとシグナルの表示
Show trend : チェックを入れると、バーの背景色が、トレンドが上昇のときは薄い赤で、下落のときは薄い青で表示されます
Show signal : チェックを入れると、エントリーと手仕舞いのシグナルを表示します(シグナルの出た翌日の寄り付きに売買をするので表示に1日のずれがあります)
3-3. 資金管理用の設定
Funds : トレード用の資金(円)
Risk rate : 許容損失を資金の何%にするかで指定します
「プロパティタブ」で設定する値は、このストラテジーでは有効ではありません。
4. バックテストの結果(例)
作者がバックテストを実施した結果をお知らせします。
対象銘柄:日経225構成銘柄すべて
対象期間:2000年1月4日~2024年12月30日
データ件数:12,886
勝率:33.45%
純利益:82,132,380
ペイオフレシオ:2.450
期待値:6,373.8
リスク資金比率:1.0%
破産確率:0.00%
Ichimoku Cloud Auto TF🧠 Timeframe Breakdown for Ichimoku Cloud Auto TF
Each timeframe in this indicator is carefully calibrated to reflect meaningful Ichimoku behavior relative to its scale. Here's how each one is structured and what it's best used for:
⏱️ 1 Minute (1m)
Tenkan / Kijun / Span B: 5 / 15 / 45
Use: Scalping fast price action.
Logic: Quick reaction to short-term momentum. Best for highly active traders or bots.
⏱️ 2 Minutes (2m)
Tenkan / Kijun / Span B: 6 / 18 / 54
Use: Slightly smoother than 1m, still ideal for scalping with a little more stability.
⏱️ 5 Minutes (5m)
Tenkan / Kijun / Span B: 8 / 24 / 72
Use: Intraday setups, quick trend capture.
Logic: Balanced between reactivity and noise reduction.
⏱️ 15 Minutes (15m)
Tenkan / Kijun / Span B: 9 / 27 / 81
Use: Short-term swing and intraday entries with higher reliability.
⏱️ 30 Minutes (30m)
Tenkan / Kijun / Span B: 10 / 30 / 90
Use: Intra-swing entries or confirmation of 5m/15m signals.
🕐 1 Hour (1H)
Tenkan / Kijun / Span B: 12 / 36 / 108
Use: Ideal for swing trading setups.
Logic: Anchored to Daily reference (1H × 24 ≈ 1D).
🕐 2 Hours (2H)
Tenkan / Kijun / Span B: 14 / 42 / 126
Use: High-precision swing setups with better context.
🕒 3 Hours (3H)
Tenkan / Kijun / Span B: 15 / 45 / 135
Use: Great compromise between short and mid-term vision.
🕓 4 Hours (4H)
Tenkan / Kijun / Span B: 18 / 52 / 156
Use: Position traders & intraday swing confirmation.
Logic: Designed to echo the structure of 1D Ichimoku but on smaller scale.
📅 1 Day (1D)
Tenkan / Kijun / Span B: 9 / 26 / 52
Use: Classic Ichimoku settings.
Logic: Standard used globally for technical analysis. Suitable for swing and position trading.
📆 1 Week (1W)
Tenkan / Kijun / Span B: 12 / 24 / 120
Use: Long-term position trading & institutional swing confirmation.
Logic: Expanded ratios for broader perspective and noise filtering.
🗓️ 1 Month (1M)
Tenkan / Kijun / Span B: 6 / 12 / 24
Use: Macro-level trend visualization and investment planning.
Logic: Condensed but stable structure to handle longer data cycles.
📌 Summary
This indicator adapts Ichimoku settings dynamically to your chart's timeframe, maintaining logical ratios between Tenkan, Kijun, and Span B. This ensures each timeframe remains responsive yet meaningful for its respective market context.
IWMA - DolphinTradeBot1️⃣ WHAT IS IT ?
▪️ The Inverted Weighted Moving Average (IWMA) is the reversed version of WMA, where older prices receive higher weights, while recent prices receive lower weights. As a result, IWMA focuses more on past price movements while reducing sensitivity to new prices.
2️⃣ HOW IS IT WORK ?
🔍 To understand the IWMA(Inverted Weighted Moving Average) indicator, let's first look at how WMA (Weighted Moving Average) is calculated.
LET’S SAY WE SELECTED A LENGTH OF 5, AND OUR CURRENT CLOSING VALUES ARE .
▪️ WMA Calculation Method
When calculating WMA, the most recent price gets the highest weight, while the oldest price gets the lowest weight.
The Calculation is ;
( 10 ×1)+( 12 ×2)+( 21 ×3)+( 24 ×4)+( 38 ×5) = 10+24+63+96+190 = 383
1+2+3+4+5 = 15
WMA = 383/15 ≈ 25.53
WMA = ta.wma(close,5) = 25.53
▪️ IWMA Calculation Method
The Inverted Weighted Moving Average (IWMA) is the reversed version of WMA, where older prices receive higher weights, while recent prices receive lower weights. As a result, IWMA focuses more on past price movements while reducing sensitivity to new prices.
The Calculation is ;
( 10 ×5)+( 12 ×4)+( 21 ×3)+( 24 ×2)+( 38 ×1) = 50+48+63+48+38 = 247
1+2+3+4+5 = 15
IWMA = 247/15 ≈ 16.46
IWMA = iwma(close,5) = 16.46
3️⃣ SETTINGS
in the indicator's settings, you can change the length and source used for calculation.
With the default settings, when you first add the indicator, only the iwma will be visible. However, to observe how much it differs from the normal wma calculation, you can enable the "show wma" option to see both indicators with the same settings or you can enable the Show Signals to see IWMA and WMA crossover signals .
4️⃣ 💡 SOME IDEAS
You can use the indicator for support and resistance level analysis or trend analysis and reversal detection with short and long moving averages like regular moving averages.
Another option is to consider whether the iwma is above or below the normal wma or to evaluate the crossovers between wma and iwma.
Multi-timeframe Difference Forecast (MTD)Description:
The Multi-timeframe Difference Forecast indicator projects potential future price levels by comparing open prices across multiple timeframe pairs. It uses 12 predefined timeframe pairs where each pair consists of a lower and a higher timeframe. For each pair, the indicator calculates a forecast value by adding the difference between the lower timeframe’s open and the higher timeframe’s open to the current bar’s close. These forecast values are then plotted as points into the future and connected by blue line segments, forming a continuous projection line on your chart.
How It Works:
Timeframe Pairs:
The indicator defines 12 pairs. For example:
Pair 1: Lower timeframe = 15 minutes; Higher timeframe = 150 minutes
Pair 2: Lower timeframe = 30 minutes; Higher timeframe = 165 minutes
⋮
Pair 12: Lower timeframe = 180 minutes; Higher timeframe = 720 minutes
Forecast Calculation:
For each pair, the forecast is computed as:
forecast = close + (lower timeframe open - higher timeframe open)
This produces a series of forecast values that are then plotted on the chart.
Time Offset:
Each forecast point is offset into the future by a number of bars calculated as the ratio between the lower timeframe’s duration (in seconds) and the current chart’s timeframe (in seconds). This adjustment helps align the forecast points correctly on the time axis.
Visualization:
The indicator draws blue lines (width = 2) connecting the current price to each forecast point sequentially, forming a polyline that visually represents the projected price trajectory.
How to Use:
Overlay on Chart:
Apply this indicator to any chart, and it will automatically overlay the forecast line on your current price chart.
Timeframe Flexibility:
The calculations adjust to the chart’s timeframe, so you can use it on various timeframes without needing to change the code.
Interpretation:
The forecast line is intended to provide a visual estimate of potential future price movement based on historical open price differences. It is meant to serve as an additional analytical tool rather than a standalone trading signal.
Disclaimer:
This script is provided for educational and informational purposes only and should not be construed as financial or trading advice. Trading involves significant risk, and past performance is not indicative of future results. You should perform your own analysis and consult with a qualified professional before making any trading decisions. Use this indicator at your own risk.
Multi-indicator Signal Builder [Skyrexio]Overview
Multi-Indicator Signal Builder is a versatile, all-in-one script designed to streamline your trading workflow by combining multiple popular technical indicators under a single roof. It features a single-entry, single-exit logic, intrabar stop-loss/take-profit handling, an optional time filter, a visually accessible condition table, and a built-in statistics label. Traders can choose any combination of 12+ indicators (RSI, Ultimate Oscillator, Bollinger %B, Moving Averages, ADX, Stochastic, MACD, PSAR, MFI, CCI, Heikin Ashi, and a “TV Screener” placeholder) to form entry or exit conditions. This script aims to simplify strategy creation and analysis, making it a powerful toolkit for technical traders.
Indicators Overview
1. RSI (Relative Strength Index)
Measures recent price changes to evaluate overbought or oversold conditions on a 0–100 scale.
2. Ultimate Oscillator (UO)
Uses weighted averages of three different timeframes, aiming to confirm price momentum while avoiding false divergences.
3. Bollinger %B
Expresses price relative to Bollinger Bands, indicating whether price is near the upper band (overbought) or lower band (oversold).
4. Moving Average (MA)
Smooths price data over a specified period. The script supports both SMA and EMA to help identify trend direction and potential crossovers.
5. ADX (Average Directional Index)
Gauges the strength of a trend (0–100). Higher ADX signals stronger momentum, while lower ADX indicates a weaker trend.
6. Stochastic
Compares a closing price to a price range over a given period to identify momentum shifts and potential reversals.
7. MACD (Moving Average Convergence/Divergence)
Tracks the difference between two EMAs plus a signal line, commonly used to spot momentum flips through crossovers.
8. PSAR (Parabolic SAR)
Plots a trailing stop-and-reverse dot that moves with the trend. Often used to signal potential reversals when price crosses PSAR.
9. MFI (Money Flow Index)
Similar to RSI but incorporates volume data. A reading above 80 can suggest overbought conditions, while below 20 may indicate oversold.
10. CCI (Commodity Channel Index)
Identifies cyclical trends or overbought/oversold levels by comparing current price to an average price over a set timeframe.
11. Heikin Ashi
A type of candlestick charting that filters out market noise. The script uses a streak-based approach (multiple consecutive bullish or bearish bars) to gauge mini-trends.
12. TV Screener
A placeholder condition designed to integrate external buy/sell logic (like a TradingView “Buy” or “Sell” rating). Users can override or reference external signals if desired.
Unique Features
1. Multi-Indicator Entry and Exit
You can selectively enable any subset of 12+ classic indicators, each with customizable parameters and conditions. A position opens only if all enabled entry conditions are met, and it closes only when all enabled exit conditions are satisfied, helping reduce false triggers.
2. Single-Entry / Single-Exit with Intrabar SL/TP
The script supports a single position at a time. Once a position is open, it monitors intrabar to see if the price hits your stop-loss or take-profit levels before the bar closes, making results more realistic for fast-moving markets.
3. Time Window Filter
Users may specify a start/end date range during which trades are allowed, making it convenient to focus on specific market cycles for backtesting or live trading.
4. Condition Table and Statistics
A table at the bottom of the chart lists all active entry/exit indicators. Upon each closed trade, an integrated statistics label displays net profit, total trades, win/loss count, average and median PnL, etc.
5. Seamless Alerts and Automation
Configure alerts in TradingView using “Any alert() function call.”
The script sends JSON alert messages you can route to your own webhook.
The indicator can be integrated with Skyrexio alert bots to automate execution on major cryptocurrency exchanges
6. Optional MA/PSAR Plots
For added visual clarity, optionally plot the chosen moving averages or PSAR on the chart to confirm signals without stacking multiple indicators.
Methodology
1. Multi-Indicator Entry Logic
When multiple entry indicators are enabled (e.g., RSI + Stochastic + MACD), the script requires all signals to align before generating an entry. Each indicator can be set for crossovers, crossunders, thresholds (above/below), etc. This “AND” logic aims to filter out low-confidence triggers.
2. Single-Entry Intrabar SL/TP
One Position At a Time: Once an entry signal triggers, a trade opens at the bar’s close.
Intrabar Checks: Stop-loss and take-profit levels (if enabled) are monitored on every tick. If either is reached, the position closes immediately, without waiting for the bar to end.
3. Exit Logic
All Conditions Must Agree: If the trade is still open (SL/TP not triggered), then all enabled exit indicators must confirm a closure before the script exits on the bar’s close.
4. Time Filter
Optional Trading Window: You can activate a date/time range to constrain entries and exits strictly to that interval.
Justification of Methodology
Indicator Confluence: Combining multiple tools (RSI, MACD, etc.) can reduce noise and false signals.
Intrabar SL/TP: Capturing real-time spikes or dips provides a more precise reflection of typical live trading scenarios.
Single-Entry Model: Straightforward for both manual and automated tracking (especially important in bridging to bots).
Custom Date Range: Helps refine backtesting for specific market conditions or to avoid known irregular data periods.
How to Use
1. Add the Script to Your Chart
In TradingView, open Indicators , search for “Multi-indicator Signal Builder”.
Click to add it to your chart.
2. Configure Inputs
Time Filter: Set a start and end date for trades.
Alerts Messages: Input any JSON or text payload needed by your external service or bot.
Entry Conditions: Enable and configure any indicators (e.g., RSI, MACD) for a confluence-based entry.
Close Conditions: Enable exit indicators, along with optional SL (negative %) and TP (positive %) levels.
3. Set Up Alerts
In TradingView, select “Create Alert” → Condition = “Any alert() function call” → choose this script.
Entry Alert: Triggers on the script’s entry signal.
Close Alert: Triggers on the script’s close signal (or if SL/TP is hit).
Skyrexio Alert Bots: You can route these alerts via webhook to Skyrexio alert bots to automate order execution on major crypto exchanges (or any other supported broker).
4. Visual Reference
A condition table at the bottom summarizes active signals.
Statistics Label updates automatically as trades are closed, showing PnL stats and distribution metrics.
Backtesting Guidelines
Symbol/Timeframe: Works on multiple assets and timeframes; always do thorough testing.
Realistic Costs: Adjust commissions and potential slippage to match typical exchange conditions.
Risk Management: If using the built-in stop-loss/take-profit, set percentages that reflect your personal risk tolerance.
Longer Test Horizons: Verify performance across diverse market cycles to gauge reliability.
Example of statistic calculation
Test Period: 2023-01-01 to 2025-12-31
Initial Capital: $1,000
Commission: 0.1%, Slippage ~5 ticks
Trade Count: 468 (varies by strategy conditions)
Win rate: 76% (varies by strategy conditions)
Net Profit: +96.17% (varies by strategy conditions)
Disclaimer
This indicator is provided strictly for informational and educational purposes .
It does not constitute financial or trading advice.
Past performance never guarantees future results.
Always test thoroughly in demo environments before using real capital.
Enjoy exploring the Multi-Indicator Signal Builder! Experiment with different indicator combinations and adjust parameters to align with your trading preferences, whether you trade manually or link your alerts to external automation services. Happy trading and stay safe!
Scalping trading system based on 4 ema linesScalping Trading System Based on 4 EMA Lines
Overview:
This is a scalping trading strategy built on signals from 4 EMA moving averages: EMA(8), EMA(12), EMA(24) and EMA(72).
Conditions:
- Time frame: H1 (1 hour).
- Trading assets: Applicable to major currency pairs with high volatility
- Risk management: Use a maximum of 1-2% of capital for each transaction. The order holding time can be from a few hours to a few days, depending on the price fluctuation amplitude.
Trading rules:
Determine the main trend:
Uptrend: EMA(8), EMA(12) and EMA(24) are above EMA(72).
Downtrend: EMA(8), EMA(12) and EMA(24) are below EMA(72).
Trade in the direction of the main trend** (buy in an uptrend and sell in a downtrend).
Entry conditions:
- Only trade in a clearly trending market.
Uptrend:
- Wait for the price to correct to the EMA(24).
- Enter a buy order when the price closes above the EMA(24).
- Place a stop loss below the bottom of the EMA(24) candle that has just been swept.
Downtrend:
- Wait for the price to correct to the EMA(24).
- Enter a sell order when the price closes below the EMA(24).
- Place a stop loss above the top of the EMA(24) candle that has just been swept.
Take profit and order management:
- Take profit when the price moves 20 to 40 pips in the direction of the trade.
Use Trailing Stop to optimize profits instead of setting a fixed Take Profit.
Note:
- Do not trade within 30 minutes before and after the announcement of important economic news, as the price may fluctuate abnormally.
Additional filters:
To increase the success rate and reduce noise, this strategy uses additional conditions:
1. The price is calculated only when the candle closes (no repaint).
2. When sweeping through EMA(24), the price needs to close above EMA(24).
3. The closing price must be higher than 50% of the candle's length.
4. **The bottom of the candle sweeping through EMA(24) must be lower than the bottom of the previous candle (liquidity sweep).
---
Alert function:
When the EMA(24) sweep conditions are met, the system will trigger an alert if you have set it up.
- Entry point: The closing price of the candle sweeping through EMA(24).
- Stop Loss:
- Buy Order: Place at the bottom of the sweep candle.
- Sell Order: Place at the top of the sweep candle.
---
Note:
This strategy is designed to help traders identify profitable trading opportunities based on trends. However, no strategy is 100% guaranteed to be successful. Please test it thoroughly on a demo account before using it.
Year-over-Year % Change for PCEPILFEHello, traders!
This indicator is specifically for FRED:PCEPILFE , which is a 'Personal Consumption Expenditures (PCE) Index excluding food and energy.'
What this indicator does is compare the monthly data to that of the same month last year to see how it has changed over the year. This comparison method is widely known as YoY(Year-over-Year).
While I made this indicator to use for FRED:PCEPILFE , you may use it for different charts as long as they show monthly data.
FRED:PCEPILFE is one of the main measures of inflation the Federal Reserve uses.
You can see the YoY % change of the PCE Index excluding food and energy in the official website for the Bureau of Labor Statistics, but unfortunately, I couldn't find one in TradingView.
So instead, I decided to make my own indicator showing the changes using FRED:PCEPILFE .
The code is very simple: it compares the data to the data 12 points ago because 12 points would mean 12 months in this chart. We then multiply the result by 100 for percentage.
Doing so, we compare the current month to the same month of the previous year.
Because I am only interested in the YoY % Change of the index, I pulled the indicator all the way up, covering the original chart data entirely. (Or you could achieve the same by simply moving your indicator to the pane above. But this way, the original chart data is also visible.)
I hope this indicator helps you with your analysis. Feel free to ask questions if have any!
God bless!
ICT Digital open Daily DividersDescription for "ICT Digital Open Daily Dividers" TradingView Indicator
Overview
The "ICT Digital Open Daily Dividers" is a versatile and comprehensive TradingView Pine Script indicator designed for traders who utilize Institutional Order Flow methodologies, particularly in ICT (Inner Circle Trader) trading. This indicator provides a structured visual framework to assist traders in identifying key daily market sessions, critical opening prices, and distinguishing different trading days, especially focusing on the Sunday open, which is a crucial element in the ICT trading strategy.
Core Functionalities
Daily Vertical Lines: The script plots vertical lines at the start of each trading day, which helps to demarcate daily trading sessions. These lines are customizable, allowing traders to choose their color, style (solid, dashed, or dotted), and width. This feature helps in visually segmenting each trading day, making it easier to analyze daily price action patterns.
Sunday Open Differentiation: Unlike many other daily divider indicators, this script uniquely provides the option to highlight the Sunday open at 6 PM EST with distinct lines. This feature is especially valuable for ICT traders who consider the Sunday open as a critical reference point for weekly analysis. The color, style, and width of the Sunday open lines can be set separately, providing a clear visual distinction from regular weekday separators.
12 AM Open Toggle: For markets that are influenced by midnight opens, the indicator includes an option to shift the daily open line to 12 AM instead of the default 6 PM. This flexibility allows traders to adapt the indicator to different market dynamics or trading strategies.
Timezone Customization: The indicator allows traders to set the timezone for the open lines, ensuring that the vertical lines align accurately with the trader’s specific market hours, whether they follow New York time or any other timezone.
Session Time Filters: The script can hide or show specific trading session markers, such as the New York session open and close, which are pivotal for ICT traders. These markers help in focusing on the most active and liquid trading times.
Customizable Style Settings: The script includes comprehensive styling options for the plotted lines and session markers, allowing traders to personalize their charts to suit their visual preferences and improve clarity.
Day of the Week Labels: The indicator can plot labels for each day of the week, providing a quick reference to the day’s price action. This feature is particularly useful in reviewing weekly trading patterns and performance.
Use in ICT Trading
In ICT trading, the concept of the "open" is fundamental. The "ICT Digital Open Daily Dividers" indicator serves multiple purposes:
Market Structure Identification: By clearly marking daily opens, traders can easily identify market structure changes such as breakouts, retracements, or consolidations around these key levels.
Reference Points: The Sunday open is often a key level in ICT analysis, serving as a benchmark for assessing market direction for the upcoming week. This indicator’s ability to plot Sunday opens separately makes it uniquely suited for ICT strategies.
Time-based Analysis: ICT methodology often involves analyzing the market at specific times of the day. This indicator supports such analysis by marking significant session opens and closes.
Uniqueness and Advantages
The "ICT Digital Open Daily Dividers" stands out from other similar indicators due to its specialized features:
Sunday Open Highlighting: Few indicators offer the capability to specifically mark the Sunday open with distinct styling options.
Flexibility in Time Adjustments: With options to adjust the open time to either 6 PM or 12 AM, this indicator caters to a broader range of trading strategies and market conditions.
Enhanced Visualization: The wide range of customization options ensures that traders can tailor the indicator to their specific needs, enhancing the usability and visual clarity of their charts.
Compliance with TradingView's Pine Script Community Guidelines
The description adheres to TradingView's guidelines by being comprehensive, clear, and informative. It highlights the utility of the script, its unique features, and its application in trading strategies without making exaggerated claims about performance or profitability. The detailed customization options and unique functionalities are emphasized to differentiate this script from other standard daily divider indicators.
Rolling Window Geometric Brownian Motion Projections📊 Rolling GBM Projections + EV & Adjustable Confidence Bands
Overview
The Rolling GBM Projections + EV & Adjustable Confidence Bands indicator provides traders with a robust, dynamic tool to model and project future price movements using Geometric Brownian Motion (GBM). By combining GBM-based simulations, expected value (EV) calculations, and customizable confidence bands, this indicator offers valuable insights for decision-making and risk management.
Key Features
Rolling GBM Projections: Simulate potential future price paths based on drift (μμ) and volatility (σσ).
Expected Value (EV) Line: Represents the average projection of simulated price paths.
Confidence Bands: Define ranges where the price is expected to remain, adjustable from 51% to 99%.
Simulation Lines: Visualize individual GBM paths for detailed analysis.
EV of EV Line: A smoothed trend of the EV, offering additional clarity on price dynamics.
Customizable Lookback Periods: Adjust the rolling lookback periods for drift and volatility calculations.
Mathematical Foundation
1. Geometric Brownian Motion (GBM)
GBM is a mathematical model used to simulate the random movement of asset prices, described by the following stochastic differential equation:
dSt=μStdt+σStdWt
dSt=μStdt+σStdWt
Where:
StSt: Price at time tt
μμ: Drift term (expected return)
σσ: Volatility (standard deviation of returns)
dWtdWt: Wiener process (standard Brownian motion)
2. Drift (μμ) and Volatility (σσ)
Drift (μμ): Represents the average logarithmic return of the asset. Calculated using a simple moving average (SMA) over a rolling lookback period.
μ=SMA(ln(St/St−1),Lookback Drift)
μ=SMA(ln(St/St−1),Lookback Drift)
Volatility (σσ): Measures the standard deviation of logarithmic returns over a rolling lookback period.
σ=STD(ln(St/St−1),Lookback Volatility)
σ=STD(ln(St/St−1),Lookback Volatility)
3. Price Simulation Using GBM
The GBM formula for simulating future prices is:
St+Δt=St×e(μ−12σ2)Δt+σϵΔt
St+Δt=St×e(μ−21σ2)Δt+σϵΔt
Where:
ϵϵ: Random variable from a standard normal distribution (N(0,1)N(0,1)).
4. Confidence Bands
Confidence bands are determined using the Z-score corresponding to a user-defined confidence percentage (CC):
Upper Band=EV+Z⋅σ
Upper Band=EV+Z⋅σ
Lower Band=EV−Z⋅σ
Lower Band=EV−Z⋅σ
The Z-score is computed using an inverse normal distribution function, approximating the relationship between confidence and standard deviations.
Methodology
Rolling Drift and Volatility:
Drift and volatility are calculated using logarithmic returns over user-defined rolling lookback periods (default: μ=20μ=20, σ=16σ=16).
Drift defines the overall directional tendency, while volatility determines the randomness and variability of price movements.
Simulations:
Multiple GBM paths (default: 30) are generated for a specified number of projection candles (default: 12).
Each path is influenced by the current drift and volatility, incorporating random shocks to simulate real-world price dynamics.
Expected Value (EV):
The EV is calculated as the average of all simulated paths for each projection step, offering a statistical mean of potential price outcomes.
Confidence Bands:
The upper and lower bounds of the confidence bands are derived using the Z-score corresponding to the selected confidence percentage (e.g., 68%, 95%).
EV of EV:
A running average of the EV values, providing a smoothed perspective of price trends over the projection horizon.
Indicator Functionality
User Inputs:
Drift Lookback (Bars): Define the number of bars for rolling drift calculation (default: 20).
Volatility Lookback (Bars): Define the number of bars for rolling volatility calculation (default: 16).
Projection Candles (Bars): Set the number of bars to project future prices (default: 12).
Number of Simulations: Specify the number of GBM paths to simulate (default: 30).
Confidence Percentage: Input the desired confidence level for bands (default: 68%, adjustable from 51% to 99%).
Visualization Components:
Simulation Lines (Blue): Display individual GBM paths to visualize potential price scenarios.
Expected Value (EV) Line (Orange): Highlight the mean projection of all simulated paths.
Confidence Bands (Green & Red): Show the upper and lower confidence limits.
EV of EV Line (Orange Dashed): Provide a smoothed trendline of the EV values.
Current Price (White): Overlay the real-time price for context.
Display Toggles:
Enable or disable components (e.g., simulation lines, EV line, confidence bands) based on preference.
Practical Applications
Risk Management:
Utilize confidence bands to set stop-loss levels and manage trade risk effectively.
Use narrower confidence intervals (e.g., 50%) for aggressive strategies or wider intervals (e.g., 95%) for conservative approaches.
Trend Analysis:
Observe the EV and EV of EV lines to identify overarching trends and potential reversals.
Scenario Planning:
Analyze simulation lines to explore potential outcomes under varying market conditions.
Statistical Insights:
Leverage confidence bands to understand the statistical likelihood of price movements.
How to Use
Add the Indicator:
Copy the script into the TradingView Pine Editor, save it, and apply it to your chart.
Customize Settings:
Adjust the lookback periods for drift and volatility.
Define the number of projection candles and simulations.
Set the confidence percentage to tailor the bands to your strategy.
Interpret the Visualization:
Use the EV and confidence bands to guide trade entry, exit, and position sizing decisions.
Combine with other indicators for a holistic trading strategy.
Disclaimer
This indicator is a mathematical and statistical tool. It does not guarantee future performance.
Use it in conjunction with other forms of analysis and always trade responsibly.
Happy Trading! 🚀
Historical High/Lows Statistical Analysis(More Timeframe interval options coming in the future)
Indicator Description
The Hourly and Weekly High/Low (H/L) Analysis indicator provides a powerful tool for tracking the most frequent high and low points during different periods, specifically on an hourly basis and a weekly basis, broken down by the days of the week (DOTW). This indicator is particularly useful for traders seeking to understand historical behavior and patterns of high/low occurrences across both hourly intervals and weekly days, helping them make more informed decisions based on historical data.
With its customizable options, this indicator is versatile and applicable to a variety of trading strategies, ranging from intraday to swing trading. It is designed to meet the needs of both novice and experienced traders.
Key Features
Hourly High/Low Analysis:
Tracks and displays the frequency of hourly high and low occurrences across a user-defined date range.
Enables traders to identify which hours of the day are historically more likely to set highs or lows, offering valuable insights into intraday price action.
Customizable options for:
Hourly session start and end times.
22-hour session support for futures traders.
Hourly label formatting (e.g., 12-hour or 24-hour format).
Table position, size, and design flexibility.
Weekly High/Low Analysis by Day of the Week (DOTW):
Captures weekly high and low occurrences for each day of the week.
Allows traders to evaluate which days are most likely to produce highs or lows during the week, providing insights into weekly price movement tendencies.
Displays the aggregated counts of highs and lows for each day in a clean, customizable table format.
Options for hiding specific days (e.g., weekends) and customizing table appearance.
User-Friendly Table Display:
Both hourly and weekly data are displayed in separate tables, ensuring clarity and non-interference.
Tables can be positioned on the chart according to user preferences and are designed to be visually appealing yet highly informative.
Customizable Date Range:
Users can specify a start and end date for the analysis, allowing them to focus on specific periods of interest.
Possible Uses
Intraday Traders (Hourly Analysis):
Analyze hourly price action to determine which hours are more likely to produce highs or lows.
Identify intraday trading opportunities during statistically significant time intervals.
Use hourly insights to time entries and exits more effectively.
Swing Traders (Weekly DOTW Analysis):
Evaluate weekly price patterns by identifying which days of the week are more likely to set highs or lows.
Plan trades around days that historically exhibit strong movements or price reversals.
Futures and Forex Traders:
Use the 22-hour session feature to exclude the CME break or other session-specific gaps from analysis.
Combine hourly and DOTW insights to optimize strategies for continuous markets.
Data-Driven Trading Strategies:
Use historical high/low data to test and refine trading strategies.
Quantify market tendencies and evaluate whether observed patterns align with your strategy's assumptions.
How the Indicator Works
Hourly H/L Analysis:
The indicator calculates the highest and lowest prices for each hour in the specified date range.
Each hourly high and low occurrence is recorded and aggregated into a table, with counts displayed for all 24 hours.
Users can toggle the visibility of empty cells (hours with no high/low occurrences) and adjust the table's design to suit their preferences.
Supports both 12-hour (AM/PM) and 24-hour formats.
Weekly H/L DOTW Analysis:
The indicator tracks the highest and lowest prices for each day of the week during the user-specified date range.
Highs and lows are identified for the entire week, and the specific days when they occur are recorded.
Counts for each day are aggregated and displayed in a table, with a "Totals" column summarizing the overall occurrences.
The analysis resets weekly, ensuring accurate tracking of high/low days.
Code Breakdown:
Data Aggregation:
The script uses arrays to store counts of high/low occurrences for both hourly and weekly intervals.
Daily data is fetched using the request.security() function, ensuring consistent results regardless of the chart's timeframe.
Weekly Reset Mechanism:
Weekly high/low values are reset at the start of a new week (Monday) to ensure accurate weekly tracking.
A processing flag ensures that weekly data is counted only once at the end of the week (Sunday).
Table Visualization:
Tables are created using the table.new() function, with customizable styles and positions.
Header rows, data rows, and totals are dynamically populated based on the aggregated data.
User Inputs:
Customization options include text colors, background colors, table positioning, label formatting, and date ranges.
Code Explanation
The script is structured into two main sections:
Hourly H/L Analysis:
This section captures and aggregates high/low occurrences for each hour of the day.
The logic is session-aware, allowing users to define custom session times (e.g., 22-hour futures sessions).
Data is displayed in a clean table format with hourly labels.
Weekly H/L DOTW Analysis:
This section tracks weekly highs and lows by day of the week.
Highs and lows are identified for each week, and counts are updated only once per week to prevent duplication.
A user-friendly table displays the counts for each day of the week, along with totals.
Both sections are completely independent of each other to avoid interference. This ensures that enabling or disabling one section does not impact the functionality of the other.
Customization Options
For Hourly Analysis:
Toggle hourly table visibility.
Choose session start and end times.
Select hourly label format (12-hour or 24-hour).
Customize table appearance (colors, position, text size).
For Weekly DOTW Analysis:
Toggle DOTW table visibility.
Choose which days to include (e.g., hide weekends).
Customize table appearance (colors, position, text size).
Select values format (percentages or occurrences).
Conclusion
The Hourly and Weekly H/L Analysis indicator is a versatile tool designed to empower traders with data-driven insights into intraday and weekly market tendencies. Its highly customizable design ensures compatibility with various trading styles and instruments, making it an essential addition to any trader's toolkit.
With its focus on accuracy, clarity, and customization, this indicator adheres to TradingView's guidelines, ensuring a robust and valuable user experience.
faiz MACDMACD: Moving Average Convergence Divergence
The Moving Average Convergence Divergence (MACD) is a popular momentum indicator used in technical analysis to gauge the strength, direction, and potential reversal points of a trend in a financial asset's price movement. Developed by Gerald Appel in the late 1970s, MACD is particularly favored by traders for its ability to capture both trend-following and momentum aspects of price behavior.
Components of the MACD
The MACD is derived from two exponential moving averages (EMAs) of a security's price:
MACD Line: This is the difference between the 12-day and 26-day EMAs. The shorter 12-day EMA reacts more quickly to price changes, while the 26-day EMA smooths out price fluctuations, offering a longer-term perspective.
Formula: MACD Line = 12-day EMA - 26-day EMA
Signal Line: This is the 1-day EMA of the MACD Line itself. The signal line is used to generate buy and sell signals when it crosses the MACD line.
Formula: Signal Line = 1-day EMA of the MACD Line
MACD Histogram: The histogram represents the difference between the MACD Line and the Signal Line. It is displayed as bars that oscillate above and below a zero line, helping to visualize the convergence or divergence between the two lines.
Formula: Histogram = MACD Line - Signal Line
Interpretation of MACD
The MACD indicator is used to identify potential buy and sell signals based on the following observations:
MACD Line and Signal Line Crossovers:
Bullish Crossover: A buy signal occurs when the MACD Line crosses above the Signal Line. This suggests that the momentum is shifting in favor of the bulls, indicating a potential upward price movement.
Bearish Crossover: A sell signal occurs when the MACD Line crosses below the Signal Line. This suggests a bearish trend may be emerging, signaling a potential downward movement.
Divergence:
Bullish Divergence: Occurs when the price of the asset is making new lows, but the MACD is forming higher lows. This suggests that the downward momentum is weakening and a potential reversal to the upside may be imminent.
Bearish Divergence: Occurs when the price is making new highs, but the MACD is forming lower highs. This suggests that the upward momentum is weakening and a reversal to the downside may occur.
Only use it in timeframe m1, and solely use for XAUUSD pair.
Advisable to use it as a confirmation with other indicator such as
BBMA, SMC, SUPPORT RESISTANCE, SUPPLY AND DEMAND.
how to use :
MA 5 Crossing above MA9, will generate BUY signals
MA 5 Crossing below MA9, will generate SELL signals
Trade at your own SKILLS.
I dont mind people using this script for free.
All I want is just prayer for me and my family success.
Thank You and Have a nice and pleasant day :-)
Universal Ratio Trend Matrix [InvestorUnknown]The Universal Ratio Trend Matrix is designed for trend analysis on asset/asset ratios, supporting up to 40 different assets. Its primary purpose is to help identify which assets are outperforming others within a selection, providing a broad overview of market trends through a matrix of ratios. The indicator automatically expands the matrix based on the number of assets chosen, simplifying the process of comparing multiple assets in terms of performance.
Key features include the ability to choose from a narrow selection of indicators to perform the ratio trend analysis, allowing users to apply well-defined metrics to their comparison.
Drawback: Due to the computational intensity involved in calculating ratios across many assets, the indicator has a limitation related to loading speed. TradingView has time limits for calculations, and for users on the basic (free) plan, this could result in frequent errors due to exceeded time limits. To use the indicator effectively, users with any paid plans should run it on timeframes higher than 8h (the lowest timeframe on which it managed to load with 40 assets), as lower timeframes may not reliably load.
Indicators:
RSI_raw: Simple function to calculate the Relative Strength Index (RSI) of a source (asset price).
RSI_sma: Calculates RSI followed by a Simple Moving Average (SMA).
RSI_ema: Calculates RSI followed by an Exponential Moving Average (EMA).
CCI: Calculates the Commodity Channel Index (CCI).
Fisher: Implements the Fisher Transform to normalize prices.
Utility Functions:
f_remove_exchange_name: Strips the exchange name from asset tickers (e.g., "INDEX:BTCUSD" to "BTCUSD").
f_remove_exchange_name(simple string name) =>
string parts = str.split(name, ":")
string result = array.size(parts) > 1 ? array.get(parts, 1) : name
result
f_get_price: Retrieves the closing price of a given asset ticker using request.security().
f_constant_src: Checks if the source data is constant by comparing multiple consecutive values.
Inputs:
General settings allow users to select the number of tickers for analysis (used_assets) and choose the trend indicator (RSI, CCI, Fisher, etc.).
Table settings customize how trend scores are displayed in terms of text size, header visibility, highlighting options, and top-performing asset identification.
The script includes inputs for up to 40 assets, allowing the user to select various cryptocurrencies (e.g., BTCUSD, ETHUSD, SOLUSD) or other assets for trend analysis.
Price Arrays:
Price values for each asset are stored in variables (price_a1 to price_a40) initialized as na. These prices are updated only for the number of assets specified by the user (used_assets).
Trend scores for each asset are stored in separate arrays
// declare price variables as "na"
var float price_a1 = na, var float price_a2 = na, var float price_a3 = na, var float price_a4 = na, var float price_a5 = na
var float price_a6 = na, var float price_a7 = na, var float price_a8 = na, var float price_a9 = na, var float price_a10 = na
var float price_a11 = na, var float price_a12 = na, var float price_a13 = na, var float price_a14 = na, var float price_a15 = na
var float price_a16 = na, var float price_a17 = na, var float price_a18 = na, var float price_a19 = na, var float price_a20 = na
var float price_a21 = na, var float price_a22 = na, var float price_a23 = na, var float price_a24 = na, var float price_a25 = na
var float price_a26 = na, var float price_a27 = na, var float price_a28 = na, var float price_a29 = na, var float price_a30 = na
var float price_a31 = na, var float price_a32 = na, var float price_a33 = na, var float price_a34 = na, var float price_a35 = na
var float price_a36 = na, var float price_a37 = na, var float price_a38 = na, var float price_a39 = na, var float price_a40 = na
// create "empty" arrays to store trend scores
var a1_array = array.new_int(40, 0), var a2_array = array.new_int(40, 0), var a3_array = array.new_int(40, 0), var a4_array = array.new_int(40, 0)
var a5_array = array.new_int(40, 0), var a6_array = array.new_int(40, 0), var a7_array = array.new_int(40, 0), var a8_array = array.new_int(40, 0)
var a9_array = array.new_int(40, 0), var a10_array = array.new_int(40, 0), var a11_array = array.new_int(40, 0), var a12_array = array.new_int(40, 0)
var a13_array = array.new_int(40, 0), var a14_array = array.new_int(40, 0), var a15_array = array.new_int(40, 0), var a16_array = array.new_int(40, 0)
var a17_array = array.new_int(40, 0), var a18_array = array.new_int(40, 0), var a19_array = array.new_int(40, 0), var a20_array = array.new_int(40, 0)
var a21_array = array.new_int(40, 0), var a22_array = array.new_int(40, 0), var a23_array = array.new_int(40, 0), var a24_array = array.new_int(40, 0)
var a25_array = array.new_int(40, 0), var a26_array = array.new_int(40, 0), var a27_array = array.new_int(40, 0), var a28_array = array.new_int(40, 0)
var a29_array = array.new_int(40, 0), var a30_array = array.new_int(40, 0), var a31_array = array.new_int(40, 0), var a32_array = array.new_int(40, 0)
var a33_array = array.new_int(40, 0), var a34_array = array.new_int(40, 0), var a35_array = array.new_int(40, 0), var a36_array = array.new_int(40, 0)
var a37_array = array.new_int(40, 0), var a38_array = array.new_int(40, 0), var a39_array = array.new_int(40, 0), var a40_array = array.new_int(40, 0)
f_get_price(simple string ticker) =>
request.security(ticker, "", close)
// Prices for each USED asset
f_get_asset_price(asset_number, ticker) =>
if (used_assets >= asset_number)
f_get_price(ticker)
else
na
// overwrite empty variables with the prices if "used_assets" is greater or equal to the asset number
if barstate.isconfirmed // use barstate.isconfirmed to avoid "na prices" and calculation errors that result in empty cells in the table
price_a1 := f_get_asset_price(1, asset1), price_a2 := f_get_asset_price(2, asset2), price_a3 := f_get_asset_price(3, asset3), price_a4 := f_get_asset_price(4, asset4)
price_a5 := f_get_asset_price(5, asset5), price_a6 := f_get_asset_price(6, asset6), price_a7 := f_get_asset_price(7, asset7), price_a8 := f_get_asset_price(8, asset8)
price_a9 := f_get_asset_price(9, asset9), price_a10 := f_get_asset_price(10, asset10), price_a11 := f_get_asset_price(11, asset11), price_a12 := f_get_asset_price(12, asset12)
price_a13 := f_get_asset_price(13, asset13), price_a14 := f_get_asset_price(14, asset14), price_a15 := f_get_asset_price(15, asset15), price_a16 := f_get_asset_price(16, asset16)
price_a17 := f_get_asset_price(17, asset17), price_a18 := f_get_asset_price(18, asset18), price_a19 := f_get_asset_price(19, asset19), price_a20 := f_get_asset_price(20, asset20)
price_a21 := f_get_asset_price(21, asset21), price_a22 := f_get_asset_price(22, asset22), price_a23 := f_get_asset_price(23, asset23), price_a24 := f_get_asset_price(24, asset24)
price_a25 := f_get_asset_price(25, asset25), price_a26 := f_get_asset_price(26, asset26), price_a27 := f_get_asset_price(27, asset27), price_a28 := f_get_asset_price(28, asset28)
price_a29 := f_get_asset_price(29, asset29), price_a30 := f_get_asset_price(30, asset30), price_a31 := f_get_asset_price(31, asset31), price_a32 := f_get_asset_price(32, asset32)
price_a33 := f_get_asset_price(33, asset33), price_a34 := f_get_asset_price(34, asset34), price_a35 := f_get_asset_price(35, asset35), price_a36 := f_get_asset_price(36, asset36)
price_a37 := f_get_asset_price(37, asset37), price_a38 := f_get_asset_price(38, asset38), price_a39 := f_get_asset_price(39, asset39), price_a40 := f_get_asset_price(40, asset40)
Universal Indicator Calculation (f_calc_score):
This function allows switching between different trend indicators (RSI, CCI, Fisher) for flexibility.
It uses a switch-case structure to calculate the indicator score, where a positive trend is denoted by 1 and a negative trend by 0. Each indicator has its own logic to determine whether the asset is trending up or down.
// use switch to allow "universality" in indicator selection
f_calc_score(source, trend_indicator, int_1, int_2) =>
int score = na
if (not f_constant_src(source)) and source > 0.0 // Skip if you are using the same assets for ratio (for example BTC/BTC)
x = switch trend_indicator
"RSI (Raw)" => RSI_raw(source, int_1)
"RSI (SMA)" => RSI_sma(source, int_1, int_2)
"RSI (EMA)" => RSI_ema(source, int_1, int_2)
"CCI" => CCI(source, int_1)
"Fisher" => Fisher(source, int_1)
y = switch trend_indicator
"RSI (Raw)" => x > 50 ? 1 : 0
"RSI (SMA)" => x > 50 ? 1 : 0
"RSI (EMA)" => x > 50 ? 1 : 0
"CCI" => x > 0 ? 1 : 0
"Fisher" => x > x ? 1 : 0
score := y
else
score := 0
score
Array Setting Function (f_array_set):
This function populates an array with scores calculated for each asset based on a base price (p_base) divided by the prices of the individual assets.
It processes multiple assets (up to 40), calling the f_calc_score function for each.
// function to set values into the arrays
f_array_set(a_array, p_base) =>
array.set(a_array, 0, f_calc_score(p_base / price_a1, trend_indicator, int_1, int_2))
array.set(a_array, 1, f_calc_score(p_base / price_a2, trend_indicator, int_1, int_2))
array.set(a_array, 2, f_calc_score(p_base / price_a3, trend_indicator, int_1, int_2))
array.set(a_array, 3, f_calc_score(p_base / price_a4, trend_indicator, int_1, int_2))
array.set(a_array, 4, f_calc_score(p_base / price_a5, trend_indicator, int_1, int_2))
array.set(a_array, 5, f_calc_score(p_base / price_a6, trend_indicator, int_1, int_2))
array.set(a_array, 6, f_calc_score(p_base / price_a7, trend_indicator, int_1, int_2))
array.set(a_array, 7, f_calc_score(p_base / price_a8, trend_indicator, int_1, int_2))
array.set(a_array, 8, f_calc_score(p_base / price_a9, trend_indicator, int_1, int_2))
array.set(a_array, 9, f_calc_score(p_base / price_a10, trend_indicator, int_1, int_2))
array.set(a_array, 10, f_calc_score(p_base / price_a11, trend_indicator, int_1, int_2))
array.set(a_array, 11, f_calc_score(p_base / price_a12, trend_indicator, int_1, int_2))
array.set(a_array, 12, f_calc_score(p_base / price_a13, trend_indicator, int_1, int_2))
array.set(a_array, 13, f_calc_score(p_base / price_a14, trend_indicator, int_1, int_2))
array.set(a_array, 14, f_calc_score(p_base / price_a15, trend_indicator, int_1, int_2))
array.set(a_array, 15, f_calc_score(p_base / price_a16, trend_indicator, int_1, int_2))
array.set(a_array, 16, f_calc_score(p_base / price_a17, trend_indicator, int_1, int_2))
array.set(a_array, 17, f_calc_score(p_base / price_a18, trend_indicator, int_1, int_2))
array.set(a_array, 18, f_calc_score(p_base / price_a19, trend_indicator, int_1, int_2))
array.set(a_array, 19, f_calc_score(p_base / price_a20, trend_indicator, int_1, int_2))
array.set(a_array, 20, f_calc_score(p_base / price_a21, trend_indicator, int_1, int_2))
array.set(a_array, 21, f_calc_score(p_base / price_a22, trend_indicator, int_1, int_2))
array.set(a_array, 22, f_calc_score(p_base / price_a23, trend_indicator, int_1, int_2))
array.set(a_array, 23, f_calc_score(p_base / price_a24, trend_indicator, int_1, int_2))
array.set(a_array, 24, f_calc_score(p_base / price_a25, trend_indicator, int_1, int_2))
array.set(a_array, 25, f_calc_score(p_base / price_a26, trend_indicator, int_1, int_2))
array.set(a_array, 26, f_calc_score(p_base / price_a27, trend_indicator, int_1, int_2))
array.set(a_array, 27, f_calc_score(p_base / price_a28, trend_indicator, int_1, int_2))
array.set(a_array, 28, f_calc_score(p_base / price_a29, trend_indicator, int_1, int_2))
array.set(a_array, 29, f_calc_score(p_base / price_a30, trend_indicator, int_1, int_2))
array.set(a_array, 30, f_calc_score(p_base / price_a31, trend_indicator, int_1, int_2))
array.set(a_array, 31, f_calc_score(p_base / price_a32, trend_indicator, int_1, int_2))
array.set(a_array, 32, f_calc_score(p_base / price_a33, trend_indicator, int_1, int_2))
array.set(a_array, 33, f_calc_score(p_base / price_a34, trend_indicator, int_1, int_2))
array.set(a_array, 34, f_calc_score(p_base / price_a35, trend_indicator, int_1, int_2))
array.set(a_array, 35, f_calc_score(p_base / price_a36, trend_indicator, int_1, int_2))
array.set(a_array, 36, f_calc_score(p_base / price_a37, trend_indicator, int_1, int_2))
array.set(a_array, 37, f_calc_score(p_base / price_a38, trend_indicator, int_1, int_2))
array.set(a_array, 38, f_calc_score(p_base / price_a39, trend_indicator, int_1, int_2))
array.set(a_array, 39, f_calc_score(p_base / price_a40, trend_indicator, int_1, int_2))
a_array
Conditional Array Setting (f_arrayset):
This function checks if the number of used assets is greater than or equal to a specified number before populating the arrays.
// only set values into arrays for USED assets
f_arrayset(asset_number, a_array, p_base) =>
if (used_assets >= asset_number)
f_array_set(a_array, p_base)
else
na
Main Logic
The main logic initializes arrays to store scores for each asset. Each array corresponds to one asset's performance score.
Setting Trend Values: The code calls f_arrayset for each asset, populating the respective arrays with calculated scores based on the asset prices.
Combining Arrays: A combined_array is created to hold all the scores from individual asset arrays. This array facilitates further analysis, allowing for an overview of the performance scores of all assets at once.
// create a combined array (work-around since pinescript doesn't support having array of arrays)
var combined_array = array.new_int(40 * 40, 0)
if barstate.islast
for i = 0 to 39
array.set(combined_array, i, array.get(a1_array, i))
array.set(combined_array, i + (40 * 1), array.get(a2_array, i))
array.set(combined_array, i + (40 * 2), array.get(a3_array, i))
array.set(combined_array, i + (40 * 3), array.get(a4_array, i))
array.set(combined_array, i + (40 * 4), array.get(a5_array, i))
array.set(combined_array, i + (40 * 5), array.get(a6_array, i))
array.set(combined_array, i + (40 * 6), array.get(a7_array, i))
array.set(combined_array, i + (40 * 7), array.get(a8_array, i))
array.set(combined_array, i + (40 * 8), array.get(a9_array, i))
array.set(combined_array, i + (40 * 9), array.get(a10_array, i))
array.set(combined_array, i + (40 * 10), array.get(a11_array, i))
array.set(combined_array, i + (40 * 11), array.get(a12_array, i))
array.set(combined_array, i + (40 * 12), array.get(a13_array, i))
array.set(combined_array, i + (40 * 13), array.get(a14_array, i))
array.set(combined_array, i + (40 * 14), array.get(a15_array, i))
array.set(combined_array, i + (40 * 15), array.get(a16_array, i))
array.set(combined_array, i + (40 * 16), array.get(a17_array, i))
array.set(combined_array, i + (40 * 17), array.get(a18_array, i))
array.set(combined_array, i + (40 * 18), array.get(a19_array, i))
array.set(combined_array, i + (40 * 19), array.get(a20_array, i))
array.set(combined_array, i + (40 * 20), array.get(a21_array, i))
array.set(combined_array, i + (40 * 21), array.get(a22_array, i))
array.set(combined_array, i + (40 * 22), array.get(a23_array, i))
array.set(combined_array, i + (40 * 23), array.get(a24_array, i))
array.set(combined_array, i + (40 * 24), array.get(a25_array, i))
array.set(combined_array, i + (40 * 25), array.get(a26_array, i))
array.set(combined_array, i + (40 * 26), array.get(a27_array, i))
array.set(combined_array, i + (40 * 27), array.get(a28_array, i))
array.set(combined_array, i + (40 * 28), array.get(a29_array, i))
array.set(combined_array, i + (40 * 29), array.get(a30_array, i))
array.set(combined_array, i + (40 * 30), array.get(a31_array, i))
array.set(combined_array, i + (40 * 31), array.get(a32_array, i))
array.set(combined_array, i + (40 * 32), array.get(a33_array, i))
array.set(combined_array, i + (40 * 33), array.get(a34_array, i))
array.set(combined_array, i + (40 * 34), array.get(a35_array, i))
array.set(combined_array, i + (40 * 35), array.get(a36_array, i))
array.set(combined_array, i + (40 * 36), array.get(a37_array, i))
array.set(combined_array, i + (40 * 37), array.get(a38_array, i))
array.set(combined_array, i + (40 * 38), array.get(a39_array, i))
array.set(combined_array, i + (40 * 39), array.get(a40_array, i))
Calculating Sums: A separate array_sums is created to store the total score for each asset by summing the values of their respective score arrays. This allows for easy comparison of overall performance.
Ranking Assets: The final part of the code ranks the assets based on their total scores stored in array_sums. It assigns a rank to each asset, where the asset with the highest score receives the highest rank.
// create array for asset RANK based on array.sum
var ranks = array.new_int(used_assets, 0)
// for loop that calculates the rank of each asset
if barstate.islast
for i = 0 to (used_assets - 1)
int rank = 1
for x = 0 to (used_assets - 1)
if i != x
if array.get(array_sums, i) < array.get(array_sums, x)
rank := rank + 1
array.set(ranks, i, rank)
Dynamic Table Creation
Initialization: The table is initialized with a base structure that includes headers for asset names, scores, and ranks. The headers are set to remain constant, ensuring clarity for users as they interpret the displayed data.
Data Population: As scores are calculated for each asset, the corresponding values are dynamically inserted into the table. This is achieved through a loop that iterates over the scores and ranks stored in the combined_array and array_sums, respectively.
Automatic Extending Mechanism
Variable Asset Count: The code checks the number of assets defined by the user. Instead of hardcoding the number of rows in the table, it uses a variable to determine the extent of the data that needs to be displayed. This allows the table to expand or contract based on the number of assets being analyzed.
Dynamic Row Generation: Within the loop that populates the table, the code appends new rows for each asset based on the current asset count. The structure of each row includes the asset name, its score, and its rank, ensuring that the table remains consistent regardless of how many assets are involved.
// Automatically extending table based on the number of used assets
var table table = table.new(position.bottom_center, 50, 50, color.new(color.black, 100), color.white, 3, color.white, 1)
if barstate.islast
if not hide_head
table.cell(table, 0, 0, "Universal Ratio Trend Matrix", text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.merge_cells(table, 0, 0, used_assets + 3, 0)
if not hide_inps
table.cell(table, 0, 1,
text = "Inputs: You are using " + str.tostring(trend_indicator) + ", which takes: " + str.tostring(f_get_input(trend_indicator)),
text_color = color.white, text_size = fontSize), table.merge_cells(table, 0, 1, used_assets + 3, 1)
table.cell(table, 0, 2, "Assets", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, 2, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.cell(table, 0, x + 3, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = f_asset_col(array.get(ranks, x)), text_size = fontSize)
for r = 0 to (used_assets - 1)
for c = 0 to (used_assets - 1)
table.cell(table, c + 1, r + 3, text = str.tostring(array.get(combined_array, c + (r * 40))),
text_color = hl_type == "Text" ? f_get_col(array.get(combined_array, c + (r * 40))) : color.white, text_size = fontSize,
bgcolor = hl_type == "Background" ? f_get_col(array.get(combined_array, c + (r * 40))) : na)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, x + 3, "", bgcolor = #010c3b)
table.cell(table, used_assets + 1, 2, "", bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 1, x + 3, "==>", text_color = color.white)
table.cell(table, used_assets + 2, 2, "SUM", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
table.cell(table, used_assets + 3, 2, "RANK", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 2, x + 3,
text = str.tostring(array.get(array_sums, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_sum(array.get(array_sums, x), array.get(ranks, x)))
table.cell(table, used_assets + 3, x + 3,
text = str.tostring(array.get(ranks, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_rank(array.get(ranks, x)))






















