Индикатор BW_MFI_T показывает изменение величины тела бара, приходящееся не единицу объема.
Индикатор имеет такую же раскраску, что и индикатор BW_MFI.
Зеленый бар (тело бара увеличилось и объем вырос) – большее количество участников входит в рынок, т.е. продолжение тенденции.
Синий бар (тело бара увеличилось, но объем упал) – движение без объемов (возможно спекулятивное).
Коричневый бар (тело бара уменьшилось и объем упал) – говорит о пропаже интереса к текущим ценам на рынке.
Розовый бар (тело бара уменьшилось, но объем вырос) – происходит соревнование покупателей и продавцов вследствие примерно равных сил. Обычно, прорыв такого бара дает знать, определяет ли этот бар продолжение тренда или им тренд аннулирован.
Высота столбика индикатора показывает величину тела свечи. Столбик над осью соответсвует белому бару, под осью - черному.
Исходный код взят у AlfaDirect. 2015. OX индикатор BW_MFI и переработан.
Сам индикатор BW_MFI мне не понравился, так как в нем берется разница между максимумом и минимумом бара, делится на объем бара и это соотношение сравнивается с предыдущим баром. Деление на объем очень влияет на окраску столбиков индикатора, что приводит к искажениям. Особенно это заметно для синей раскраски.
Поэтому возникла идея создать индикатор, не имеющий искажений, к тому же визуально легко определяющий направление изменения баров. Индикатор вспомогателный, недостатком его является то, что он показывает направление изменения объема бара, но не саму величину объема. Поэтому его лучше применять в тандеме с индикатором объема.
P.S. обратите внимание, после большого зеленого столбика индикатора видно изменение направления движения цены (или последующий боковик).
Вот код:
Код: Выделить всё
function Initialize()
{
IndicatorName = "BW_MFI_T";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("BW_MFI", DrawAs.Custom, Color.Green, AxisType.ZeroBased);
AddGlobalVariable("FI", Types.Double, 0.0);
}
function Evaluate()
{
// GenGal
// Разработано на основе кода AlfaDirect. 2015. OX
// Основа: BW_MFI (Market Facilitation Index) - Индекс облегчения рынка Билла Вильямса
var a = (Input.Close[0]-Input.Open[0])/1000;
BW_MFI = a;
if (CurrentIndex > 0)
{
if (a > FI && Input.Volume[0] > Input.Volume[1])
{
if (a > 0)
{
BW_MFI.DrawHistogram (Color.Green, Color.Green, 50);
}
else
{
BW_MFI.DrawHistogram (Color.Pink, Color.Pink, 100);
}
}
if (a > FI && Input.Volume[0] < Input.Volume[1])
{
if (a > 0)
{
BW_MFI.DrawHistogram (Color.Blue, Color.Blue, 50);
}
else
{
BW_MFI.DrawHistogram (Color.Brown, Color.Brown, 50);
}
}
if (a < FI && Input.Volume[0] < Input.Volume[1])
{
if (a > 0)
{
BW_MFI.DrawHistogram (Color.Brown, Color.Brown, 50);
}
else
{
BW_MFI.DrawHistogram (Color.Blue, Color.Blue, 50);
}
}
if (a < FI && Input.Volume[0] > Input.Volume[1])
{
if (a > 0)
{
BW_MFI.DrawHistogram (Color.Pink, Color.Pink, 100);
}
else
{
BW_MFI.DrawHistogram (Color.Green, Color.Green, 50);
}
}
}
FI = a;
}
Реальный пример на SIM6 M1