mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-21 12:08:05 +00:00
Refactor indicators to include "Ehlers" in names and descriptions for clarity
- Updated the name and description of the Hilbert Trendline (HTIT) to "Ehlers Hilbert Transform Instantaneous Trend (HTIT)". - Changed the name and description of the MESA Adaptive Moving Average (MAMA) to "Ehlers MESA Adaptive Moving Average". - Modified the Center of Gravity (CG) indicator to "Ehlers Center of Gravity (CG)". - Renamed the Detrended Synthetic Price (DSP) to "Ehlers Detrended Synthetic Price (DSP)". - Updated the Autocorrelation Periodogram (EACP) to "Ehlers Autocorrelation Periodogram (EACP)". - Changed the Homodyne Discriminator (HOMOD) to "Ehlers Homodyne Discriminator (HOMOD)". - Updated the Hilbert Transform Dominant Cycle Period and Phase indicators to include "Ehlers" in their names. - Renamed the Hilbert Transform Phasor Components to "Ehlers Hilbert Transform Phasor Components (HT_PHASOR)". - Updated the SineWave indicator to "Ehlers Hilbert Transform SineWave (HT_SINE)". - Changed the Phasor Analysis indicator to "Ehlers Hilbert Transform Phasor Components (HT_PHASOR)". - Updated the SSF-Based Detrended Synthetic Price to "Ehlers SSF Detrended Synthetic Price (SSFDSP)". - Renamed the Ultimate Channel to "Ehlers Ultimate Channel (UCHANNEL)". - Added new indicators: Moving Average Variable Period (MAVP), Ehlers Predictive Moving Average (PMA), Ehlers Reverse EMA (REVERSEEMA), and Ehlers Trendflex Indicator (TRENDFLEX). - Updated various SVG badges to reflect changes in classes, comments, source files, lines of code, methods, and public types.
This commit is contained in:
+11
-11
@@ -8,17 +8,17 @@ Cycle analysis identifies repeating patterns in price data. John Ehlers pioneere
|
||||
|
||||
| Indicator | Full Name | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| [CG](cg/Cg.md) | Center of Gravity | Ehlers. Weighted sum position. Minimal lag cycle indicator. |
|
||||
| [DSP](dsp/Dsp.md) | Detrended Synthetic Price | Removes trend to reveal underlying cycles. |
|
||||
| [EACP](eacp/Eacp.md) | Autocorrelation Periodogram | Ehlers. Spectral analysis via autocorrelation. Detects dominant period. |
|
||||
| [EBSW](ebsw/Ebsw.md) | Even Better Sinewave | Ehlers. Improved sinewave extraction. Reduces false signals. |
|
||||
| [HOMOD](homod/Homod.md) | Homodyne Discriminator | Dominant cycle detection via homodyne technique. |
|
||||
| [HT_DCPERIOD](ht_dcperiod/Ht_dcperiod.md) | Hilbert Transform Dominant Cycle Period | Ehlers Hilbert Transform. Measures current cycle length. |
|
||||
| [HT_DCPHASE](ht_dcphase/Ht_dcphase.md) | Hilbert Transform Dominant Cycle Phase | Ehlers Hilbert Transform. Measures current position in cycle. |
|
||||
| [HT_PHASOR](ht_phasor/HtPhasor.md) | Hilbert Transform Phasor Components | Ehlers. In-phase and quadrature components. |
|
||||
| [HT_SINE](ht_sine/HtSine.md) | Hilbert Transform SineWave | Ehlers Hilbert Transform. Sine and lead sine for cycle timing. |
|
||||
| [CG](cg/Cg.md) | Ehlers Center of Gravity | Ehlers. Weighted sum position. Minimal lag cycle indicator. |
|
||||
| [DSP](dsp/Dsp.md) | Ehlers Detrended Synthetic Price | Removes trend to reveal underlying cycles. |
|
||||
| [EACP](eacp/Eacp.md) | Ehlers Autocorrelation Periodogram | Ehlers. Spectral analysis via autocorrelation. Detects dominant period. |
|
||||
| [EBSW](ebsw/Ebsw.md) | Ehlers Even Better Sinewave | Ehlers. Improved sinewave extraction. Reduces false signals. |
|
||||
| [HOMOD](homod/Homod.md) | Ehlers Homodyne Discriminator | Dominant cycle detection via homodyne technique. |
|
||||
| [HT_DCPERIOD](ht_dcperiod/Ht_dcperiod.md) | Ehlers Hilbert Transform Dominant Cycle Period | Ehlers Hilbert Transform. Measures current cycle length. |
|
||||
| [HT_DCPHASE](ht_dcphase/Ht_dcphase.md) | Ehlers Hilbert Transform Dominant Cycle Phase | Ehlers Hilbert Transform. Measures current position in cycle. |
|
||||
| [HT_PHASOR](ht_phasor/HtPhasor.md) | Ehlers Hilbert Transform Phasor Components | Ehlers. In-phase and quadrature components. |
|
||||
| [HT_SINE](ht_sine/HtSine.md) | Ehlers Hilbert Transform SineWave | Ehlers Hilbert Transform. Sine and lead sine for cycle timing. |
|
||||
| [LUNAR](lunar/Lunar.md) | Lunar Phase | 29.5-day lunar cycle. Studied for market correlations. |
|
||||
| [SINE](sine/Sine.md) | Sine Wave | Ehlers. Basic sinewave indicator for cycle mode. |
|
||||
| [SINE](sine/Sine.md) | Ehlers Sine Wave | Ehlers. Basic sinewave indicator for cycle mode. |
|
||||
| [SOLAR](solar/Solar.md) | Solar Activity Cycle | ~11-year sunspot cycle. Long-term research indicator. |
|
||||
| [SSFDSP](ssfdsp/Ssfdsp.md) | SSF Detrended Synthetic Price | Super Smoother Filter based DSP. Cleaner cycle extraction. |
|
||||
| [SSFDSP](ssfdsp/Ssfdsp.md) | Ehlers SSF Detrended Synthetic Price | Super Smoother Filter based DSP. Cleaner cycle extraction. |
|
||||
| [STC](stc/Stc.md) | Schaff Trend Cycle | MACD + double Stochastic smoothing. Fast cycle oscillator (0-100). |
|
||||
|
||||
@@ -12,7 +12,7 @@ public class CgIndicatorTests
|
||||
Assert.Equal(10, indicator.Period);
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("CG - Center of Gravity", indicator.Name);
|
||||
Assert.Equal("CG - Ehlers Center of Gravity", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public sealed class CgIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "CG - Center of Gravity";
|
||||
Name = "CG - Ehlers Center of Gravity";
|
||||
Description = "Ehlers' Center of Gravity oscillator identifies potential turning points using weighted center of mass";
|
||||
|
||||
_series = new LineSeries(name: "CG", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# CG: Center of Gravity
|
||||
# CG: Ehlers Center of Gravity
|
||||
|
||||
> "The market's center of mass reveals where momentum shifts before price does."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("Center of Gravity (CG)", "CG", overlay=false)
|
||||
indicator("Ehlers Center of Gravity (CG)", "CG", overlay=false)
|
||||
|
||||
//@function Calculates Ehlers' Center of Gravity indicator
|
||||
//@param src Series to calculate Center of Gravity from
|
||||
|
||||
@@ -12,7 +12,7 @@ public class DspIndicatorTests
|
||||
Assert.Equal(40, indicator.Period);
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("DSP - Detrended Synthetic Price", indicator.Name);
|
||||
Assert.Equal("DSP - Ehlers Detrended Synthetic Price", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public sealed class DspIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "DSP - Detrended Synthetic Price";
|
||||
Name = "DSP - Ehlers Detrended Synthetic Price";
|
||||
Description = "Ehlers' Detrended Synthetic Price oscillator removes trend using dual EMA smoothing";
|
||||
|
||||
_series = new LineSeries(name: "DSP", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# DSP: Detrended Synthetic Price
|
||||
# DSP: Ehlers Detrended Synthetic Price
|
||||
|
||||
> "Remove the trend, reveal the cycles."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("Detrended Synthetic Price (DSP)", "DSP", overlay=false)
|
||||
indicator("Ehlers Detrended Synthetic Price (DSP)", "DSP", overlay=false)
|
||||
|
||||
//@function Calculates Detrended Synthetic Price using Ehlers dual-EMA algorithm
|
||||
//@param source Series to detrend
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("EACP: Ehlers Autocorrelation Periodogram","EACP",overlay=false)
|
||||
indicator("Ehlers Autocorrelation Periodogram (EACP)","EACP",overlay=false)
|
||||
//@function Autocorrelation periodogram dominant cycle estimator
|
||||
//@param source Price input series
|
||||
//@param minPeriod Minimum period to evaluate
|
||||
|
||||
@@ -13,7 +13,7 @@ public class EbswIndicatorTests
|
||||
Assert.Equal(10, indicator.SsfLength);
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("EBSW - Even Better Sinewave", indicator.Name);
|
||||
Assert.Equal("EBSW - Ehlers Even Better Sinewave", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public sealed class EbswIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "EBSW - Even Better Sinewave";
|
||||
Name = "EBSW - Ehlers Even Better Sinewave";
|
||||
Description = "Ehlers' Even Better Sinewave oscillator with high-pass filter, super-smoother, and automatic gain control";
|
||||
|
||||
_series = new LineSeries(name: "EBSW", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -13,7 +13,7 @@ public class HomodIndicatorTests
|
||||
Assert.Equal(50.0, indicator.MaxPeriod);
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("HOMOD - Homodyne Discriminator", indicator.Name);
|
||||
Assert.Equal("HOMOD - Ehlers Homodyne Discriminator", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public sealed class HomodIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "HOMOD - Homodyne Discriminator";
|
||||
Name = "HOMOD - Ehlers Homodyne Discriminator";
|
||||
Description = "Ehlers' Homodyne Discriminator estimates the dominant cycle period using homodyne multiplication and phase angle measurement";
|
||||
|
||||
_cycleSeries = new LineSeries(name: "Cycle", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# HOMOD: Homodyne Discriminator
|
||||
# HOMOD: Ehlers Homodyne Discriminator
|
||||
|
||||
> "The homodyne discriminator reveals instantaneous frequency by multiplying a signal with its delayed self — the phase rotation between samples directly encodes the cycle period."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("HOMOD: Homodyne Discriminator Dominant Cycle","HOMOD",overlay=false)
|
||||
indicator("Ehlers Homodyne Discriminator (HOMOD)","HOMOD",overlay=false)
|
||||
|
||||
//@function Quadrant-aware angle calculation using stable atan2
|
||||
//@param y Imaginary component
|
||||
|
||||
@@ -27,7 +27,7 @@ public sealed class HtDcperiodIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "HT_DCPERIOD - Hilbert Transform Dominant Cycle Period";
|
||||
Name = "HT_DCPERIOD - Ehlers Hilbert Transform Dominant Cycle Period";
|
||||
Description = "Hilbert Transform Dominant Cycle Period indicator measuring the dominant cycle period in price data";
|
||||
|
||||
_periodSeries = new LineSeries(name: "DCPeriod", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# HT_DCPERIOD: Hilbert Transform - Dominant Cycle Period
|
||||
# HT_DCPERIOD: Ehlers Hilbert Transform Dominant Cycle Period
|
||||
|
||||
> "Knowing the cycle period is the master key—it calibrates other indicators to the market's current rhythm."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("HT_DCPERIOD: Hilbert Transform Dominant Cycle Period", "HT_DCPERIOD", overlay=false)
|
||||
indicator("Ehlers Hilbert Transform Dominant Cycle Period (HT_DCPERIOD)", "HT_DCPERIOD", overlay=false)
|
||||
|
||||
//@function Numerically stable atan2 implementation for quadrant-aware angle calculation
|
||||
//@param y Y-coordinate (imaginary/quadrature component)
|
||||
|
||||
@@ -11,7 +11,7 @@ public class HtDcphaseIndicatorTests
|
||||
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("HT_DCPHASE - Hilbert Transform Dominant Cycle Phase", indicator.Name);
|
||||
Assert.Equal("HT_DCPHASE - Ehlers Hilbert Transform Dominant Cycle Phase", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public sealed class HtDcphaseIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "HT_DCPHASE - Hilbert Transform Dominant Cycle Phase";
|
||||
Name = "HT_DCPHASE - Ehlers Hilbert Transform Dominant Cycle Phase";
|
||||
Description = "Hilbert Transform Dominant Cycle Phase indicator measuring the phase angle of the dominant cycle in price data (degrees, -45 to 315)";
|
||||
|
||||
_phaseSeries = new LineSeries(name: "DCPhase", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# HT_DCPHASE: Hilbert Transform - Dominant Cycle Phase
|
||||
# HT_DCPHASE: Ehlers Hilbert Transform Dominant Cycle Phase
|
||||
|
||||
> "The phase advances through a full 360-degree cycle as the dominant cycle completes; rapid phase changes indicate turning points."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("HT_DCPHASE: Hilbert Transform Dominant Cycle Phase", "HT_DCPHASE", overlay=false)
|
||||
indicator("Ehlers Hilbert Transform Dominant Cycle Phase (HT_DCPHASE)", "HT_DCPHASE", overlay=false)
|
||||
|
||||
//@function Numerically stable atan2 implementation for quadrant-aware angle calculation
|
||||
//@param y Y-coordinate (imaginary/quadrature component)
|
||||
|
||||
@@ -11,7 +11,7 @@ public class HtPhasorIndicatorTests
|
||||
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("HT_PHASOR - Hilbert Transform Phasor", indicator.Name);
|
||||
Assert.Equal("HT_PHASOR - Ehlers Hilbert Transform Phasor Components", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public sealed class HtPhasorIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "HT_PHASOR - Hilbert Transform Phasor";
|
||||
Name = "HT_PHASOR - Ehlers Hilbert Transform Phasor Components";
|
||||
Description = "Hilbert Transform Phasor components (InPhase, Quadrature) for cycle analysis";
|
||||
|
||||
_inPhaseSeries = new LineSeries(name: "InPhase", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# HT_PHASOR: Hilbert Transform - Phasor Components
|
||||
# HT_PHASOR: Ehlers Hilbert Transform Phasor Components
|
||||
|
||||
> "Phasors let us measure a cycle's position and strength; trading becomes geometry over time."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("Ehlers Phasor Analysis (PHASOR)", shorttitle="PHASOR", overlay=false)
|
||||
indicator("Ehlers Hilbert Transform Phasor Components (HT_PHASOR)", shorttitle="HT_PHASOR", overlay=false)
|
||||
|
||||
//@function Calculates the Ehlers Phasor Angle, Derived Period, and Trend State.
|
||||
//@param src The source series to analyze.
|
||||
|
||||
@@ -11,7 +11,7 @@ public class HtSineIndicatorTests
|
||||
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("HT_SINE - Hilbert Transform SineWave", indicator.Name);
|
||||
Assert.Equal("HT_SINE - Ehlers Hilbert Transform SineWave", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public sealed class HtSineIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "HT_SINE - Hilbert Transform SineWave";
|
||||
Name = "HT_SINE - Ehlers Hilbert Transform SineWave";
|
||||
Description = "Hilbert Transform SineWave indicator showing Sine and LeadSine for cycle timing";
|
||||
|
||||
_sineSeries = new LineSeries(name: "Sine", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# HT_SINE: Hilbert Transform SineWave
|
||||
# HT_SINE: Ehlers Hilbert Transform SineWave
|
||||
|
||||
> "The Hilbert Transform gives us the phase of the dominant cycle—knowing when to buy and sell becomes a matter of trigonometry."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("HT_SINE: Hilbert Transform - SineWave", "HT_SINE", overlay=false)
|
||||
indicator("Ehlers Hilbert Transform SineWave (HT_SINE)", "HT_SINE", overlay=false)
|
||||
|
||||
//@function Numerically stable atan2 implementation for quadrant-aware angle calculation
|
||||
//@param y Y-coordinate (imaginary/quadrature component)
|
||||
|
||||
@@ -12,7 +12,7 @@ public class SsfdspIndicatorTests
|
||||
Assert.Equal(20, indicator.Period);
|
||||
Assert.Equal(SourceType.Close, indicator.Source);
|
||||
Assert.True(indicator.ShowColdValues);
|
||||
Assert.Equal("SSFDSP - SSF Detrended Synthetic Price", indicator.Name);
|
||||
Assert.Equal("SSFDSP - Ehlers SSF Detrended Synthetic Price", indicator.Name);
|
||||
Assert.True(indicator.SeparateWindow);
|
||||
Assert.True(indicator.OnBackGround);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public sealed class SsfdspIndicator : Indicator, IWatchlistIndicator
|
||||
{
|
||||
OnBackGround = true;
|
||||
SeparateWindow = true;
|
||||
Name = "SSFDSP - SSF Detrended Synthetic Price";
|
||||
Name = "SSFDSP - Ehlers SSF Detrended Synthetic Price";
|
||||
Description = "Ehlers' Super Smooth Filter based Detrended Synthetic Price oscillator for cycle extraction";
|
||||
|
||||
_series = new LineSeries(name: "SSFDSP", color: IndicatorExtensions.Oscillators, width: 2, style: LineStyle.Solid);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# SSFDSP: SSF-Based Detrended Synthetic Price
|
||||
# SSFDSP: Ehlers SSF Detrended Synthetic Price
|
||||
|
||||
> "The Super-Smoother filter provides Butterworth-quality noise rejection—combine two of them and you isolate cycles with surgical precision."
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// The MIT License (MIT)
|
||||
// © mihakralj
|
||||
//@version=6
|
||||
indicator("SSF-Based Detrended Synthetic Price", "SSF-DSP", overlay=false)
|
||||
indicator("Ehlers SSF Detrended Synthetic Price (SSFDSP)", "SSF-DSP", overlay=false)
|
||||
|
||||
//@function Calculates SSF-based Detrended Synthetic Price using dual Super Smooth Filters
|
||||
//@param source Series to detrend
|
||||
|
||||
Reference in New Issue
Block a user