CandleExist

Функция предназначена для проверки существования свечи на графике цены и объема.

Формат вызова:

BOOLEAN CandleExist(NUMBER index)

Параметры:

Функция принимает в качестве параметра индекс свечи и возвращает «true» если свечка существует, иначе – «false».

Функция определяет свечи, которые не нужно учитывать в расчете индикатора. Такие свечи появляются в случае добавления на одну диаграмму с графиком цены и объема графика по истории значений параметра из Таблицы текущих торгов или при включенной настройке графика «Показывать пустые интервалы». Для таких свечей функции O, H, L, C, V возвращают «nil», а функция T – время пустой свечи.

Пример использования функции для индикатора Moving Average по цене закрытия:

Settings= {
  Name = "Moving Average Lua",
  Period = 9,
  line =
  {
    {
      Name = "Moving Average Lua",
      Color = RGB(90, 110, 200),
      Type = TYPE_LINE,
      Width = 1
    }
  }
}
  
function  Init()
  QUEUE = {}
  SUM = 0
  return 1
end
function OnCalculate(index)
  return Average(index)
end

function Average(indx)
  --если выполняется перерасчет индикатора, то сбрасываем очередь и сумму
  if indx == 1 then
    QUEUE = {}
    SUM = 0
  end
  --если свечка непустая, добавляем ее в очередь и суммируем значение ее закрытия
  if CandleExist(indx) then
    table.insert(QUEUE, {C_value = C(indx)})
    SUM = SUM + QUEUE[#QUEUE].C_value
    --если очередь достигла необходимого периода, то считаем среднее значение
    if #QUEUE == Settings.Period then
      local avg = SUM/Settings.Period
      SUM = SUM - QUEUE[1].C_value
      table.remove(QUEUE, 1)
      return avg
    end
  else
    return nil
  end
end