Traders' Tip text
This month's article by Melvin Dickover presents a new framework for discovering supply and demand pools and creating dependable support and resistance lines that claim to identify the prices where those pools are located on the chart. The underlying method is quite simple to grasp.
Because drawing the Defended Price Lines (DPLs) is to some extent a heuristic process, the example strategy plots the DPLs using a rudimentary algorithm: a line is drawn when either the Relative Volume or Freedom of Movement jumps 2 or more standard deviations away from the mean. We recommend using that only as a starting point, though. To avoid getting distracted by too many DPLs, pinpoint the most influential ones by considering such criteria as clustering behavior, strong momentum and high volume.
Figure 1. A Wealth-Lab 6 chart that illustrates how the DPLs can be plotted following some of the rules from Mr.Dickover's article. The DPLs are the blue lines on a Daily chart of ADM. The Relative Volume and Freedom of Movement indicators are plotted on the bottom pane for reference purposes.To hide the complexity and make the process easier, the two new indicators (Relative Volume and Freedom of Movement) have been added to the Wealth-Lab
TASCIndicators library v2014.03 (or higher). To execute the included sample code, Wealth-Lab users need to install (or update) the latest version of the TASCIndicators library from the
Extensions section of our website if they haven't already done so, and restart Wealth-Lab.
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using TASCIndicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
int period = 60;
double d = 2;
DataSeries relVol = Close*0; relVol.Description = "Relative Volume";
DataSeries theFoM = Volume*0; theFoM.Description = "Freedom of Movement";
for(int bar = 0; bar < Bars.Count; bar++)
{
relVolbar = RelVol.Series(Bars,period)bar > 0 ? RelVol.Series(Bars,period)bar : 0;
theFoMbar = FOM.Series(Bars,period)bar > 0 ? FOM.Series(Bars,period)bar : 0;
}
HideVolume();
ChartPane r = CreatePane( 30,false,true );
PlotSeries( r, relVol, Color.Black, LineStyle.Histogram, 3 );
ChartPane f = CreatePane( 30,false,true );
PlotSeries( f, theFoM, Color.Black, LineStyle.Histogram, 3 );
for(int bar = 1; bar < Bars.Count; bar++)
{
if (relVolbar <= d)
SetSeriesBarColor( bar, relVol, Color.DarkGray);
if (theFoMbar < d)
SetSeriesBarColor( bar, theFoM, Color.DarkGray);
if (theFoMbar > d || relVolbar > d) // Draw DPLs
{
DrawLine(PricePane,bar,Closebar,Bars.Count-1,Closebar,Color.Blue,LineStyle.Solid,1);
}
}
}
}
}
Eugene
Wealth-Lab team
www.wealth-lab.com