Индикаторы объема > DeltaCumOfDay – кумулятивная Дельта за день

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

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

Непрочитанное сообщение evge » 03 июн 2016, 09:59

Геннадий писал(а):Какой меньше врет?


Что означает "врет"?
Они выдают одно и тоже в разном виде.
никогда такого не было и вот опять

Геннадий
Сообщения: 29
Зарегистрирован: 06 мар 2016, 02:11
Поблагодарили: 2 раза

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

Непрочитанное сообщение Геннадий » 06 июн 2016, 16:57

evge писал(а):
Геннадий писал(а):Какой меньше врет?


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


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

Vlad
Сообщения: 8
Зарегистрирован: 22 июл 2016, 18:01

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

Непрочитанное сообщение Vlad » 15 янв 2018, 18:46

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

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

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

Непрочитанное сообщение evge » 16 янв 2018, 17:45

Приветствую!

Можно

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

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, то будет формировать за день.
никогда такого не было и вот опять

Vlad
Сообщения: 8
Зарегистрирован: 22 июл 2016, 18:01

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

Непрочитанное сообщение Vlad » 19 янв 2018, 21:29

evge писал(а):Приветствую!

Можно


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


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

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

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

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

Непрочитанное сообщение evge » 19 янв 2018, 21:47

Vlad писал(а):Вот не пойму как "+" поставить...


палец вверх справа над сообщением :)
никогда такого не было и вот опять

Asp
Сообщения: 59
Зарегистрирован: 20 янв 2020, 11:17
Благодарил (а): 10 раз
Поблагодарили: 1 раз

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

Непрочитанное сообщение Asp » 05 сен 2022, 19:10

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 т.е. чтобы индикатор показывал каждый день!
Мусор в твоём глазу больше уродует картину мироздания чем пятна на солнце

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

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

Непрочитанное сообщение evge » 06 сен 2022, 03:55

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];
  }
никогда такого не было и вот опять


Вернуться в «Индикаторы объема»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость