Цитата |
---|
Дмитрий написал: 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