JASON писал(а):Да с построением в АД4 и наложением индикатора на индикатор разобрался.
Хотел скрипт средней как подтверждающий сигнал для стратегии.
вот DeltaCumPeriod с SMA
Код: Выделить всё
function Initialize()
{
IndicatorName = "DeltaCumPeriodSMA";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 100, 1);
AddParameter("PeriodMA", 20, 1);
AddSeries("DeltaCum", DrawAs.Custom, Color.Gray);
AddSeries("DeltaOpen", DrawAs.Custom, Color.Gray);
AddSeries("MA", DrawAs.Line, Color.Blue);
AddGlobalVariable("s", Types.DoubleList);
AddGlobalVariable("SUM", Types.Double, 0.0);
AddLevel(0, Color.Gray, "DeltaCum");
}
function Evaluate()
{
// AlfaDirect 2016. OX
// Кумулятивная Дельта за период
// evge 01.02.2017 http://alfadirect4.ru
// добавлена SMA
// Добавляем новую дельту в лист
var Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];
s.Add(Delta);
// Если точек больше периода убираем первую дельту из листа
if ( CurrentIndex >= Period )
s.RemoveAt(0);
// Считаем сумму
DeltaCum = s.Sum();
// Рисование
if ( CurrentIndex > 0 )
{
DeltaOpen = DeltaCum[-1];
if ( DeltaCum > DeltaCum[-1] )
DeltaCum.DrawHistogram(DeltaOpen, Color.Green, Line.Solid, 1, Color.Green, 50);
else
DeltaCum.DrawHistogram(DeltaOpen, Color.Red, Line.Solid, 1, Color.Red, 50);
if ( CurrentIndex < PeriodMA )
{
SUM = SUM + DeltaCum[0];
MA = SUM / (CurrentIndex + 1);
}
else
{
SUM = SUM + DeltaCum[0] - DeltaCum[(int)PeriodMA] ;
MA = SUM / PeriodMA;
}
} //CI > 0
}