WAP Maverick - (Dual EMA Smoothed VWAP) - [mutantdog]Short Version:
This here is my take on the popular VWAP indicator with several novel features including:
Dual EMA smoothing.
Arithmetic and Harmonic Mean plots.
Custom Anchor feat. Intraday Session Sizes.
2 Pairs of Bands.
Side Input for Connection to other Indicator.
This can be used 'out of the box' as a replacement VWAP, benefitting from smoother transitions and easy-to-use custom alerts.
By design however, this is intended to be a highly customisable alternative with many adjustable parameters and a pseudo-modular input system to connect with another indicator. Well suited for the tweakers around here and those who like to get a little more creative.
I made this primarily for crypto although it should work for other markets. Default settings are best suited to 15m timeframe - the anchor of 1 week is ideal for crypto which often follows a cyclical nature from Monday through Sunday. In 15m, the default ema length of 21 means that the wap comes to match a standard vwap towards the end of Monday. If using higher chart timeframes, i recommend decreasing the ema length to closely match this principle (suggested: for 1h chart, try length = 8; for 4h chart, length = 2 or 3 should suffice).
Note: the use of harmonic mean calculations will cause problems on any data source incorporating both positive and negative values, it may also return unusable results on extremely low-value charts (eg: low-sat coins in /btc pairs).
Long version:
The development of this project was one driven more by experimentation than a specific end-goal, however i have tried to fine-tune everything into a coherent usable end-product. With that in mind then, this walkthrough will follow something of a development chronology as i dissect the various functions.
DUAL-EMA SMOOTHING
At its core this is based upon / adapted from the standard vwap indicator provided by TradingView although I have modified and changed most of it. The first mod is the dual ema smoothing. Rather than simply applying an ema to the output of the standard vwap function, instead i have incorporated the ema in a manner analogous to the way smas are used within a standard vwma. Sticking for now with the arithmetic mean, the basic vwap calculation is simply sum(source * volume) / sum(volume) across the anchored period. In this case i have simply applied an ema to each of the numerator and denominator values resulting in ema(sum(source * volume)) / ema(sum(volume)) with the ema length independent of the anchor. This results in smoother (albeit slower) transitions than the aforementioned post-vwap method. Furthermore in the case when anchor period is equal to current timeframe, the result is a basic volume-weighted ema.
The example below shows a standard vwap (1week anchor) in blue, a 21-ema applied to the vwap in purple and a dual-21-ema smoothed wap in gold. Notably both ema types come to effectively resemble the standard vwap after around 24 hours into the new anchor session but how they behave in the meantime is very different. The dual-ema transitions quite gradually while the post-vwap ema immediately sets about trying to catch up. Incidentally. a similar and slower variation of the dual-ema can be achieved with dual-rma although i have not included it in this indicator, attempted analogues using sma or wma were far less useful however.
STANDARD DEVIATION AND BANDS
With this updated calculation, a corresponding update to the standard deviation is also required. The vwap has its own anchored volume-weighted st.dev but this cannot be used in combination with the ema smoothing so instead it has been recalculated appropriately. There are two pairs of bands with separate multipliers (stepped to 0.1x) and in both cases high and low bands can be activated or deactivated individually. An example usage for this would be to create different upper and lower bands for profit and stoploss targets. Alerts can be set easily for different crossing conditions, more on this later.
Alongside the bands, i have also added the option to shift ('Deviate') the entire indicator up or down according to a multiple of the corrected st.dev value. This has many potential uses, for example if we want to bias our analysis in one direction it may be useful to move the wap in the opposite. Or if the asset is trading within a narrow range and we are waiting on a breakout, we could shift to the desired level and set alerts accordingly. The 'Deviate' parameter applies to the entire indicator including the bands which will remain centred on the main WAP.
CUSTOM (W)ANCHOR
Ever thought about using a vwap with anchor periods smaller than a day? Here you can do just that. I've removed the Earnings/Dividends/Splits options from the basic vwap and added an 'Intraday' option instead. When selected, a custom anchor length can be created as a multiple of minutes (default steps of 60 mins but can input any value from 0 - 1440). While this may not seem at first like a useful feature for anyone except hi-speed scalpers, this actually offers more interesting potential than it appears.
When set to 0 minutes the current timeframe is always used, turning this into the basic volume-weighted ema mentioned earlier. When using other low time frames the anchor can act as a pre-ema filter creating a stepped effect akin to an adaptive MA. Used in combination with the bands, the result is a kind of volume-weighted adaptive exponential bollinger band; if such a thing does not already exist then this is where you create it. Alternatively, by combining two instances you may find potential interesting crosses between an intraday wap and a standard timeframe wap. Below is an example set to intraday with 480 mins, 2x st.dev bands and ema length 21. Included for comparison in purple is a standard 21 ema.
I'm sure there are many potential uses to be found here, so be creative and please share anything you come up with in the comments.
ARITHMETIC AND HARMONIC MEAN CALCULATIONS
The standard vwap uses the arithmetic mean in its calculation. Indeed, most mean calculations tend to be arithmetic: sma being the most widely used example. When volume weighting is involved though this can lead to a slight bias in favour of upward moves over downward. While the effect of this is minor, over longer anchor periods it can become increasingly significant. The harmonic mean, on the other hand, has the opposite effect which results in a value that is always lower than the arithmetic mean. By viewing both arithmetic and harmonic waps together, the extent to which they diverge from each other can be used as a visual reference of how much price has changed during the anchored period.
Furthermore, the harmonic mean may actually be the more appropriate one to use during downtrends or bearish periods, in principle at least. Consider that a short trade is functionally the same as a long trade on the inverse of the pair (eg: selling BTC/USD is the same as buying USD/BTC). With the harmonic mean being an inverse of the arithmetic then, it makes sense to use it instead. To illustrate this below is a snapshot of LUNA/USDT on the left with its inverse 1/(LUNA/USDT) = USDT/LUNA on the right. On both charts is a wap with identical settings, note the resistance on the left and its corresponding support on the right. It should be easy from this to see that the lower harmonic wap on the left corresponds to the upper arithmetic wap on the right. Thus, it would appear that the harmonic mean should be used in a downtrend. In principle, at least...
In reality though, it is not quite so black and white. Rarely are these values exact in their predictions and the sort of range one should allow for inaccuracies will likely be greater than the difference between these two means. Furthermore, the ema smoothing has already introduced some lag and thus additional inaccuracies. Nevertheless, the symmetry warrants its inclusion.
SIDE INPUT & ALERTS
Finally we move on to the pseudo-modular component here. While TradingView allows some interoperability between indicators, it is limited to just one connection. Any attempt to use multiple source inputs will remove this functionality completely. The workaround here is to instead use custom 'string' input menus for additional sources, preserving this function in the sole 'source' input. In this case, since the wap itself is dependant only price and volume, i have repurposed the full 'source' into the second 'side' input. This allows for a separate indicator to interact with this one that can be used for triggering alerts. You could even use another instance of this one (there is a hidden wap:mid plot intended for this use which is the midpoint between both means). Note that deleting a connected indicator may result in the deletion of those connected to it.
Preset alertconditions are available for crossings of the side input above and below the main wap, alongside several customisable alerts with corresponding visual markers based upon selectable conditions. Alerts for band crossings apply only to those that are active and only crossings of the type specified within the 'crosses' subsection of the indicator settings. The included options make it easy to create buy alerts specific to certain bands with sell alerts specific to other bands. The chart below shows two instances with differing anchor periods, both are connected with buy and sell alerts enabled for visible bands.
Okay... So that just about covers it here, i think. As mentioned earlier this is the product of various experiments while i have been learning my way around PineScript. Some of those experiments have been branched off from this in order to not over-clutter it with functions. The pseudo-modular design and the 'side' input are the result of an attempt to create a connective framework across various projects. Even on its own though, this should offer plenty of tweaking potential for anyone who likes to venture away from the usual standards, all the while still retaining its core purpose as a traders tool.
Thanks for checking this out. I look forward to any feedback below.
Cari dalam skrip untuk "harmonic"
eHarmonicpatternsLibrary "eHarmonicpatterns"
Library provides an alternative method to scan harmonic patterns. This is helpful in reducing iterations
scan_xab(bcdRatio, err_min, err_max, patternArray) Checks if bcd ratio is in range of any harmonic pattern
Parameters:
bcdRatio : AB/XA ratio
err_min : minimum error threshold
err_max : maximum error threshold
patternArray : Array containing pattern check flags. Checks are made only if flags are true. Upon check flgs are overwritten.
scan_abc_axc(abcRatio, axcRatio, err_min, err_max, patternArray) Checks if abc or axc ratio is in range of any harmonic pattern
Parameters:
abcRatio : BC/AB ratio
axcRatio : XC/AX ratio
err_min : minimum error threshold
err_max : maximum error threshold
patternArray : Array containing pattern check flags. Checks are made only if flags are true. Upon check flgs are overwritten.
scan_bcd(bcdRatio, err_min, err_max, patternArray) Checks if bcd ratio is in range of any harmonic pattern
Parameters:
bcdRatio : CD/BC ratio
err_min : minimum error threshold
err_max : maximum error threshold
patternArray : Array containing pattern check flags. Checks are made only if flags are true. Upon check flgs are overwritten.
scan_xad_xcd(xadRatio, xcdRatio, err_min, err_max, patternArray) Checks if xad or xcd ratio is in range of any harmonic pattern
Parameters:
xadRatio : AD/XA ratio
xcdRatio : CD/XC ratio
err_min : minimum error threshold
err_max : maximum error threshold
patternArray : Array containing pattern check flags. Checks are made only if flags are true. Upon check flgs are overwritten.
isHarmonicPattern(x, a, c, c, d, flags, errorPercent) Checks for harmonic patterns
Parameters:
x : X coordinate value
a : A coordinate value
c : B coordinate value
c : C coordinate value
d : D coordinate value
flags : flags to check patterns. Send empty array to enable all
errorPercent : Error threshold
Returns: Array of boolean values which says whether valid pattern exist and array of corresponding pattern names
isHarmonicProjection(x, a, c, c, flags, errorPercent) Checks for harmonic pattern projection
Parameters:
x : X coordinate value
a : A coordinate value
c : B coordinate value
c : C coordinate value
flags : flags to check patterns. Send empty array to enable all
errorPercent : Error threshold
Returns: Array of boolean values which says whether valid pattern exist and array of corresponding pattern names
Signal_Data_2021_09_09__2021_11_18Library "Signal_Data_2021_09_09__2021_11_18"
Functions to support my timing signals system
import_start_time(harmonic) get the start time for each harmonic signal
Parameters:
harmonic : is an integer identifying the harmonic
Returns: the starting timestamp of the harmonic data
import_signal(index, harmonic) access point for pre-processed data imported here by copy paste
Parameters:
index : is the current data index, use 0 to initialize
harmonic : is the data set to index, use 0 to initialize
Returns: the data from the indicated harmonic array starting at index, and the starting timestamp of that data
AB=CD Pattern Educational (Source Code)This indicator was intended as educational purpose only for AB=CD Patterns.
AB=CD Patterns were explained and modernized starting from The Harmonic Trader and Harmonic Trading: Volume One until Volume Three written by Scott M Carney.
Indikator ini bertujuan sebagai pendidikan sahaja untuk AB=CD Pattern.
AB=CD Patterns telah diterangkan dan dimodenkan bermula dari The Harmonic Trader dan Harmonic Trading: Volume One hingga Volume Three ditulis oleh Scott M Carney.
Indicator features :
1. List AB=CD patterns including ratio and reference page.
2. For desktop display only, not for mobile.
Kemampuan indikator :
1. Senarai AB=CD pattern termasuk ratio and rujukan muka surat.
2. Untuk paparan desktop sahaja, bukan untuk mobile.
FAQ
1. Credits / Kredit
Scott M Carney
Scott M Carney, Harmonic Trading: Volume One until Volume Three
2. Pattern and Chapter involved / Pattern dan Bab terlibat
Ideal AB=CD - The Harmonic Trader - Page 118 & 129
Standard AB=CD - The Harmonic Trader - Page 116, 117, 127 & 128, Harmonic Trading: Volume One - Page 42, 51, Harmonic Trading: Volume Three - Page 76 & 78
Alternate AB=CD - The Harmonic Trader - Page 142 & 145, Harmonic Trading: Volume One - Page 62, 63
Perfect AB=CD - Harmonic Trading: Volume One - Page 64 & 66
Reciprocal AB=CD - Harmonic Trading: Volume Two - Page 74 & 76
AB=CD with ab=cd - The Harmonic Trader - Page 149 & 153
AB=CD with BC Layering Technique - Harmonic Trading: Volume Three - Page 81 & 84
3. Code Usage / Penggunaan Kod
Free to use for personal usage but credits are most welcomed especially for credits to Scott M Carney.
Bebas untuk kegunaan peribadi tetapi kredit adalah amat dialu-alukan terutamanya kredit kepada Scott M Carney.
Bullish / Bearish Ideal AB=CD
Bullish / Bearish Standard AB=CD
Bullish / Bearish Alternate AB=CD
Bullish / Bearish Perfect AB=CD
Bullish / Bearish Reciprocal AB=CD (Additional value for reciprocal retracement 3.140 and 3.618)
Bullish / Bearish AB=CD with ab=cd
Bullish / Bearish AB=CD with BC Layering Technique
Bat Action Magnet Move BAMM Theory Educational (Source Code)This indicator was intended as educational purpose only for BAMM, which also known as Bat Action Magnet Move.
Indikator ini bertujuan sebagai pendidikan sahaja untuk BAMM, juga dikenali sebagai Bat Action Magnet Move.
BAMM is usually used for Harmonic Patterns such as XAB=CD (Bat Pattern) and AB=CD (0.5 AB=CD Pattern) - Chapter 5.
BAMM also can be used for other Harmonic Pattern with the help of RSI Divergence, hence become RSI BAMM - Chapter 6.
BAMM kebiasaanya digunakan untuk Harmonic Pattern seperti XAB=CD (Bat Pattern) dan AB=CD (0.5 AB=CD Pattern) - Chapter 5.
BAMM juga boleh digunakan untuk Harmonic Pattern lain dengan bantuan RSI Divergence, menjadi RSI BAMM - Chapter 6.
FAQ
1. Credits / Kredit
Scott M Carney,
Scott M Carney, Harmonic Trading: Volume Two (Chapter 5 & Chapter 6)
Bullish XAB=CD BAMM Breakout - Page 144
Bearish XAB=CD BAMM Breakdown - Page 148
Bullish AB=CD BAMM Breakout - Page 153
Bearish AB=CD BAMM Breakdown - Page 156
2. Code Usage / Penggunaan Kod
Free to use for personal usage but credits are most welcomed especially for credits to Scott M Carney.
Bebas untuk kegunaan peribadi tetapi kredit adalah amat dialu-alukan terutamanya kredit kepada Scott M Carney.
2.0 AB=CD Pattern
XAB=CD Bat Pattern
FIR Trend Filter (Sawtooth and Square Waves)Experimental script!
Using sigma approximation with Sine wave to form Sawtooth and Square waves, for a Finite Impulse Response filter.
Higher harmonics make the sawtooth or square wave more "exact", at the expense of more computation. It also makes the filter more "sensitive". I wouldn't exceed 100, but you're the boss.
The default number of harmonics is 20. The length is 20, too. Why? Because we are currently in 2020. Silly, I know.
Feel free to play around with the settings and tune it to your liking.
How to use it is pretty straight forward: Green is trend-up and red is trend-down.
Credit to alexgrover for the template.
T2-%Use a superposition of 30 avarages to stress-out trend changes (points in time where all possible frequencies that create the movment change their phase from prositive to negetive or the opposite). The indicator has one paramater that should be adjusted: 'os'.
By defult the 30 avarages that are tested range from 7 to 63 in gaps of 2. increasing the 'os' parameter moves the ranges by multiplications of 65. therefore if you add 5 indicators ontop of eachother, each scaled to left and set the os of each to another value (0,1,2,3,4) you will have a full spectum of avarages ranging from 7 to 325 in gaps of 2.
Gann Octave Pro - Angles & Time Cycles 🎯 Gann Octave Pro - Angles & Time Cycles
## Complete Gann Trading System - Price, Angles & Time in One Indicator
A professional-grade Gann analysis tool combining **Octave Price Levels**, **Gann Angles (1x1, 2x1, 1x2)**, and **Advanced Time Cycle Projections**. Perfect for traders seeking precision market timing through geometric confluence.
---
## 🌟 Key Features
### 📐 Octave Price Levels
- **5 Key Levels**: 0%, 25%, 50%, 75%, 100%
- **Color-Coded**: Green (support) → Blue (50% pivot) → Red (resistance) → Black (boundaries)
- **Dynamic Updates**: Auto-adjusts to swing structure
- **Trading Edge**: 50% level is the most powerful reversal zone
### 📏 Gann Angles
- **1x1 Angle** (Black) - Natural 45° trend line
- **2x1 Angle** (Red) - Steep acceleration zone
- **1x2 Angle** (Red) - Gradual support/resistance
- **Customizable Extension**: Fixed bars or % of swing length
### ⏰ Advanced Time Cycles
**Three Calculation Methods:**
1. **Angle-Level Confluence** ⭐ (Recommended)
- Calculates intersections of Gann angles with octave levels
- Most sophisticated timing system
- Based on price-time geometry
2. **Swing Duration** - Uses actual swing bar length
3. **Harmonic (Swing/8)** - Classic Gann harmonic division
**Cycle Visualization:**
- **Full Cycles** (Purple, solid) - Major turning points, labeled "◆ FC1 (176 bars) "
- **Sub-Cycles** (Blue, dotted) - Minor pivots, labeled "S1 "
- **Mid-Cycles** (Orange, dashed) - Half-cycle inflection points
- **Past Display**: Shows 4 complete past cycles for validation
- **Future Projection**: Projects 8 future cycles for anticipation
---
## 🎯 How to Use
### Quick Start
1. Apply to chart (works all timeframes/instruments)
2. Select period: Default 44 bars (adjust based on timeframe)
3. Choose cycle method: "Angle-Level Confluence" for best results
4. Observe past cycles to validate timing accuracy
### Trading Strategies
**Triple Confluence Setup** (Highest Probability)
- Price at octave level (especially 50%)
- Price touches Gann angle (1x1 most reliable)
- Time cycle arrives (full cycle preferred)
- **Entry**: On confluence | **Stop**: Below/above octave level | **Target**: Next level
**Cycle Anticipation**
- Enter 1-2 bars before cycle line if price at octave level
- Exit at next cycle or target octave level
- **Edge**: Anticipate cycles instead of reacting
**Angle Breakout + Cycle**
- Price breaks 1x1 angle + next cycle within 20 bars
- Hold through cycle, exit at 2x1 angle or next major level
---
## ⚙️ Customization
### Period Selection (88-Based)
11 harmonic options: 3, 6, 11, 22, **44**, 88, 176, 352, 704, 1408, 2816 bars
- **Intraday** (15m-1h): Period 3-4
- **Swing Trading** (4h-Daily): Period 4-5
- **Position Trading** (Daily-Weekly): Period 5-6
### Visual Controls
- **Colors**: Independent for all elements
- **Line Widths**: Separate controls (1-5) for levels, angles, cycles
- **Label Size**: Tiny/Small/Normal/Large (unified)
- **Label Position**: Top/Middle/Bottom
- **Show/Hide**: Toggle any component
### Alerts
- 50% octave level breakouts
- Customizable messages
---
## 💡 Pro Tips
1. **Validate First**: Observe 2-3 past cycles before trading
2. **Adjust to Volatility**: High volatility = lower period (22-44), Low = higher (88-176)
3. **Multiple Timeframes**: Apply on different timeframes for confirmation
4. **Respect 50% Level**: Most powerful reversal zone in Gann theory
5. **Focus on Full Cycles**: Highest probability setups (◆ FC markers)
6. **Combine with Price Action**: Indicator shows WHERE/WHEN, price action shows HOW
---
## 🚀 What Makes It Unique
✅ **Intelligent Confluence Cycles** - Unique angle-level intersection calculation
✅ **Historical Validation** - See past cycles to trust future projections
✅ **Professional Design** - Color-coded hierarchy, clean labels, no clutter
✅ **Complete Automation** - Everything updates in real-time
✅ **Three-Dimensional Analysis** - Price + Angles + Time = complete picture
---
## 📊 Best Markets
- Stock indices (S&P 500, NASDAQ, Dow)
- Forex majors (EUR/USD, GBP/USD, USD/JPY)
- Commodities (Gold, Silver, Oil)
- Crypto (BTC, ETH)
- Liquid stocks
✅ Complete Gann system (price + angles + time)
✅ 3 time cycle methods
✅ Auto swing detection
✅ 4 past + 8 future cycle projections
✅ Professional visualization
✅ Extensive customization
✅ Real-time alerts
✅ Works all markets/timeframes
---
## ⚠️ Disclaimer
This indicator is for educational purposes and applies W.D. Gann methodology principles. Not financial advice. Always use proper risk management, position sizing, and stop losses. Practice on paper before live trading. Past performance doesn't guarantee future results.
---
**The market moves in patterns of price and time. This indicator helps you see them.**
Trade with geometry. Trade with time. Trade with confidence.
AB=CD Fibonacci Strategy (One Trade at a Time)
AB=CD Fibonacci Strategy - Harmonic Pattern Trading Bot
Description
An automated trading strategy that identifies and trades the classic AB=CD harmonic pattern, one of the most reliable geometric price formations in technical analysis. This strategy detects perfectly proportioned Fibonacci retracement setups and executes trades with precise risk-reward management.
How It Works
The indicator scans for the AB=CD pattern structure:
Leg AB: Initial swing from pivot point A to pivot point B
Leg BC: Retracement to point C (customizable Fibonacci levels)
Leg CD: Mirror projection equal to the AB leg length
When price touches point D, the strategy automatically enters a position with predefined take-profit and stop-loss levels based on your risk-reward ratio.
Key Features
One Trade at a Time: Ensures disciplined position management by allowing only one active trade per pattern
Customizable Fibonacci Retracement: Set your preferred retracement range for point C (default 50% - 78.6%)
Risk-Reward Control: Adjust stop-loss and take-profit multiples to match your trading plan
Visual Pattern Display: Clear labeling of A, B, C, D points with pattern lines for easy identification
Both Directions: Identifies bullish and bearish AB=CD patterns automatically
Ideal For
Swing traders on higher timeframes (4H, Daily, Weekly)
Harmonic pattern traders seeking automation
Traders wanting precise entry and exit rules based on Fibonacci geometry
Those looking to reduce emotional trading and increase consistency
Default Settings Optimized For
NASDAQ futures and currency pairs
Medium timeframe analysis
Conservative risk management (10% position size per trade)
Single AHR DCA (HM) — AHR Pane (customized quantile)Customized note
The log-regression window LR length controls how long a long-term fair value path is estimated from historical data.
The AHR window AHR window length controls over which historical regime you measure whether the coin is “cheap / expensive”.
When you choose a log-regression window of length L (years) and an AHR window of length A (years), you can intuitively read the indicator as:
“Within the last A years of this regime, relative to the long-term trend estimated over the same A years, the current price is cheap / neutral / expensive.”
Guidelines:
In general, set the AHR window equal to or slightly longer than the LR window:
If the AHR window is much longer than LR, you mix different baselines (different LR regimes) into one distribution.
If the AHR window is much shorter than LR, quantiles mostly reflect a very local slice of history.
For BTC / ETH and other BTC-like assets, you can use relatively long horizons (e.g. LR ≈ 3–5 years, AHR window ≈ 3–8 years).
For major altcoins (BNB / SOL / XRP and similar high-beta assets), it is recommended to use equal or slightly shorter horizons, e.g. LR ≈ 2–3 years, AHR window ≈ 2–3 years.
1. Price series & windows
Working timeframe: daily (1D).
Let the daily close of the current symbol on day t be P_t .
Main length parameters:
HM window: L_HM = maLen (default 200 days)
Log-regression window: L_LR = lrLen (default 1095 days ≈ 3 years)
AHR window (regime window): W = windowLen (default 1095 days ≈ 3 years)
2. Harmonic moving average (HM)
On a window of length L_HM, define the harmonic mean:
HM_t = ^(-1)
Here eps = 1e-10 is used to avoid division by zero.
Intuition: HM is more sensitive to low prices – an extremely low price inside the window will drag HM down significantly.
3. Log-regression baseline (LR)
On a window of length L_LR, perform a linear regression on log price:
Over the last L_LR bars, build the series
x_k = log( max(P_k, eps) ), for k = t-L_LR+1 ... t, and fit
x_k ≈ a + b * k.
The fitted value at the current index t is
log_P_hat_t = a + b * t.
Exponentiate to get the log-regression baseline:
LR_t = exp( log_P_hat_t ).
Interpretation: LR_t is the long-term trend / fair value path of the current regime over the past L_LR days.
4. HM-based AHR (valuation ratio)
At each time t, build an HM-based AHR (valuation multiple):
AHR_t = ( P_t / HM_t ) * ( P_t / LR_t )
Interpretation:
P_t / HM_t : deviation of price from the mid-term HM (e.g. 200-day harmonic mean).
P_t / LR_t : deviation of price from the long-term log-regression trend.
Multiplying them means:
if price is above both HM and LR, “expensiveness” is amplified;
if price is below both, “cheapness” is amplified.
Typical reading:
AHR_t < 1 : price is below both mid-term mean and long-term trend → statistically cheaper.
AHR_t > 1 : price is above both mid-term mean and long-term trend → statistically more expensive.
5. Empirical quantile thresholds (Opp / Risk)
On each new day, whenever AHR_t is valid, add it into a rolling array:
A_t_window = { AHR_{t-W+1}, ..., AHR_t } (at most W = windowLen elements)
On this empirical distribution, define two quantiles:
Opportunity quantile: q_opp (default 15%)
Risk quantile: q_risk (default 65%)
Using standard percentile computation (order statistics + linear interpolation), we get:
Opp threshold:
theta_opp = Percentile( A_t_window, q_opp )
Risk threshold:
theta_risk = Percentile( A_t_window, q_risk )
We also compute the percentile rank of the current AHR inside the same history:
q_now = PercentileRank( A_t_window, AHR_t ) ∈
This yields three valuation zones:
Opportunity zone: AHR_t <= theta_opp
(corresponds to roughly the cheapest ~q_opp% of historical states in the last W days.)
Neutral zone: theta_opp < AHR_t < theta_risk
Risk zone: AHR_t >= theta_risk
(corresponds to roughly the most expensive ~(100 - q_risk)% of historical states in the last W days.)
All quantiles are purely empirical and symbol-specific: they are computed only from the current asset’s own history, without reusing BTC thresholds or assuming cross-asset similarity.
6. DCA simulation (lightweight, rolling window)
Given:
a daily budget B (input: budgetPerDay), and
a DCA simulation window H (input: dcaWindowLen, default 900 days ≈ 2.5 years),
The script applies the following rule on each new day t:
If thresholds are unavailable or AHR_t > theta_risk
→ classify as Risk zone → buy = 0
If AHR_t <= theta_opp
→ classify as Opportunity zone → buy = 2B (double size)
Otherwise (Neutral zone)
→ buy = B (normal DCA)
Daily invested cash:
C_t ∈ {0, B, 2B}
Daily bought quantity:
DeltaQ_t = C_t / P_t
The script keeps rolling sums over the last H days:
Cumulative position:
Q_H = sum_{k=t-H+1..t} DeltaQ_k
Cumulative invested cash:
C_H = sum_{k=t-H+1..t} C_k
Current portfolio value:
PortVal_t = Q_H * P_t
Cumulative P&L:
PnL_t = PortVal_t - C_H
Active days:
number of days in the last H with C_k > 0.
These results are only used to visualize how this AHR-quantile-driven DCA rule would have behaved over the recent regime, and do not constitute financial advice.
PyraTime Intraday Cycles**Concept and Methodology**
PyraTime Intraday Cycles is a technical analysis tool designed to introduce the concept of **Temporal Cycle Projection**. While most indicators analyze price action (Y-axis), this tool focuses exclusively on the X-axis (Time).
By anchoring to a specific "Origin Pivot" (a user-defined High or Low), the script projects harmonic time intervals into the future. These vertical vectors serve as a grid, helping traders identify moments where time-based cycles may align with price structure.
**Technical Features**
This edition is optimized for **Multi-Timeframe Harmonic Flows**, utilizing a fixed algorithm for key intervals:
* **Anchor Point Logic:** The user manually selects a significant market pivot. The script calculates forward projections from this exact timestamp.
* **Standard Rhythms:** This version renders the **5-minute**, **15-minute**, **1-hour**, and **Daily** harmonic sequences. This allows for analysis across scalping, intraday, and swing trading structures.
* **Visual Confluence:** The indicator draws vertical lines to highlight potential zones of temporal exhaustion or acceleration.
**How to Use**
1. **Identify a Pivot:** Locate a significant High or Low on the chart.
2. **Set the Origin:** Open the settings and input the date/time of that pivot.
3. **Analyze Confluence:** Watch how price behaves when it approaches a vertical line. If price hits a key support/resistance level *at the same time* it hits a PyraTime vertical line, this is considered a high-probability "Time/Price" intersection.
**Version Comparison**
This script represents the foundational layer of the Great Pyramid system (PyraTime Apex).
* **PyraTime Intraday Cycles (This Script):** Focuses on Standard Timeframes (5m, 15m, 1h, Daily).
* **GPM Architecture (Advanced):** The full methodology extends these calculations to Esoteric Sequences (33, 144, 108), includes 3x Cycle Extensions, and features a Predictive Dashboard for complex multi-timeframe analysis.
**Disclaimer**
This tool is for educational and analytical purposes only. It identifies time cycles, not price direction. Past performance of a time cycle does not guarantee future results.
Apex Edge – Wolfe Wave HunterApex Edge – Wolfe Wave Hunter
The modern Wolfe Wave, rebuilt for the algo era
This isn’t just another Wolfe Wave indicator. Classic Wolfe detection is rigid, outdated, and rarely tradable. Apex Edge – Wolfe Wave Hunter re-engineers the pattern into a modern, SMC-driven model that adapts to today’s liquidity-dominated markets. It’s not about drawing pretty shapes – it’s about extracting precision entries with asymmetric risk-to-reward potential.
🔎 What it does
Automatic Wolfe Wave Detection
Identifies bullish and bearish Wolfe Wave structures using pivot-based logic, symmetry filters, and slope tolerances.
Channel Glow Zones
Highlights the Wolfe channel and projects it forward into the future (bars are user-defined). This allows you to see the full potential of the trade before price even begins its move.
Stop Loss (SL) & Entry Arrow
At the completion of Wave 5, the algo prints a Stop Loss line and a tiny entry arrow (green for bullish, red for bearish). but the colours can be changed in user settings. This is the “execution point” — where the Wolfe setup becomes tradable.
Target Projection Lines
TP1 (EPA): Derived from the traditional 1–4 line projection.
TP2 (1.272 Fib): Optional secondary profit target.
TP3 (1.618 Fib): Optional extended target for large runners.
All TP lines extend into the future, so you can track them as price evolves.
Volume Confirmation (optional)
A relative volume filter ensures Wave 5 is formed with meaningful market participation before a setup is confirmed.
Alerts (ready out of the box)
Custom alerts can be fired whenever a bullish or bearish Wolfe Wave is confirmed. No need to babysit the charts — let the script notify you.
⚙️ Customisation & User Control
Every trader’s market and style is different. That’s why Wolfe Wave Hunter is fully customisable:
Arrow Colours & Size
Works on both light and dark charts. Choose your own bullish/bearish entry arrow colours for maximum visibility.
Tolerance Levels
Adjust symmetry and slope tolerance to refine how strict the channel rules are.
Tighter settings = fewer but cleaner zones.
Looser settings = more frequent setups, but with slightly lower structural quality.
Channel Glow Projection
Define how many bars forward the channel is drawn. This controls how far into the future your Wolfe zones are extended.
Stop Loss Line Length
Keep the SL visible without it extending infinitely across your chart.
Take Profit Line Colors
Each TP projection can be styled to your preference, allowing you to clearly separate TP1, TP2, and TP3.
This isn’t a one-size-fits-all tool. You can shape Wolfe detection logic to match the pairs, timeframes, and market conditions you trade most.
🚀 Why it’s different
Classic Wolfe waves are rare — this script adapts the model into something practical and tradeable in modern markets.
Liquidity-aligned — many setups align with structural sweeps of Wave 3 liquidity before driving into profit.
Entry built-in — most Wolfe scripts only draw the structure. Wolfe Wave Hunter gives you a precise entry point, SL, and projected TPs.
Backtest-friendly — you’ll quickly discover which assets respect Wolfe waves and which don’t, creating your own high-probability Wolfe watchlist.
⚠️ Limitations & Disclaimer
Not all markets respect Wolfe Waves. Some FX pairs, metals, and indices respect the structure beautifully; others do not. Backtest and create your own shortlist.
No guaranteed sweeps. Many entries occur after a liquidity sweep of Wave 3, but not all. The algo is designed to detect Wolfe completion, not enforce textbook liquidity rules.
Probabilistic, not predictive. Wolfe setups don’t win every time. Always use risk management.
High-RR focus. This is not a high-frequency tool. It’s designed for precision, asymmetric setups where risk is small and reward potential is large.
✅ The Bottom Line
Apex Edge – Wolfe Wave Hunter is a modern reimagination of the Wolfe Wave. It blends structural geometry, liquidity dynamics, and algo-driven execution into a single tool that:
Detects the pattern automatically
Provides SL, entry, and TP levels
Offers alerts for hands-off trading
Allows deep customisation for different markets
When it hits, it delivers outstanding risk-to-reward. Backtest, refine your tolerances, and build your watchlist of assets where Wolfe structures consistently pay.
This isn’t just Wolfe detection — it’s Wolfe trading, rebuilt for the modern trader.
Developer Notes - As always with the Apex Edge Brand, user feedback and recommendations will always be respected. Simply drop us a message with your comments and we will endeavour to address your needs in future version updates.
Concentric Geometry – Invariant MetricsConcentric Geometry – Invariant Metrics
This indicator demonstrates the invariant concept of a concentric circle around a selected price range. By anchoring two points (A & B), it calculates a set of ratios and slopes that remain consistent under concentric scaling of price and time. These invariants include the raw slope (ΔP/N), concentric slope, π-adjusted ratios, and √2 offsets — all of which can be used to explore deeper geometric relationships in the market.
What has been demonstrated here is not an “out-of-the-box” trading system. Instead, the outputs provide the raw invariant metrics from which the trader must derive their own ratios and extensions. For example, price-to-bar ratio inputs are not fixed — they need to be derived from the invariants themselves, and experimenting with them is the key to uncovering harmonic alignments and scaling behaviors.
Key features include:
• Range & Bars Analysis – Price range (ΔP) and bar count (N) between anchors.
• Core Invariants – Midpoint, radius (price and bar units), upper/lower bounds.
• Linear Slope Metrics – ΔP/N and √2 concentric slope.
• π-Adjusted Price/Bar – Harmonic arc-length ratio.
• Circumference & Offsets – Circle circumference, √2 and 1/√2 offsets in price and bar units.
This tool is best suited for traders studying market geometry, W.D. Gann principles, harmonic ratios, or the geometric methods of Michael Jenkins. It does not generate buy/sell signals — instead, it equips the trader with building blocks for geometric exploration.
Key point: The trader must experiment with the ratios derived from these metrics. Playing with different price-to-bar relationships unlocks the true potential of concentric market geometry, whether applied to dynamic anchored VWAPs, concentric overlays, or Vesica Piscis structures.
Use it to:
• Compare slopes across swings
• Derive new ratios from invariant metrics
• Anchor dynamic anchored VWAPs to concentric nodes
• Explore concentric or Vesica Piscis overlays
• Support advanced geometric trading strategies
Advanced Range Theory - ART📊 Advanced Range Theory (ART): The Institutional Blueprint
Stop drawing lines. Start reading the blueprint of the market. Advanced Range Theory (ART) is not another support and resistance indicator; it is a military-grade market structure engine designed to decode the language of institutional capital. It operates on a single, powerful premise: markets move in phases of consolidation and expansion, and the key to anticipation lies in understanding the complete lifecycle of these phases.
ART provides a living, breathing map of the battlefield, identifying institutional accumulation zones and tracking them with unparalleled precision from their inception as "Pending" ranges to their ultimate classification after a breakout. This is your X-ray into the market's skeletal structure.
🔬 THEORETICAL FRAMEWORK: THE ARCHITECTURE OF PRICE ACTION
ART is built on a multi-layered system of logic that moves beyond static levels. It treats ranges as dynamic entities with a narrative—a beginning, a middle, and an end. The core of the system is the dynamic classification engine, which analyzes not just the range, but the character of the price action that resolves it.
1. The Range Lifecycle: From Accumulation to Classification
This is the revolutionary heart of ART. A range's true identity is only revealed by how it is broken.
Phase 1: PENDING (Yellow): A new range is identified based on a period of price consolidation (a "parent" candle followed by a minimum number of "inside" candles). At this stage, it is a neutral zone of potential energy—an area where institutions are likely building positions. It is a question the market has not yet answered.
Phase 2: MITIGATION & CLASSIFICATION: When price breaks out and reaches a calculated extension level, the range is considered "mitigated." At this exact moment, ART analyzes the breakout's DNA to classify the range's true intent:
TYPE 1 - BREAKOUT (Blue): Characterized by a strong, impulsive move with confirming volume. This is a high-conviction breakout, signaling aggressive institutional participation and the likely start of a new trend. It is a statement of intent.
TYPE 2 - REVERSAL (Orange): Occurs when price attempts to break one way but is aggressively rejected, reversing and breaking out the other side. This signals absorption and a "failed auction," often marking significant market turning points.
TYPE 3 - PIVOT (Green): A more balanced breakout, lacking the explosive momentum of a Type 1. This often represents a resolution after a period of indecision or a pivot within a larger trading range.
2. The Hierarchical Map: Source & S/R Levels
ART doesn't just draw boxes; it builds a genealogical map of market structure.
SOURCE LEVEL (Thick Gold Line): This is the "genesis" point—the most recently mitigated range. It acts as the primary point of origin for the current market swing and serves as a critical level for determining overall bias. Price action above the Source is generally bullish; below is bearish.
S/R LEVELS (Cyan Lines): When a range is mitigated, the price level where it broke becomes a key Support/Resistance zone for the future. ART tracks the two most recent S/R levels, as these often act as powerful magnets or rejection points for price.
3. The Multi-Factor Validation Engine
To eliminate noise and focus only on institutionally significant ranges, every potential range must pass a rigorous quality control check:
Time-Based Consolidation: Requires a minimum number of consecutive inside candles (minInsideCandles), ensuring a true period of balance.
Volatility-Based Significance: The range's size must be greater than a multiple of the Average True Range (minRangeSize), filtering out insignificant micro-consolidations.
Participation Confirmation: The parent candle of the range is checked against average volume to ensure there was meaningful activity during its formation.
⚙️ THE COMMAND CONSOLE: CONFIGURING YOUR ART ENGINE
Every input is designed to give you granular control over the detection engine, allowing you to tune ART to any market or timeframe with precision. Each tooltip in the script provides a deep dive, but here is a summary of the core controls.
🎯 ART Detection Engine
Minimum Inside Candles: The soul of the detection algorithm. It defines the minimum number of bars that must be contained within a single "parent" candle to qualify as a range. Higher values (3-4) find major, significant consolidation zones. Lower values (1-2) are more sensitive and will identify shorter-term accumulation patterns.
Extension Multiplier & Fibonacci Extension: These control the profit target projections. The Extension Multiplier uses a simple measured move (e.g., 1.0 = a 1:1 projection of the range's height). The Fibonacci Extension uses the golden ratio (1.618) for harmonically-derived targets.
Mitigation Method (Cross vs. Close): Determines how a breakout is confirmed. Cross is more responsive, triggering as soon as price touches the extension. Close is more conservative, requiring a full candle to close beyond the level, which helps filter out fake-outs from wicks.
Min Range Size (ATR): A crucial noise filter. It ensures that ART ignores tiny, insignificant ranges by requiring a range's height to be a certain multiple of the current market volatility (ATR).
📊 Display & Visual Configuration
These settings give you full control over the visual interface. You can toggle every single element—from the Webb Scanner to the S/R Levels—to create a clean or a comprehensive view. Choose a color theme that suits your charting environment or define a fully custom palette.
🕸️ Webb Analysis Scanner
This is a unique real-time flow analysis tool. It draws dynamic, animated lines from the current price to recent historical points. This visualization helps reveal hidden "tendrils" of momentum and short-term support/resistance that are not immediately obvious, acting as a "sonar" for immediate price flow.
📊 THE ANALYTICS HUB: YOUR DASHBOARD DECODED
The dashboard provides a real-time, at-a-glance intelligence briefing on the current state of market structure as seen by the ART engine.
RANGE METRICS: This section is a "census" of the market's structure. It tells you the total number of ranges identified, how many are still Pending (awaiting a breakout), how many are Unmitigated (active but not yet broken), and how many have been Mitigated (classified and complete).
TYPE BREAKDOWN: This is a powerful gauge of market character. A high count of Type 1 (Breakout) ranges suggests a strong, trending environment. A rising number of Type 2 (Reversal) ranges can signal market exhaustion and potential trend changes. A dominant Type 3 (Pivot) count indicates a balanced, rotational market.
KEY GUIDE: The Large dashboard includes a full legend, so you never have to guess what a line or color represents. It's your built-in user manual.
🎨 DECODING THE BLUEPRINT: A VISUAL INTERPRETATION GUIDE
Every line and color in ART is designed for instant, intuitive understanding.
The Range Lines:
Yellow Lines: A Pending range. This is an active zone of accumulation. Pay close attention.
Colored Lines (Blue/Orange/Green): An unmitigated, classified range. The color tells you its breakout character.
Dotted Lines: A Mitigated range. Its story has been told. These historical levels can still act as support or resistance.
The Identification Zones: These colored boxes appear at a range's origin point after it has been classified. They are the "birth certificate" of the range, permanently marking its type (Breakout, Reversal, or Pivot) and providing an immediate visual history of market behavior.
The Hierarchical Lines:
Thick Gold Line (Source): The most important line on your chart. It is the anchor for your bias.
Cyan Lines (S/R): High-probability decision points. Expect reactions here.
Purple Dotted Lines (Extensions): Logical, calculated profit targets for breaking ranges.
🔧 THE ARCHITECT'S VISION: THE DEVELOPMENT JOURNEY
ART was born from a deep frustration with the static and subjective nature of traditional market structure analysis. Drawing lines by hand is inconsistent, and most indicators are reactive, only confirming what has already happened. The goal was to create a proactive, objective, and dynamic framework that could think about the market in terms of phases and lifecycles.
The breakthrough came from a simple shift in perspective: a range's true character isn't defined when it forms, but by how it resolves. This led to the development of the "post-breakout classification engine," which waits for the market to show its hand before assigning a definitive type. The Webb Scanner was inspired by the desire to visualize the unseen, to create a tool that could feel the immediate "pull" and "push" of price flow. The result is not just an indicator; it is a new language for interpreting price action, built on a foundation of logic, clarity, and precision.
⚠️ RISK DISCLAIMER & BEST PRACTICES
Advanced Range Theory is a professional-grade analytical tool designed to enhance a trader's decision-making process. It does not provide direct buy or sell signals. The levels and classifications it generates are based on historical price action and mathematical probabilities. All trading involves substantial risk, and past performance is not indicative of future results. Always use this tool in conjunction with a robust risk management plan.
"I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times."
— Dskyz, Trade with insight. Trade with anticipation.
— Bruce Lee
ONE RING 8 MA Bands with RaysCycle analysis tool ...
MAs: Eight moving averages (MA1–MA8) with customizable lengths, types (RMA, WMA, EMA, SMA), and offsets
Bands: Upper/lower bands for each MA, calculated based on final_pctX (Percentage mode) or final_ptsX (Points mode), scaled by multiplier
Rays: Forward-projected lines for bands, with customizable start points, styles (Solid, Dashed, Dotted), and lengths (up to 500 bars)
Band Choices
Manual: Uses individual inputs for band offsets
Uniform: Sets all offsets to base_pct (e.g., 0.1%) or base_pts (e.g., 0.1 points)
Linear: Scales linearly (e.g., base_pct * 1, base_pct * 2, base_pct * 3 ..., base_pct * 8)
Exponential: Scales exponentially (e.g., base_pct * 1, base_pct * 2, base_pct * 4, base_pct * 8 ..., base_pct * 128)
ATR-Based: Offsets are derived from the Average True Range (ATR), scaled by a linear factor. Dynamic bands that adapt to market conditions, useful for breakout or mean-reversion strategies. (final_pct1 = base_pct * atr, final_pct2 = base_pct * atr * 2, ..., final_pct8 = base_pct * atr * 8)
Geometric: Offsets follow a geometric progression (e.g., base_pct * r^0, base_pct * r^1, base_pct * r^2, ..., where r is a ratio like 1.5) This is less aggressive than Exponential (which uses powers of 2) and provides a smoother progression.
Example: If base_pct = 0.1, r = 1.5, then final_pct1 = 0.1%, final_pct2 = 0.15%, final_pct3 = 0.225%, ..., final_pct8 ≈ 1.71%
Harmonic: Offsets are based on harmonic flavored ratios. final_pctX = base_pct * X / (9 - X), final_ptsX = base_pts * X / (9 - X) for X = 1 to 8 This creates a harmonic-like progression where offsets increase non-linearly, ensuring MA8 bands are wider than MA1 bands, and avoids duplicating the Linear choice above.
Ex. offsets for base_pct = 0.1: MA1: ±0.0125% (0.1 * 1/8), MA2: ±0.0286% (0.1 * 2/7), MA3: ±0.05% (0.1 * 3/6), MA4: ±0.08% (0.1 * 4/5), MA5: ±0.125% (0.1 * 5/4), MA6: ±0.2% (0.1 * 6/3), MA7: ±0.35% (0.1 * 7/2), MA8: ±0.8% (0.1 * 8/1)
Square Root: Offsets grow with the square root of the band index (e.g., base_pct * sqrt(1), base_pct * sqrt(2), ..., base_pct * sqrt(8)). This creates a gradual widening, less aggressive than Linear or Exponential. Set final_pct1 = base_pct * sqrt(1), final_pct2 = base_pct * sqrt(2), ..., final_pct8 = base_pct * sqrt(8).
Example: If base_pct = 0.1, then final_pct1 = 0.1%, final_pct2 ≈ 0.141%, final_pct3 ≈ 0.173%, ..., final_pct8 ≈ 0.283%.
Fibonacci: Uses Fibonacci ratios (e.g., base_pct * 1, base_pct * 1.618, base_pct * 2.618
Percentage vs. Points Toggle:
In Percentage mode, bands are calculated as ma * (1 ± (final_pct / 100) * multiplier)
In Points mode, bands are calculated as ma ± final_pts * multiplier, where final_pts is in price units.
Threshold Setting for Slope:
Threshold setting for determining when the slope would be significant enough to call it a change in direction. Can check efficiency by setting MA1 to color on slope temporarily
Arrow table: Shows slope direction of 8 MAs using an Up or Down triangle, or shows Flat condition if no triangle.
BAERMThe Bitcoin Auto-correlation Exchange Rate Model: A Novel Two Step Approach
THIS IS NOT FINANCIAL ADVICE. THIS ARTICLE IS FOR EDUCATIONAL AND ENTERTAINMENT PURPOSES ONLY.
If you enjoy this software and information, please consider contributing to my lightning address
Prelude
It has been previously established that the Bitcoin daily USD exchange rate series is extremely auto-correlated
In this article, we will utilise this fact to build a model for Bitcoin/USD exchange rate. But not a model for predicting the exchange rate, but rather a model to understand the fundamental reasons for the Bitcoin to have this exchange rate to begin with.
This is a model of sound money, scarcity and subjective value.
Introduction
Bitcoin, a decentralised peer to peer digital value exchange network, has experienced significant exchange rate fluctuations since its inception in 2009. In this article, we explore a two-step model that reasonably accurately captures both the fundamental drivers of Bitcoin’s value and the cyclical patterns of bull and bear markets. This model, whilst it can produce forecasts, is meant more of a way of understanding past exchange rate changes and understanding the fundamental values driving the ever increasing exchange rate. The forecasts from the model are to be considered inconclusive and speculative only.
Data preparation
To develop the BAERM, we used historical Bitcoin data from Coin Metrics, a leading provider of Bitcoin market data. The dataset includes daily USD exchange rates, block counts, and other relevant information. We pre-processed the data by performing the following steps:
Fixing date formats and setting the dataset’s time index
Generating cumulative sums for blocks and halving periods
Calculating daily rewards and total supply
Computing the log-transformed price
Step 1: Building the Base Model
To build the base model, we analysed data from the first two epochs (time periods between Bitcoin mining reward halvings) and regressed the logarithm of Bitcoin’s exchange rate on the mining reward and epoch. This base model captures the fundamental relationship between Bitcoin’s exchange rate, mining reward, and halving epoch.
where Yt represents the exchange rate at day t, Epochk is the kth epoch (for that t), and epsilont is the error term. The coefficients beta0, beta1, and beta2 are estimated using ordinary least squares regression.
Base Model Regression
We use ordinary least squares regression to estimate the coefficients for the betas in figure 2. In order to reduce the possibility of over-fitting and ensure there is sufficient out of sample for testing accuracy, the base model is only trained on the first two epochs. You will notice in the code we calculate the beta2 variable prior and call it “phaseplus”.
The code below shows the regression for the base model coefficients:
\# Run the regression
mask = df\ < 2 # we only want to use Epoch's 0 and 1 to estimate the coefficients for the base model
reg\_X = df.loc\ [mask, \ \].shift(1).iloc\
reg\_y = df.loc\ .iloc\
reg\_X = sm.add\_constant(reg\_X)
ols = sm.OLS(reg\_y, reg\_X).fit()
coefs = ols.params.values
print(coefs)
The result of this regression gives us the coefficients for the betas of the base model:
\
or in more human readable form: 0.029, 0.996869586, -0.00043. NB that for the auto-correlation/momentum beta, we did NOT round the significant figures at all. Since the momentum is so important in this model, we must use all available significant figures.
Fundamental Insights from the Base Model
Momentum effect: The term 0.997 Y suggests that the exchange rate of Bitcoin on a given day (Yi) is heavily influenced by the exchange rate on the previous day. This indicates a momentum effect, where the price of Bitcoin tends to follow its recent trend.
Momentum effect is a phenomenon observed in various financial markets, including stocks and other commodities. It implies that an asset’s price is more likely to continue moving in its current direction, either upwards or downwards, over the short term.
The momentum effect can be driven by several factors:
Behavioural biases: Investors may exhibit herding behaviour or be subject to cognitive biases such as confirmation bias, which could lead them to buy or sell assets based on recent trends, reinforcing the momentum.
Positive feedback loops: As more investors notice a trend and act on it, the trend may gain even more traction, leading to a self-reinforcing positive feedback loop. This can cause prices to continue moving in the same direction, further amplifying the momentum effect.
Technical analysis: Many traders use technical analysis to make investment decisions, which often involves studying historical exchange rate trends and chart patterns to predict future exchange rate movements. When a large number of traders follow similar strategies, their collective actions can create and reinforce exchange rate momentum.
Impact of halving events: In the Bitcoin network, new bitcoins are created as a reward to miners for validating transactions and adding new blocks to the blockchain. This reward is called the block reward, and it is halved approximately every four years, or every 210,000 blocks. This event is known as a halving.
The primary purpose of halving events is to control the supply of new bitcoins entering the market, ultimately leading to a capped supply of 21 million bitcoins. As the block reward decreases, the rate at which new bitcoins are created slows down, and this can have significant implications for the price of Bitcoin.
The term -0.0004*(50/(2^epochk) — (epochk+1)²) accounts for the impact of the halving events on the Bitcoin exchange rate. The model seems to suggest that the exchange rate of Bitcoin is influenced by a function of the number of halving events that have occurred.
Exponential decay and the decreasing impact of the halvings: The first part of this term, 50/(2^epochk), indicates that the impact of each subsequent halving event decays exponentially, implying that the influence of halving events on the Bitcoin exchange rate diminishes over time. This might be due to the decreasing marginal effect of each halving event on the overall Bitcoin supply as the block reward gets smaller and smaller.
This is antithetical to the wrong and popular stock to flow model, which suggests the opposite. Given the accuracy of the BAERM, this is yet another reason to question the S2F model, from a fundamental perspective.
The second part of the term, (epochk+1)², introduces a non-linear relationship between the halving events and the exchange rate. This non-linear aspect could reflect that the impact of halving events is not constant over time and may be influenced by various factors such as market dynamics, speculation, and changing market conditions.
The combination of these two terms is expressed by the graph of the model line (see figure 3), where it can be seen the step from each halving is decaying, and the step up from each halving event is given by a parabolic curve.
NB - The base model has been trained on the first two halving epochs and then seeded (i.e. the first lag point) with the oldest data available.
Constant term: The constant term 0.03 in the equation represents an inherent baseline level of growth in the Bitcoin exchange rate.
In any linear or linear-like model, the constant term, also known as the intercept or bias, represents the value of the dependent variable (in this case, the log-scaled Bitcoin USD exchange rate) when all the independent variables are set to zero.
The constant term indicates that even without considering the effects of the previous day’s exchange rate or halving events, there is a baseline growth in the exchange rate of Bitcoin. This baseline growth could be due to factors such as the network’s overall growth or increasing adoption, or changes in the market structure (more exchanges, changes to the regulatory environment, improved liquidity, more fiat on-ramps etc).
Base Model Regression Diagnostics
Below is a summary of the model generated by the OLS function
OLS Regression Results
\==============================================================================
Dep. Variable: logprice R-squared: 0.999
Model: OLS Adj. R-squared: 0.999
Method: Least Squares F-statistic: 2.041e+06
Date: Fri, 28 Apr 2023 Prob (F-statistic): 0.00
Time: 11:06:58 Log-Likelihood: 3001.6
No. Observations: 2182 AIC: -5997.
Df Residuals: 2179 BIC: -5980.
Df Model: 2
Covariance Type: nonrobust
\==============================================================================
coef std err t P>|t| \
\------------------------------------------------------------------------------
const 0.0292 0.009 3.081 0.002 0.011 0.048
logprice 0.9969 0.001 1012.724 0.000 0.995 0.999
phaseplus -0.0004 0.000 -2.239 0.025 -0.001 -5.3e-05
\==============================================================================
Omnibus: 674.771 Durbin-Watson: 1.901
Prob(Omnibus): 0.000 Jarque-Bera (JB): 24937.353
Skew: -0.765 Prob(JB): 0.00
Kurtosis: 19.491 Cond. No. 255.
\==============================================================================
Below we see some regression diagnostics along with the regression itself.
Diagnostics: We can see that the residuals are looking a little skewed and there is some heteroskedasticity within the residuals. The coefficient of determination, or r2 is very high, but that is to be expected given the momentum term. A better r2 is manually calculated by the sum square of the difference of the model to the untrained data. This can be achieved by the following code:
\# Calculate the out-of-sample R-squared
oos\_mask = df\ >= 2
oos\_actual = df.loc\
oos\_predicted = df.loc\
residuals\_oos = oos\_actual - oos\_predicted
SSR = np.sum(residuals\_oos \*\* 2)
SST = np.sum((oos\_actual - oos\_actual.mean()) \*\* 2)
R2\_oos = 1 - SSR/SST
print("Out-of-sample R-squared:", R2\_oos)
The result is: 0.84, which indicates a very close fit to the out of sample data for the base model, which goes some way to proving our fundamental assumption around subjective value and sound money to be accurate.
Step 2: Adding the Damping Function
Next, we incorporated a damping function to capture the cyclical nature of bull and bear markets. The optimal parameters for the damping function were determined by regressing on the residuals from the base model. The damping function enhances the model’s ability to identify and predict bull and bear cycles in the Bitcoin market. The addition of the damping function to the base model is expressed as the full model equation.
This brings me to the question — why? Why add the damping function to the base model, which is arguably already performing extremely well out of sample and providing valuable insights into the exchange rate movements of Bitcoin.
Fundamental reasoning behind the addition of a damping function:
Subjective Theory of Value: The cyclical component of the damping function, represented by the cosine function, can be thought of as capturing the periodic fluctuations in market sentiment. These fluctuations may arise from various factors, such as changes in investor risk appetite, macroeconomic conditions, or technological advancements. Mathematically, the cyclical component represents the frequency of these fluctuations, while the phase shift (α and β) allows for adjustments in the alignment of these cycles with historical data. This flexibility enables the damping function to account for the heterogeneity in market participants’ preferences and expectations, which is a key aspect of the subjective theory of value.
Time Preference and Market Cycles: The exponential decay component of the damping function, represented by the term e^(-0.0004t), can be linked to the concept of time preference and its impact on market dynamics. In financial markets, the discounting of future cash flows is a common practice, reflecting the time value of money and the inherent uncertainty of future events. The exponential decay in the damping function serves a similar purpose, diminishing the influence of past market cycles as time progresses. This decay term introduces a time-dependent weight to the cyclical component, capturing the dynamic nature of the Bitcoin market and the changing relevance of past events.
Interactions between Cyclical and Exponential Decay Components: The interplay between the cyclical and exponential decay components in the damping function captures the complex dynamics of the Bitcoin market. The damping function effectively models the attenuation of past cycles while also accounting for their periodic nature. This allows the model to adapt to changing market conditions and to provide accurate predictions even in the face of significant volatility or structural shifts.
Now we have the fundamental reasoning for the addition of the function, we can explore the actual implementation and look to other analogies for guidance —
Financial and physical analogies to the damping function:
Mathematical Aspects: The exponential decay component, e^(-0.0004t), attenuates the amplitude of the cyclical component over time. This attenuation factor is crucial in modelling the diminishing influence of past market cycles. The cyclical component, represented by the cosine function, accounts for the periodic nature of market cycles, with α determining the frequency of these cycles and β representing the phase shift. The constant term (+3) ensures that the function remains positive, which is important for practical applications, as the damping function is added to the rest of the model to obtain the final predictions.
Analogies to Existing Damping Functions: The damping function in the BAERM is similar to damped harmonic oscillators found in physics. In a damped harmonic oscillator, an object in motion experiences a restoring force proportional to its displacement from equilibrium and a damping force proportional to its velocity. The equation of motion for a damped harmonic oscillator is:
x’’(t) + 2γx’(t) + ω₀²x(t) = 0
where x(t) is the displacement, ω₀ is the natural frequency, and γ is the damping coefficient. The damping function in the BAERM shares similarities with the solution to this equation, which is typically a product of an exponential decay term and a sinusoidal term. The exponential decay term in the BAERM captures the attenuation of past market cycles, while the cosine term represents the periodic nature of these cycles.
Comparisons with Financial Models: In finance, damped oscillatory models have been applied to model interest rates, stock prices, and exchange rates. The famous Black-Scholes option pricing model, for instance, assumes that stock prices follow a geometric Brownian motion, which can exhibit oscillatory behavior under certain conditions. In fixed income markets, the Cox-Ingersoll-Ross (CIR) model for interest rates also incorporates mean reversion and stochastic volatility, leading to damped oscillatory dynamics.
By drawing on these analogies, we can better understand the technical aspects of the damping function in the BAERM and appreciate its effectiveness in modelling the complex dynamics of the Bitcoin market. The damping function captures both the periodic nature of market cycles and the attenuation of past events’ influence.
Conclusion
In this article, we explored the Bitcoin Auto-correlation Exchange Rate Model (BAERM), a novel 2-step linear regression model for understanding the Bitcoin USD exchange rate. We discussed the model’s components, their interpretations, and the fundamental insights they provide about Bitcoin exchange rate dynamics.
The BAERM’s ability to capture the fundamental properties of Bitcoin is particularly interesting. The framework underlying the model emphasises the importance of individuals’ subjective valuations and preferences in determining prices. The momentum term, which accounts for auto-correlation, is a testament to this idea, as it shows that historical price trends influence market participants’ expectations and valuations. This observation is consistent with the notion that the price of Bitcoin is determined by individuals’ preferences based on past information.
Furthermore, the BAERM incorporates the impact of Bitcoin’s supply dynamics on its price through the halving epoch terms. By acknowledging the significance of supply-side factors, the model reflects the principles of sound money. A limited supply of money, such as that of Bitcoin, maintains its value and purchasing power over time. The halving events, which reduce the block reward, play a crucial role in making Bitcoin increasingly scarce, thus reinforcing its attractiveness as a store of value and a medium of exchange.
The constant term in the model serves as the baseline for the model’s predictions and can be interpreted as an inherent value attributed to Bitcoin. This value emphasizes the significance of the underlying technology, network effects, and Bitcoin’s role as a medium of exchange, store of value, and unit of account. These aspects are all essential for a sound form of money, and the model’s ability to account for them further showcases its strength in capturing the fundamental properties of Bitcoin.
The BAERM offers a potential robust and well-founded methodology for understanding the Bitcoin USD exchange rate, taking into account the key factors that drive it from both supply and demand perspectives.
In conclusion, the Bitcoin Auto-correlation Exchange Rate Model provides a comprehensive fundamentally grounded and hopefully useful framework for understanding the Bitcoin USD exchange rate.
Draw Line For High Low Custom Range Interactive█ OVERVIEW
This indicator is an educational indicator to make pine coders easier to how to use interactive inputs with User-Defined Type (UDT) especially when dealing input.time.
█ NOTES
This indicator is not perfect but it is a good starting point or template to start develop custom range interactive indicator.
█ INSPIRATIONS
ABC 123 Harmonic Ratio Custom Range Interactive
XABCD Harmonic Pattern Custom Range Interactive
PriceTimeInteractive
█ CREDITS
CAGR Custom Range
Pine scripts are now interactive
█ FEATURES
1. High Low points are determined based on points selected.
2. Line will be drawn after points are correctly arranged.
3. Label show error once wrong point is selected, move the point as instructed in example.
█ EXAMPLES / USAGE
eHarmonicpatternsLogScaleLibrary "eHarmonicpatternsLogScale"
Library provides functions to scan harmonic patterns both or normal and log scale
getSupportedPatterns()
get_prz_range(x, a, b, c, patternArray, errorPercent, start_adj, end_adj, logScale)
Provides PRZ range based on BCD and XAD ranges
Parameters:
x : X coordinate value
a : A coordinate value
b : B coordinate value
c : C coordinate value
patternArray : Pattern flags for which PRZ range needs to be calculated
errorPercent : Error threshold
start_adj : - Adjustments for entry levels
end_adj : - Adjustments for stop levels
logScale : - calculate on log scale. Default is false
Returns: Start and end of consolidated PRZ range
get_prz_range_xad(x, a, b, c, patternArray, errorPercent, start_adj, end_adj, logScale)
Provides PRZ range based on XAD range only
Parameters:
x : X coordinate value
a : A coordinate value
b : B coordinate value
c : C coordinate value
patternArray : Pattern flags for which PRZ range needs to be calculated
errorPercent : Error threshold
start_adj : - Adjustments for entry levels
end_adj : - Adjustments for stop levels
logScale : - calculate on log scale. Default is false
Returns: Start and end of consolidated PRZ range
get_projection_range(x, a, b, c, patternArray, errorPercent, start_adj, end_adj, logScale)
Provides Projection range based on BCD and XAD ranges
Parameters:
x : X coordinate value
a : A coordinate value
b : B coordinate value
c : C coordinate value
patternArray : Pattern flags for which PRZ range needs to be calculated
errorPercent : Error threshold
start_adj : - Adjustments for entry levels
end_adj : - Adjustments for stop levels
logScale : - calculate on log scale. Default is false
Returns: Array containing start and end ranges
isHarmonicPattern(x, a, b, c, d, flags, defaultEnabled, errorPercent, logScale)
Checks for harmonic patterns
Parameters:
x : X coordinate value
a : A coordinate value
b : B coordinate value
c : C coordinate value
d : D coordinate value
flags : flags to check patterns. Send empty array to enable all
defaultEnabled
errorPercent : Error threshold
logScale : - calculate on log scale. Default is false
Returns: Array of boolean values which says whether valid pattern exist and array of corresponding pattern names
isHarmonicProjection(x, a, b, c, flags, defaultEnabled, errorPercent, logScale)
Checks for harmonic pattern projection
Parameters:
x : X coordinate value
a : A coordinate value
b : B coordinate value
c : C coordinate value
flags : flags to check patterns. Send empty array to enable all
defaultEnabled
errorPercent : Error threshold
logScale : - calculate on log scale. Default is false
Returns: Array of boolean values which says whether valid pattern exist and array of corresponding pattern names.
God Number Channel v2(GNC v2)GNC got a little update:
1) Logic changed a bit.
I tried to calculate MAs based on the power(high - low of previous bars).You can see it the M-variables, as new statements were added in calculation section of MAs. I don't really know if I did right, because I didn't go too much in Pine Script. I just wanted to make a Bollinger-bands-like bands, which could predict the levels at which might reverse, using legendary fibonacci and Tesla's harmonic number 432. It's might sound as a joke, but as you can see, it works pretty good.
2) Customization :
No need to change Fibonacci ratios in code. Now you can do it in the GNC settings. Also MAs' names were made obvious, just check it out. Time of million similar "MA n1" has passed :)
3) Trade-entry advices :
I didn't tell you exactly the trade-entry advices, as I haven't explored this script fully yet :) But you probably understood something intuitively, when added GNC on the chart. Now I made things way more obvious:
1. Zones between Fib ratios show you how aware you should be of price movements. Basically, here are the rules, but you probably understand them already:
1.1 Red zone(RZ) : high awareness, very likly for price to be reversed, but if there is a clear trend and you know, than it might be a time for price to shoot up/down.
1.2 Orange zone(OZ) : medium awareness, not so obvious, as price might go between boundaries of OZ and continue the trend movement if such followed before entering the OZ. If price go below lower boundary of OZ and the next bar opens below this boundary, it might be a signal for SHORY, BUT(!) please consider confirmation of any sort to be more sure. Think of going beyond the upper boundary by analogy.
1.3 Green Zone(GZ) : if the price hits any boundary of green zone, it is usually a good oppurtunity to open a position against the movement(hit lower boundary -> open LONG, hit upper boundary -> open SHORT).
1.4 Middle Zone(Harmonic Zone)(MZ) : same rules from Green Zone.
IMPORTANT RECCOMENDATION : Use trend indicator to trend all signals from zones to follow the trend, 'cause counter-trending with this thing without stop loss might very quickly wipe you out , might if you will counter-trend strategy with GNC, I will be glad if you share it with the community :)
Reccomendation for better entries :
1) if the price hits the lower(or high) boundaries(LB or HB) zone after zone(hit LB or HB of RZ, then of OZ, then of GZ), it is a very good signal to either LONG, if price was hitting LBs , or SHORT, if hitting HBs .
2) Consider NOT to place trades when in MZ, as price in this zone gets tricky often enough. By the way, if you dont the see the harmonic MAs(which go with plot(ma1+(0.432*avg1)) ), then set the transparency of zone to 20% or a bit more and then it will be ok.
I will continue to develop the GNC and any help or feedback from you, guys, will be very helpful for me, so you welcome for any of those, but please be precise in your critics.
Thank you for using my stuff, hope you found it usefull. Good luck :)
.b pin-up symbolWhen trading cryptocoins, it is necessary to check the price trend of NASDAQ, BTC.D, BTC.OI, BTC spot or other coins of similar groups.
However it is very cumbersome to put a comparison symbol in the Tradingview chart and combine individual indicators one by one.
Moreover even with such a combination, the chart is messy and visibility is not good.
This script was developed as a composite-solution to that situation, and will make you happy.
- NQ1!, USTECH100CFD | symbol fixed
- BTC.Dominance, BTC.OpenInterest, BTC symbol, others pin-up-symbol | selectable
- Pin-up-symbol | selectable
- Pin-up-symbol's candle chart
- Trending
* EMA 9,21,50,200 ribbon classic EMA
* .b price line ; .b price = unique trending price with price-action + relative-volume-action + ATR
* Dynamic S/R Cloud ; BB + donchian band + high/low + atr mixed custom-logic
* VWWMA + .b price Shadow ; Volume-weighted WMA on .b price = unique MA faster than classic VWMA
Trending shadow direction is not bad even on low-timeframe (1, 2, 3, 5m, 15m...)
- Pattern
* Harmonic Pattern ; A simplified version of the harmonic pattern indicator, simply show-up pattern complete position
for reference only - adopted from HeWhoMustNotBeNamed's script.
- Information Panel
* BTC Dominance, BTC Open Interest, Pin-Up-Symbol price
* Trend meter ; 5,15,30,1h,2h,4h Meter Calc with 1 minute-timeframe candles
5 = Green if the current price is higher than the price 5 minutes ago.
1h = Green if the current price is higher than the price 2 hours ago.
4h = Red if the current price is lower than the price 4 hours ago.
* caution ; To use real-time chart of "CME_MINI:NQ1!" you have to additional subscribe CME data,
default setting is 'NQ1!' , you can change to 'USTECH100CFD'
* When you choose symbol which is closed trading hours, the script's update stopped.
Even if the selected pin-up-symbol is on trading hours, the currently selected symbol's chart doesn't update.
* recommended | chart setting > Appearance : Top margin 0%, Bottom margin 0% for optimized screen usage :)
if you have any questions freely contact to me by message on tradingview, or telegram @sr_bt
but please understand that responses may be quite late.
------------------------------------------------------------------------------------------------------------------------------------------------------------
copyright 2022 (sr_b)
Special thanks to all of contributors of community.
The script (originaly .b) may be freely distributed under the MIT license.
The other classic script code also may be freely distributed under the MIT license.
Simplified Harmonic script part | core adopted from 'Multi ZigZag Harmonic Patterns (HeWhoMustNotBeNamed)' MPL2.0 license
statisticsLibrary "statistics"
General statistics library.
erf(x) The "error function" encountered in integrating the normal
distribution (which is a normalized form of the Gaussian function).
Parameters:
x : The input series.
Returns: The Error Function evaluated for each element of x.
erfc(x)
Parameters:
x : The input series
Returns: The Complementary Error Function evaluated for each alement of x.
sumOfReciprocals(src, len) Calculates the sum of the reciprocals of the series.
For each element 'elem' in the series:
sum += 1/elem
Should the element be 0, the reciprocal value of 0 is used instead
of NA.
Parameters:
src : The input series.
len : The length for the sum.
Returns: The sum of the resciprocals of 'src' for 'len' bars back.
mean(src, len) The mean of the series.
(wrapper around ta.sma).
Parameters:
src : The input series.
len : The length for the mean.
Returns: The mean of 'src' for 'len' bars back.
average(src, len) The mean of the series.
(wrapper around ta.sma).
Parameters:
src : The input series.
len : The length for the average.
Returns: The average of 'src' for 'len' bars back.
geometricMean(src, len) The Geometric Mean of the series.
The geometric mean is most important when using data representing
percentages, ratios, or rates of change. It cannot be used for
negative numbers
Since the pure mathematical implementation generates a very large
intermediate result, we performed the calculation in log space.
Parameters:
src : The input series.
len : The length for the geometricMean.
Returns: The geometric mean of 'src' for 'len' bars back.
harmonicMean(src, len) The Harmonic Mean of the series.
The harmonic mean is most applicable to time changes and, along
with the geometric mean, has been used in economics for price
analysis. It is more difficult to calculate; therefore, it is less
popular than eiter of the other averages.
0 values are ignored in the calculation.
Parameters:
src : The input series.
len : The length for the harmonicMean.
Returns: The harmonic mean of 'src' for 'len' bars back.
median(src, len) The median of the series.
(a wrapper around ta.median)
Parameters:
src : The input series.
len : The length for the median.
Returns: The median of 'src' for 'len' bars back.
variance(src, len, biased) The variance of the series.
Parameters:
src : The input series.
len : The length for the variance.
biased : Wether to use the biased calculation (for a population), or the
unbiased calculation (for a sample set). .
Returns: The variance of 'src' for 'len' bars back.
stdev(src, len, biased) The standard deviation of the series.
Parameters:
src : The input series.
len : The length for the stdev.
biased : Wether to use the biased calculation (for a population), or the
unbiased calculation (for a sample set). .
Returns: The standard deviation of 'src' for 'len' bars back.
skewness(src, len) The skew of the series.
Skewness measures the amount of distortion from a symmetric
distribution, making the curve appear to be short on the left
(lower prices) and extended to the right (higher prices). The
extended side, either left or right is called the tail, and a
longer tail to the right is called positive skewness. Negative
skewness has the tail extending towards the left.
Parameters:
src : The input series.
len : The length for the skewness.
Returns: The skewness of 'src' for 'len' bars back.
kurtosis(src, len) The kurtosis of the series.
Kurtosis describes the peakedness or flatness of a distribution.
This can be used as an unbiased assessment of whether prices are
trending or moving sideways. Trending prices will ocver a wider
range and thus a flatter distribution (kurtosis < 3; negative
kurtosis). If prices are range-bound, there will be a clustering
around the mean and we have positive kurtosis (kurtosis > 3)
Parameters:
src : The input series.
len : The length for the kurtosis.
Returns: The kurtosis of 'src' for 'len' bars back.
excessKurtosis(src, len) The normalized kurtosis of the series.
kurtosis > 0 --> positive kurtosis --> trending
kurtosis < 0 --> negative krutosis --> range-bound
Parameters:
src : The input series.
len : The length for the excessKurtosis.
Returns: The excessKurtosis of 'src' for 'len' bars back.
normDist(src, len, value) Calculates the probability mass for the value according to the
src and length. It calculates the probability for value to be
present in the normal distribution calculated for src and length.
Parameters:
src : The input series.
len : The length for the normDist.
value : The series of values to calculate the normal distance for
Returns: The normal distance of 'value' to 'src' for 'len' bars back.
normDistCumulative(src, len, value) Calculates the cumulative probability mass for the value according
to the src and length. It calculates the cumulative probability for
value to be present in the normal distribution calculated for src
and length.
Parameters:
src : The input series.
len : The length for the normDistCumulative.
value : The series of values to calculate the cumulative normal distance
for
Returns: The cumulative normal distance of 'value' to 'src' for 'len' bars
back.
zScore(src, len, value) Returns then z-score of objective to the series src.
It returns the number of stdev's the objective is away from the
mean(src, len)
Parameters:
src : The input series.
len : The length for the zScore.
value : The series of values to calculate the cumulative normal distance
for
Returns: The z-score of objectiv with respect to src and len.
er(src, len) Calculates the efficiency ratio of the series.
It measures the noise of the series. The lower the number, the
higher the noise.
Parameters:
src : The input series.
len : The length for the efficiency ratio.
Returns: The efficiency ratio of 'src' for 'len' bars back.
efficiencyRatio(src, len) Calculates the efficiency ratio of the series.
It measures the noise of the series. The lower the number, the
higher the noise.
Parameters:
src : The input series.
len : The length for the efficiency ratio.
Returns: The efficiency ratio of 'src' for 'len' bars back.
fractalEfficiency(src, len) Calculates the efficiency ratio of the series.
It measures the noise of the series. The lower the number, the
higher the noise.
Parameters:
src : The input series.
len : The length for the efficiency ratio.
Returns: The efficiency ratio of 'src' for 'len' bars back.
mse(src, len) Calculates the Mean Squared Error of the series.
Parameters:
src : The input series.
len : The length for the mean squared error.
Returns: The mean squared error of 'src' for 'len' bars back.
meanSquaredError(src, len) Calculates the Mean Squared Error of the series.
Parameters:
src : The input series.
len : The length for the mean squared error.
Returns: The mean squared error of 'src' for 'len' bars back.
rmse(src, len) Calculates the Root Mean Squared Error of the series.
Parameters:
src : The input series.
len : The length for the root mean squared error.
Returns: The root mean squared error of 'src' for 'len' bars back.
rootMeanSquaredError(src, len) Calculates the Root Mean Squared Error of the series.
Parameters:
src : The input series.
len : The length for the root mean squared error.
Returns: The root mean squared error of 'src' for 'len' bars back.
mae(src, len) Calculates the Mean Absolute Error of the series.
Parameters:
src : The input series.
len : The length for the mean absolute error.
Returns: The mean absolute error of 'src' for 'len' bars back.
meanAbsoluteError(src, len) Calculates the Mean Absolute Error of the series.
Parameters:
src : The input series.
len : The length for the mean absolute error.
Returns: The mean absolute error of 'src' for 'len' bars back.
Auto AB=CD 1 to 1 Ratio ExperimentalThis indicator was experimental based AB=CD, shows last AB=CD either Standard AB=CD or Reciprocal AB=CD which uses time instead of bar_index.
This build is based upon educational materials (refer below resources).
ABCD are based on 1 to 1 Ratio for price and time.
Features / Pros:
1. Show last AB=CD points and lines including table value.
2. Customize table position and size.
3. For desktop display only, not for mobile.
Cons:
1. Time for point D less accurate for intraday timeframe (minute, hour, etc) which may including holidays and depends on price volatility.
2. Label ratio not shown properly depends on timeframe especially for intraday timeframe and maybe for Daily and Weekly timeframe.
3. Experimental code, use at your own risk.
FAQ
1. Credits
Scott M Carney, Harmonic Trading: Volume One and Two.
LonesomeTheBlue for zigzag array source code.
HeWhoMustNotBeNamed for some guidance and advice.
2. Previous Build / Resources
Link 1
Link 2
Link 3
Link 4
3. Code Usage
Free to use for personal usage.
Left : Bullish AB=CD, Right : Bullish Reciprocal AB=CD
Left : Bearish AB=CD, Right : Bearish Reciprocal AB=CD
Pythagorean Moving Averages (and more)When you think of the question "take the mean of this dataset", you'd normally think of using the arithmetic mean because usually the norm is equal to 1; however, there are an infinite number of other types of means depending on the function norm (p).
Pythagoras' is credited for the main types of means: his harmonic mean, his geometric mean, and his arithmetic mean:
Harmonic Average (p = -1):
- Take the reciprocal of all the numbers in the dataset, add them all together, divide by the amount of numbers added together, then take the reciprocal of the final answer.
Geometric Average (p = 0):
- Multiply all the numbers in the dataset, then take the nth root where n is equal to the amount of number you multiplied together.
Arithmetic Mean (p = 1):
- Add all the numbers in the dataset, then divide by the amount of numbers you added by.
A couple other means included in this script were the quadratic mean (p = 2) and the cubic mean (p = 3).
Quadratic Mean (p = 2):
- Square every number in the dataset, then divide by the amount of numbers your added by, then take the square root.
Cubic Mean (p = 3):
- Cube every number in the dataset, then divide by the amount of numbers you added by, then take the cube root.
There are an infinite number of means for every scenario of p, but they begin to follow a pattern after p = 3.
Read more:
www.cs.uni.edu
en.wikipedia.org
en.wikipedia.org
Note : I added the functions for the quadratic mean and cubic mean, but since market charts don't have those types of graphs, the functions don't usually work. It's the same reason why sometimes you'll see the harmonic average not working.
Disclaimer : This is not financial or mathematical advice, please look for someone certified before making any decisions.






















