Александр (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Евгений, я снимаю свой вопрос.
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Борис, спасибо большое!!!
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Цитата
Evgeniy Karnaukhov написал:
В этой функции такой возможности нет. Так как в принципе невозможно определить, какая сделка в периоде свечки будет последней.
Евгений,  т. к. при изменении параметров индикатор пересчитывается несколько раз (от одного до трёх) вместо одного раза,  то возник вопрос, как определить, какой из этих расчётов окончательный. Это не вопрос о том, какая сделка последняя на свече, после которой будет переход к следующей свече. Историю проблемы прояснил Борис Гудылин в своём посте.
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Спасибо, Николай.
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Ещё вопрос по функции SetValue. Она не работает по последней формирующейся свече?
Код
function OnCalculate(index)
    local i1 = index - 1
    local i2 = index 
   
    if O(i1) == nil or O(i2) == nil then return end
    SetValue(i2, 1, O(i2))          -- так не работает
--  SetValue(i1, 1, O(i1))           -- так работает               
end

как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Беру тестовый индикатор:

Settings =
{
       Name = "xTest",
       param = 100,
      line=
       {
               {
                       Name = "Test",
                       Color = RGB(0, 128, 0),
                       Type = TYPE_LINE,
                       Width = 2
               }
                     
       }
}

function Init()
       return  1
end

function OnCalculate(index)

if index > 3 then return end
message("index="..index.."  param="..Settings.param)
end

Прицепляю индикатор к графику и  в зависимости от выполняемой операции получаю следующие результаты.

Если при добавлении индикатора одновременно изменил параметр с 100 на 200, получаю такие сообщения (от более ранних к поздним)index=1 param=100
index=2 param=100
index=3 param=100
index=1 param=200
index=2 param=200
index=3 param=200
index=1 param=200
index=2 param=200
index=3 param=200
Видно, что  произошло 3 расчёта индикатора, первый расчёт с параметром по умолчанию, хотя с таким параметром запуска вообще не было, т.к. в индикаторе при добавлении сразу менял параметр на 200.

Далее в уже прицепленном индикаторе меняю параметр с 200 на 300 и получаю:
index=1 param=300
ndex=2 param=300
ndex=3 param=300
index=1 param=300
ndex=2 param=300
ndex=3 param=300
Т.е. в этот раз индикатор рассчитывался 2 раза.

При смене таймфрейма, получаю:
index=1 param=300
ndex=2 param=300
ndex=3 param=300
Индикатор рассчитывался один раз.

Вопрос: как в функции OnCalculate определить, что идёт окончательный расчёт индикатора.
как определить окончательный расчет индикатора, при создании или редактировании индикатор рассчитывается несколько раз
 
Здравствуйте. При создании или редактировании индикатора расчёт индикатора происходит несколько раз, каждый раз расчет производится, начиная с первой свечи и заканчивая последней. Как определить, какой расчет окончательный? Проблема ещё в том, что при добавлении нового индикатора на график с одновременным изменением параметров в Setting ( последовательность действий: редактировать / добавить / далее меняем параметры индикатора и только затем применить или OK), расчёт производится 3 раза, при этом первый расчёт производится с параметрами по умолчанию, т. е. не изменёнными. При изменении параметров уже существующего на графике индикатора расчёт производится 2 раза, оба раза с уже изменёнными параметрами. Если меняем таймфрейм или если создаём копию окна, в котором есть индикатор, расчёт производится 1 раз. Проверял, добавляя индикатор на чистый график цены. Версия 8.9.0.107
Страницы: 1
Наверх