Ok here the promised test and some comments I get from the good guys from my team.
Apparently there are about 3 versions of this. We looked at all of them and none really were in any way profitable. None of them had real trading rules. In the book LW doesn't explain much how it may be used for entries, let alone exits. He suggests that it's best used to spot divergences between the price and ProGo Professional. That seems to be the official rule and we tried to code it and come up with entry and exit rules.
In fact we prefer a simple set of "genuine" rules like crossover/crossunder which doesn't depend on divergences. Divergence detection can get funny and subjective sometimes.
Here are the system rules:
1. Buy when the ProGo Professional line has made a lower low (i.e. pros keep selling) while the price has made a higher low (trough)
2. Sell after 50 days in a trade or,
3. Profit take: +10% or,
4. Stop loss: -10%.
Main system settings:
1. Wealth-Data Nasdaq 100; 10 years (Wealth-Data is the cleanest End of Day data you can get IMO)
2. Commissions = IB
3. 30% equity per trade [low exposure - about 28% even with this high pos.size]
4. Trade from long side only [shorts just lose money]
5. "Use worst trades in portfolio simulation" - Yes this can be a setting and it is important to have with this kind of position sizing rule.
6. The "divergence plotter" settings are by default
The results
Only 114 trades, 60% winning
Net Profit 64% vs 526% of Buy & Hold
Max DD -26% vs -23%
With the code provided below (bottom) you can play around with it. Fidelity customers can get WLP for free provided they have an account with Fidelity (hack who hasn't

).
Finally the code:
The code uses a Community Components
routine for detecting divergences:
/* Show Peak (Trough) divergence between High (Low) and ProGo Professional */
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
//REQUIRES "COMMUNITY COMPONENTS"
namespace WealthLab.Strategies
{
public class DivergencePlotterExample : WealthScript
{
protected override void Execute()
{
//"Pro Go is 2 lines, Close - Open = professionals and Open - Previous Close = amateurs.
//I believe he averages out 14 days and looks for the first line to cross second."
var professionals = SMA.Series(Close - Open,14);
var amateurs = SMA.Series(Open - (Close>>1),14);
professionals.Description = "ProGo Professional";
amateurs.Description = "ProGo Amateur";
var proGo = CreatePane(30,true,true);
PlotSeries(proGo, professionals, Color.Red, WealthLab.LineStyle.Solid, 1);
//PlotSeries(proGo, amateurs, Color.Blue, WealthLab.LineStyle.Solid, 1);
ChartPane divPane = CreatePane(40,true,true);
DataSeries pd = this.PlotPeakDivergence(6, PricePane, High, 10d, proGo, professionals, 15d);
PlotSeries(divPane, pd, Color.Blue, LineStyle.Solid, 2);
DataSeries td = this.PlotTroughDivergence(6, PricePane, Low, 10d, proGo, professionals, 15d);
PlotSeries(divPane, td, Color.Red, LineStyle.Solid, 2);
for(int bar = GetTradingLoopStartBar(14); bar < Bars.Count; bar++)
{
if (IsLastPositionActive)
{
var p = LastPosition;
var isLong = p.PositionType == PositionType.Long;
// if(CrossUnder(bar, professionals, amateurs))
// SellAtMarket(bar+1, p);
// Exit trade after N bars
if ( bar+1 - p.EntryBar >= 50 )
ExitAtMarket( bar+1, p, "Time-Based" );
else
if(!ExitAtStop( bar+1, p, isLong ? p.EntryPrice * 0.9 : p.EntryPrice * 1.1, "Stop Loss 10%" ))
ExitAtLimit( bar+1, p, isLong ? p.EntryPrice * 1.10 : p.EntryPrice * 0.90, "Profit Target 10%" );
}
else
{
// if(CrossOver(bar, professionals, amateurs))
// BuyAtMarket(bar+1);
// if(pd[bar] <= -1.0)
// ShortAtMarket(bar+1);
// else
if(td[bar] >= 1.0)
BuyAtMarket(bar+1);
}
}
}
}
}
You should be able to just import it in either WLP or WLD.
Hope this shares some light to the Pros.