открыл я то что написано в тслабе:
using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;

namespace WAD_
{
public class WAD : IBar2DoubleHandler, IContextUses
{
public IList<double> Execute(ISecurity source)
{
var Close = source.ClosePrices;
var High = source.HighPrices;
var Low = source.LowPrices;
IList<double> wad1 = new List<double>(Close.Count);
double wad_v=0;
double AD, TRH, TRL;

wad1.Add(wad_v);

for (int i = 1; i < Close.Count; i++)
{
TRH = Math.Max(High[i], Close[i-1]);
TRL = Math.Min(Low[i], Close[i-1]);
if(Close[i] > Close[i-1])
AD = Close[i] - TRL;
else
if(Close[i] < Close[i-1])
AD = Close[i] - TRH;
else
AD = 0;
wad_v=wad1[i-1]+AD;
wad1.Add(wad_v);
}
return wad1;
}

public IContext Context { get; set; }
}
}


это тоже самое (всё правильно или нет) как написано в квике:

Вычисление:
CumWADn = CumWadn-1 + WADn,

где:

WADn = PRICEn - TL, если PRICEn > PRICEn-1,
WADn = PRICEn - TH, если PRICEn < PRICEn-1,
WADn = 0, если PRICEn = PRICEn-1,
TH = max(PRICEn-1, HIGHn) - истинный диапазон пиков,
TL = min(PRICEn-1, LOWn) – истинный диапазон донышек,
PRICEn – цена закрытия в n-ом интервале,
HIGH – максимальное значение цены в n-ом интервале,
LOW – минимальное значение цены в n-ом интервале.