Пользовательские индикаторы > DeltaDay: соотношение ask/bid в течение дня

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение BugsDigger » 27 апр 2020, 15:35

Модификация DeltaDay, когда-то раньше представленного oxi.
Добавлена возможность отображения накапливаемой разницы ask-bid в процентах к общему объему сделок в течение дня.

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

function Initialize()
{
 IndicatorName = "DeltaDay";
 AddInput("Input", Inputs.Candle);
 PriceStudy=false;

 AddParameter("Relative", 0);
 AddSeries("DeltaDay", DrawAs.Custom, Color.Gray);
 AddSeries("DeltaOpen", DrawAs.Custom, Color.Transparent);
 AddLevel(0, Color.Black, "DeltaDay");
 
 AddGlobalVariable("accdlt", Types.Double, 0.0);
 AddGlobalVariable("accvol", Types.Double, 0.0);
}

function Evaluate()
{
 // AlfaDirect 2014 (Исправлено 2016).
 // Кумулятивная Дельта Дневная - интеграл разниц между объемами покупателей и продавцов за день

 // BugsDigger (2020): добавлена возможность отображения накапливаемой разницы в процентах к общему объему сделок

 bool r=(Relative!=0);
 double d=Input.VolumeAsk[0]-Input.VolumeBid[0];

 double b;
 if(BarDate(0)>BarDate(-1) || CurrentIndex<1) accdlt=accvol=b=0.0;
 else b=(r ? 0.0 : DeltaDay[-1]);
 
 if(r)
 {
  d+=accdlt; accdlt=d;
  double v=Input.Volume[0];
  v+=accvol; accvol=v;
  if(v!=0.0) d=d/v*100.0;
  DeltaDay=d;
 }
 else DeltaDay=b+d;

 DeltaOpen=b;

 Color c=(d>=0.0 ? Color.Green : Color.Red);
 DeltaDay.DrawHistogram(DeltaOpen, c, Line.Solid, 1, c, 100);
}


DeltaDay.png
Последний раз редактировалось BugsDigger 30 апр 2020, 14:50, всего редактировалось 1 раз.

66rus
Сообщения: 8
Зарегистрирован: 12 ноя 2019, 11:19
Благодарил (а): 1 раз

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение 66rus » 30 апр 2020, 10:51

Добрый день. Интересует пару вопросов.
Я так понял идет рассчет именно рыночных объемов на покупку и продажу?
Начало расчета с 10-00 и каждый день начинается по новой?
Это я к чему все спрашиваю. Сравниваю свой вариант, который реализован трансляцией из квика обезличенных сделок
в эксель. И в нем идет онлайн расчет. И цифры не совпадают с индикатором.
Заранее спасибо за ответ. ;)

BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение BugsDigger » 30 апр 2020, 14:49

Ну по исходнику вроде все очевидно: от начала дня суммируется Ask-Bid.
Если есть разница - приведите несколько цифр от начала дня, попробуем выяснить, откуда она берется.

66rus
Сообщения: 8
Зарегистрирован: 12 ноя 2019, 11:19
Благодарил (а): 1 раз

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение 66rus » 01 май 2020, 07:23

BugsDigger писал(а):Ну по исходнику вроде все очевидно: от начала дня суммируется Ask-Bid.
Если есть разница - приведите несколько цифр от начала дня, попробуем выяснить, откуда она берется.

Вот за вчерашний день собранные данные обезличенных сделок https://cloud.mail.ru/public/5Msr/4NohqF2nU

BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение BugsDigger » 01 май 2020, 17:38

Умм... А с чем сравнивать?
Я никогда фьючерсов не касался, даже не знаю, что там.
Писал/тестировал на SBER. вижу в терминале "человеческие" значения объемов в заданном таймфрейме.
Если, скажем, выбираю RTS, то там объемы выглядят как-то странно, значения какие-то в них дикие: практически все "60", ну и несколько "58". Чепуха какая-то.

66rus
Сообщения: 8
Зарегистрирован: 12 ноя 2019, 11:19
Благодарил (а): 1 раз

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение 66rus » 01 май 2020, 19:49

BugsDigger писал(а):Умм... А с чем сравнивать?
Я никогда фьючерсов не касался, даже не знаю, что там.
Писал/тестировал на SBER. вижу в терминале "человеческие" значения объемов в заданном таймфрейме.
Если, скажем, выбираю RTS, то там объемы выглядят как-то странно, значения какие-то в них дикие: практически все "60", ну и несколько "58". Чепуха какая-то.

Я в программировании индюков не очень силен. Но вроде расчет идентичный с моим.
Если расчеты одинаковы, то наводит на мысль, что ленты сделок разные в квике и в альфадиректе.
А есть возможность идентичный для квика сделать индюк? Чтобы сравнить.

BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение BugsDigger » 02 май 2020, 07:06

Я только в АД играю, сорри.

66rus
Сообщения: 8
Зарегистрирован: 12 ноя 2019, 11:19
Благодарил (а): 1 раз

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение 66rus » 17 май 2020, 18:10

BugsDigger писал(а):Я только в АД играю, сорри.

Приветствую. А можешь добавить вариант, чтобы считал за неделю?

66rus
Сообщения: 8
Зарегистрирован: 12 ноя 2019, 11:19
Благодарил (а): 1 раз

Re: DeltaDay: соотношение ask/bid в течение дня

Непрочитанное сообщение 66rus » 17 май 2020, 18:27

Похоже сам разобрался

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

function Initialize()
{
 IndicatorName = "DeltaDayWeek";
 AddInput("Input", Inputs.Candle);
 PriceStudy=false;

 AddParameter("Relative", 0);
 AddSeries("DeltaDay", DrawAs.Custom, Color.Gray);
 AddSeries("DeltaOpen", DrawAs.Custom, Color.Transparent);
 AddLevel(0, Color.Black, "DeltaDay");
 
 AddGlobalVariable("accdlt", Types.Double, 0.0);
 AddGlobalVariable("accvol", Types.Double, 0.0);
}

function Evaluate()
{
 // AlfaDirect 2014 (Исправлено 2016).
 // Кумулятивная Дельта Дневная - интеграл разниц между объемами покупателей и продавцов за день

 // BugsDigger (2020): добавлена возможность отображения накапливаемой разницы в процентах к общему объему сделок

 bool r=(Relative!=0);
 double d=Input.VolumeAsk[0]-Input.VolumeBid[0];

 double b;
 if(BarDate(0).DayOfWeek<BarDate(-1).DayOfWeek || CurrentIndex<1) accdlt=accvol=b=0.0;
 else b=(r ? 0.0 : DeltaDay[-1]);
 
 if(Relative!=0)
 {
  d+=accdlt; accdlt=d;
  double v=Input.Volume[0];
  v+=accvol; accvol=v;
  if(v!=0.0) d=d/v*100.0;
  DeltaDay=d;
 }
 else DeltaDay=b+d;

 DeltaOpen=b;

 Color c=(d>=0.0 ? Color.Green : Color.Red);
 DeltaDay.DrawHistogram(DeltaOpen, c, Line.Solid, 1, c, 100);
}



Вернуться в «Пользовательские индикаторы»

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

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