Hilbert Transform | HTDCPhase

Modified on 2015/11/13 12:51 by Eugene — Categorized as: Community Indicators

Syntax

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

Parameter Description

ds The source DataSeries, usually AverageSeries

Description

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.

Interpretation

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.



Calculation

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 

Example

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 ); } } }