Log in to see Cloud of Tags

Wealth-Lab Wiki

Hilbert Transform | HTDCPhase



public HTDCPhase(DataSeries ds, string description)
public static HTDCPhase(DataSeries ds)

Parameter Description

ds The source DataSeries, usually AverageSeries


The Hilbert Transform is a technique used to generate inphase and quadrature components of a de-trended real-valued "analytic-like" signal (such as a Price Series) in order to analyze variations of the instantaneous phase and amplitude.. HTDCPhase returns the Hilbert Transform Phase of the Dominant Cycle. The Dominant Cycle Phase lies in the range of 0 to 360 degrees.

The following indicator was implemented after fundtimer's calculation for WL4 but this implementation results is a somewhat different calculation than in Wealth-Lab 4.


The DC Phase at a specific bar gives the phase position from 0 to 360 degrees within the current Hilbert Transform Period instantaneously measured at that bar. It is meaningful only during a cyclic period of the analytic signal waveform (price series) being measured. Its transition from 360 degrees to 0 degrees can be used to designate the start of a new cycle. It can also be utilized to signal the start or end of trending or cyclic periods. Departure from a constant rate change of phase is a sensitive way to detect the end of a cycle mode. See the examples.


More detailed information concerning the calculation of the Hilbert Transform related functions can be found on the Mesa Software site.

The basic flow and simplified pseudo code for the computation for the Dominant Cycle Period is:

Compute the Hilbert Transform

{Detrend Price}
{Compute InPhase and Quadrature components}

Compute the Period of the Dominant Cycle

{Use ArcTangent to compute the current phase}
{Resolve the ArcTangent ambiguity}
{Compute a differential phase, resolve phase wraparound, and limit delta phase errors}
{Sum DeltaPhases to reach 360 degrees. The sum is the instantaneous period.}
{Resolve Instantaneous Period errors and smooth}

Compute Dominant Cycle Phase

Return the Dominant Cycle Phase at the current bar of the Hilbert Transform Period measured at that bar 


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;

namespace WealthLab.Strategies { public class MyStrategy : WealthScript { protected override void Execute() { // Example - Plot the phase of the Dominant Cycle HTDCPhase htdc = HTDCPhase.Series( AveragePrice.Series( Bars ) ); ChartPane PhasePane = CreatePane( 50, true, true ); PlotSeries( PhasePane, htdc, Color.Blue, LineStyle.Solid, 1 ); } } }

Important Disclaimer: The information provided by Wealth-Lab is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security.  The owner of Wealth-Lab.com assumes no liability resulting from the use of the material contained herein for investment purposes. By using this web site, you agree to the terms of this disclaimer and our Terms of Use.

ScrewTurn Wiki. Some of the icons created by FamFamFam.