| Цитата | 
|---|
Дмитрий написал:  function   OnCalculate (index)     plusdi,n,q  =   getCandlesByIndex  ( "SBAdx" , 1 , 0 , getNumCandles ( "SBAdx" ))   -- get +DI table      minusdi,n,q  =   getCandlesByIndex  ( "SBAdx" , 2 , 0 , getNumCandles ( "SBAdx" ))  -- get -DI table       return  handler()  end 
  function handler(index)     if plusdi[index].close ~= nil and minusdi[index].close ~= nil then  [/CODE]  | 
1) Правильно ли, что  из plusdi[] и minusdi[] значения берутся по индексу index?
Ведь в OnCalculate индексы приходят начиная с 1, а в возвращаемых значениях массивов из getCandlesByIndex  индексы начитаются с 0...
Наверное правильно будет plusdi[index-1].close и minusdi[index-1].close ?
2) Про оптимизации.
Здесь получается, что мы в каждом OnCalculate получаем все свечи с другого графика через getCandlesByIndex(), после чего берём только какое-то одно значение...
думаю будет эффективнее написать так:
    plusdi  =   getCandlesByIndex  ( "SBAdx" , 1 , index-1 , 1)   -- get +DI table 
    minusdi  =   getCandlesByIndex  ( "SBAdx" , 2 , index-1 , 1)  -- get -DI table 
...
и, соответственно, данные брать как
plusdi[0].close и minusdi[0].close