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

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

Добавлено: 19 окт 2017, 17:23
Den
а вниз сумма 374 пункта, то есть меньше чем на самом деле

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

Добавлено: 19 окт 2017, 17:37
Den
а следующий бар уже разница, но сумма все равно чёто не та

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

Добавлено: 19 окт 2017, 17:47
evge
ну теперь дело за малым доделать как вам надо :) пример то есть

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

Добавлено: 19 окт 2017, 19:42
Den
Он суммирует предыдущее значение КАЖДЫЙ новый бар, а должен суммировать только один раз.
То есть если рост идет 4 бара подряд, он просуммирует 4 раза предыдущее значение падения как на скрине.
Поэтому получаются такие большие цифры.
и суммирует он ОТДЕЛЬНО падение и рост, выдавая два суммарных значения.
Евгений , это решается?

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

Добавлено: 19 окт 2017, 20:46
evge
Den писал(а):Евгений , это решается?


Возможно решается, но т.к. я не понимаю что делает MY.индикатор и вообще идею зачем всё это нужно, то и решения предложить не могу.

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

Добавлено: 19 окт 2017, 21:04
Den
индикатор тут любой , выставляющий вершины.

Идея простая - узнать сумму за день.

я вот не пойму как его заставить суммировать предыдущее значение не каждый новый бар

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

function Initialize()
{
IndicatorName = "1";
AddInput("Input1", Inputs.Candle);   
AddParameter("Period", 5, 0);   
PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   

AddGlobalVariable("CountUp", Types.Int, 0);
AddGlobalVariable("CountDn", Types.Int, 0);

AddGlobalVariable("HH", Types.Double, 0.0);
AddGlobalVariable("LL", Types.Double, 100000000.0);

}

function Evaluate()
{

if (CurrentIndex > 2)
{

if ( Input1.Close[0] < Input1.Close[1] && Input1.Close[1] >= Input1.Close[2] )
{
     if ( Input1.Close[1] > HH )
     {
          CountUp++;
          HH = Input1.Close[1];

          if ( CountUp >= 1 )
          {   
               H[-1] = HH;
               CountDn = 0;
               LL = 1000000000.0;
           }
     }
           
}     

if ( Input1.Close[0] > Input1.Close[1] && Input1.Close[1] <= Input1.Close[2] )
{
     if ( Input1.Close[1] < LL )
     {
          CountDn++;
          LL = Input1.Close[1];

          if ( CountDn >= 1 )
          {   
               L[-1] = LL;
               CountUp = 0;
               HH = 0.0;
          }
      }

       
}     

               H.DrawArrowDown(Color.Red, LineStyles.Solid, 5, Color.Red, 100);
               L.DrawArrowUp(Color.Green, LineStyles.Solid, 5, Color.Green, 100);


}
}



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

Добавлено: 20 окт 2017, 11:18
Den
Евгений, в дополнение он и в таком виде выдает две разные суммы - сумму падения и сумму роста.

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

function Initialize()
{
IndicatorName = "A_DOWN_X";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Lime);
AddShadowSeries("U", DrawAs.Custom, Color.Violet);
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) ) || ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 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);

S = Summa;


}



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

Добавлено: 20 окт 2017, 11:59
evge
Как суммировать за день (с 10-00 до 23-50) показания индикатора , который рассчитывает разницу между ПОСЛЕДНИМИ сигналами (High и Low) ?


Задача: просуммировать значения индикатора от начала до конца дня.

Решение: именно это оно и делает, на каждом баре дня имеется значение вашего индикатора, оно попадает в общую сумму. В следующий день сумма сбрасывается в 0. Если ваш индикатор считает не то что вы описали, то это проблема уже индикатора.

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

Добавлено: 20 окт 2017, 12:25
Den
Какая же это проблема индикатора, если он показывает экстремумы не на каждом баре???

Требуется просуммировать разницу между экстремумами, которые ЕСТЕСТВЕННО будут не на каждом баре.

Где вы видели экстремумы на каждом баре ?

Это проблема прежде всего моя , или ваша, так как ни я ни вы не можем понять элементарную вещь - заставить индикатор

НЕ СУММИРОВАТЬ УЖЕ ПРОСУММИРОВАННОЕ.

А он упорно это делает каждый новый бар.
Хотя НОВОГО значения разницы экстремумов еще нет,А ОН ВСЕ РАВНО СУММИРУЕТ УЖЕ ПРОСУММИРОВАНОЕ
Вроде простая вещь

Такие дела, малята. :)

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

Добавлено: 20 окт 2017, 12:56
evge
Ваш индикатор рисует гистограмму, его значения суммируются так как вы просили с 10 до 23:50 т.е. за сутки сумма всей гистограммы считается в Summa и выводится в серию S. Что не так???

Т.е. какой вопрос, такое и решение :)

Кстати, решение нормальное! Все значения гистограммы просуммировались, как вы и просили.

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

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

Правильная постановка задачи уже пол дела!

Повторю, как поставили задачу так и получили помощь :)