Общие вопросы по разработке > Как суммировать показания за день?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 15:06

Добрый день ,друзья !

Вопрос к Евгению.

Как суммировать за день (с 10-00 до 23-50) показания индикатора , который рассчитывает разницу между ПОСЛЕДНИМИ сигналами (High и Low) ?
Вложения
sdc.png
sdc.png (11.35 КБ) 7495 просмотров

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

Re: Как суммировать показания за день?

Непрочитанное сообщение evge » 19 окт 2017, 15:16

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

Function Inicialize()
{
// ...
AddGlobalVariable("Summa", Types.Double, 0);
// ...
}


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

function Evaluate()
{
// ...
if (BarDate(1) != BarDate(0)) Summa = 0;

Summa += ZnachenieIndicatora;
// ...
}


другой информации о вашем коде и условиях из вопроса у меня нет, поэтому так.
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 15:33

Евгений спасибо за ответ, вот код .

H и L это стрелки на рисунке.

Как в этом случае сумму за день получить?

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

function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Violet);
AddShadowSeries("U", DrawAs.Custom, Color.Lime);
AddSeries("S", DrawAs.Custom, Color.Magenta);
AddGlobalVariable("Summa", Types.Double, 0);


PriceStudy = true;
AddParameter("P", 2, 1);
}

function Evaluate()
{
var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
{
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];
{

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) )

D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);

D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

{

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) )

U = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) ;

U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

}
}
}
}



Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 15:40

ну грубо говоря так он выводит
Вложения
8.png
8.png (15.66 КБ) 7481 просмотр

Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 15:42

.
Вложения
88.png
88.png (16.38 КБ) 7479 просмотров

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

Re: Как суммировать показания за день?

Непрочитанное сообщение evge » 19 окт 2017, 16:03

всё так же как выше и написал,

только так как у индикатора 2 гистограммы U и D, то добавляем обе

Summa += U[0] + D[0];

я конечно не знаю зачем так, но если надо именно сумму значений U,D индикатора, то так.
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 16:14

я конечно не знаю зачем так


просто до другого способа суммирования показаний я не додумался. :)

А как выводить-то итоговое значение Summa?
У меня при условии Summa += U[0] + D[0];
показывает последнее значение , а не сумму за день.

А надо с открытия 10-00 до сейчас (и в конце до 23-50)

Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 16:38

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

function Initialize()
{
AddSeries("S", DrawAs.Custom, Color.Magenta);



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

if (BarDate(1) != BarDate(0)) Summa = 0;

Summa += U[0] + D[0];
Summa = S;
}


так он показывает сумму последних двух значений

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

Re: Как суммировать показания за день?

Непрочитанное сообщение evge » 19 окт 2017, 16:38

эх... код конечно жестокий, зачем нужно в коде столько лишних { и } непонятно

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

function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Violet);
AddShadowSeries("U", DrawAs.Custom, Color.Lime);
AddShadowSeries("S", DrawAs.Custom, Color.Magenta);

AddGlobalVariable("Summa", Types.Double, 0);

PriceStudy = true;
AddParameter("P", 2, 1);
}

function Evaluate()
{

if (BarDate(1) != BarDate(0)) Summa = 0;

var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) )
{
D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);
Summa += D[0];
}

D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) )
{
U = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) ;
Summa += U[0];
}

U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

S = Summa;
S.DrawHistogram();

}

никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 345
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Как суммировать показания за день?

Непрочитанное сообщение Den » 19 окт 2017, 16:57

Пляшем как могём :)
как-то странновато он рассчитывает, если последняя метка вверх , то он показывает 2.352
по меткам сумма за день 750 пунктов.
Это как так?
Вложения
89.png
89.png (26.84 КБ) 7457 просмотров
Последний раз редактировалось Den 19 окт 2017, 17:25, всего редактировалось 1 раз.


Вернуться в «Общие вопросы по разработке»

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

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