Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: evge » 01 фев 2017, 14:08

Тема: Re: DeltaCumPeriod - кумулятивная Дельта за период

Текст сообщения:

JASON писал(а):Да с построением в АД4 и наложением индикатора на индикатор разобрался.
Хотел скрипт средней как подтверждающий сигнал для стратегии.


вот DeltaCumPeriod с SMA

DelataCumPeriod-SMA-01.png
DelataCumPeriod-SMA-01.png (26.86 КБ) 31400 просмотров


Код: Выделить всё

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

}