Страница 2 из 2

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 03 июн 2016, 09:59
evge
Геннадий писал(а):Какой меньше врет?


Что означает "врет"?
Они выдают одно и тоже в разном виде.

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 06 июн 2016, 16:57
Геннадий
evge писал(а):
Геннадий писал(а):Какой меньше врет?


Что означает "врет"?
Они выдают одно и тоже в разном виде.


Я в смысле какой практичней? :)

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 15 янв 2018, 18:46
Vlad
Всем привет!
Вопрос - можно объединить описанные здесь два индикатора, чтобы не плодить? Добавить во второй (который для периода) возможность вместо периода указать = День, и тогда в одном индикаторе можно будет выбирать, что ему показывать - кому как удобней.
Спасибо.

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 16 янв 2018, 17:45
evge
Приветствую!

Можно

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

function Initialize()
{
IndicatorName = "DeltaCumX";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 100, 1); // Если период = 0, то рисуем кум.дельту за день
AddSeries("DeltaCum", DrawAs.Custom, Color.Gray);
AddSeries("DeltaOpen", DrawAs.Custom, Color.Gray);
AddGlobalVariable("s", Types.DoubleList);
AddLevel(0, Color.Gray, "DeltaCum");
}

function Evaluate()
{
// AlfaDirect 2016. OX
// Кумулятивная Дельта за период или за день

// evge 16.01.2018 http://alfadirect4.ru
// добавлена возможность формирования дельты за день или за период

var Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];
s.Add(Delta);
// Если точек больше периода убираем первую дельту из листа
if ( CurrentIndex >= Period )
s.RemoveAt(0);

if (Period == 0)
{
 if ( CurrentIndex < 1 || BarTime() == AsTime(10, 0, 0) )
  {
     DeltaCum = Input.VolumeAsk[0] - Input.VolumeBid[0];
  }
  else
  {
    DeltaCum = DeltaCum[-1] + Input.VolumeAsk[0] - Input.VolumeBid[0];
    DeltaOpen = DeltaCum[-1];
  }
}
else
{
   // Считаем сумму
   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);

}


Если Period зададим 0, то будет формировать за день.

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 19 янв 2018, 21:29
Vlad
evge писал(а):Приветствую!

Можно


Если Period зададим 0, то будет формировать за день.


Спасибо. При первой возможности попробую...

Вот не пойму как "+" поставить...

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 19 янв 2018, 21:47
evge
Vlad писал(а):Вот не пойму как "+" поставить...


палец вверх справа над сообщением :)

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 05 сен 2022, 19:10
Asp
evge писал(а):Приветствую!

Можно

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

function Initialize()
{
IndicatorName = "DeltaCumX";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 100, 1); // Если период = 0, то рисуем кум.дельту за день
AddSeries("DeltaCum", DrawAs.Custom, Color.Gray);
AddSeries("DeltaOpen", DrawAs.Custom, Color.Gray);
AddGlobalVariable("s", Types.DoubleList);
AddLevel(0, Color.Gray, "DeltaCum");
}

function Evaluate()
{
// AlfaDirect 2016. OX
// Кумулятивная Дельта за период или за день

// evge 16.01.2018 http://alfadirect4.ru
// добавлена возможность формирования дельты за день или за период

var Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];
s.Add(Delta);
// Если точек больше периода убираем первую дельту из листа
if ( CurrentIndex >= Period )
s.RemoveAt(0);

if (Period == 0)
{
 if ( CurrentIndex < 1 || BarTime() == AsTime(10, 0, 0) )
  {
     DeltaCum = Input.VolumeAsk[0] - Input.VolumeBid[0];
  }
  else
  {
    DeltaCum = DeltaCum[-1] + Input.VolumeAsk[0] - Input.VolumeBid[0];
    DeltaOpen = DeltaCum[-1];
  }
}
else
{
   // Считаем сумму
   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);

}


Если Period зададим 0, то будет формировать за день.



Не прорисовывается первая свеча если поставить значение 0 т.е. чтобы индикатор показывал каждый день!

Re: DeltaCumOfDay – кумулятивная Дельта за день

Добавлено: 06 сен 2022, 03:55
evge
1. Исправлена отрисовка первого бара от начала дня при Period = 0
2. Определение первого бара дня по дате бара, чтобы работало на таймфреймах с началом дня не равным 10:00

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

function Initialize()
{
IndicatorName = "DeltaCumX";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 100, 1); // Если период = 0, то рисуем кум.дельту за день
AddSeries("DeltaCum", DrawAs.Custom, Color.Gray);
AddSeries("DeltaOpen", DrawAs.Custom, Color.Gray);
AddGlobalVariable("s", Types.DoubleList);
AddLevel(0, Color.Gray, "DeltaCum");
}

function Evaluate()
{
// AlfaDirect 2016. OX
// Кумулятивная Дельта за период или за день

// evge 16.01.2018 http://alfadirect4.ru
// добавлена возможность формирования дельты за день или за период

var Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];
s.Add(Delta);
// Если точек больше периода убираем первую дельту из листа
if ( CurrentIndex >= Period )
s.RemoveAt(0);

if (Period == 0)
{
 if ( CurrentIndex < 1 || BarDate(0) != BarDate(1) )
  {
     DeltaOpen = 0;
     DeltaCum = Input.VolumeAsk[0] - Input.VolumeBid[0];
  }
  else
  {
    DeltaCum = DeltaCum[-1] + Input.VolumeAsk[0] - Input.VolumeBid[0];
    DeltaOpen = DeltaCum[-1];
  }
}
else
{
   // Считаем сумму
   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 < 1 || BarTime() <= AsTime(10, 0, 0) )
  {
     DeltaCum = Input.VolumeAsk[0] - Input.VolumeBid[0];
  }

стало

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

 if ( CurrentIndex < 1 || BarDate(0) != BarDate(1) )
  {
     DeltaOpen = 0;
     DeltaCum = Input.VolumeAsk[0] - Input.VolumeBid[0];
  }