Илья (Автор тем)

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

Страницы: 1
Индикаторы. OnCalculate. Количество полных проходов по всем свечам
 
Доброго времени суток.

Вот код примитивного индикатора.
Код
name="light"

Settings = {}
Settings.Name = name;
Settings.line = {};
Settings.step = 0
Settings.secId = ''
Settings.size = 0

function OnCalculate(index)
  
  local _ds = nil
  
  if index == 1 then
    
    _ds = getDataSourceInfo()
    Settings.secId = _ds.sec_code
    
    Settings.size = getNumCandles(Settings.secId)    
    Settings.step = Settings.step + 1
    
  end

  PrintDbgStr('OnCalculate. Settings.secId '..Settings.secId..' Index '..index..' . Step : '..Settings.step..' size : '..Settings.size)
  
  return 0
  
end
--------
function Init()
  
  local t = Settings.line;
  
  t[#t+1] = { Name = 'zero', Color = RGB(0,128,255), Type = 0, Width = 1}
  
  return #t
  
end
Вопрос такой:

Если на график предварительно добавить этот индикатор, то при запуске терминала функция OnCalculate трижды пробегает по всем свечам.
Если при запущенном терминале добавить этот индикатор на график, функция OnCalculate пробегает по всем свечам дважды.

Функция OnInit всегда запускается один раз.

Это баг, фича или где-то настройки какие-то есть?

Какие возможны варианты для расчета показателя только один раз?

С уважением, Илья
Индикаторы. Программное изменение Settings для инициирования OnChangeSettings
 
Добрый день.

Есть основной скрипт, в котором в функции main идет расчет (серверная часть).
Необходимо передать его результат в индикатор (клиентская часть) для отображения на графике, но только в том случае, если значение изменилось.

Сейчас данные для отображения в индикатор передаются при помощи стороннего модуля socket при срабатывании функции OnCalculate в индикаторе. То есть, чтобы отобразить новые данные, индикатор должен обратиться к основному скрипту, и уже тогда основной скрипт отправляет ему данные.
Но так как инструментов торговли пара десятков и для некоторых функция OnCalculate может очень часто срабатывать из-за интенсивности торгов, хотелось бы оптимизировать этот момент.

Из документации вычитал, что в индикаторе всего три функции обратного вызова: OnCalculate, OnChangeSettings и OnDestroy.

Посоветуйте, пожалуйста, как можно оптимизировать данный алгоритм:

1. передачу данных из основного скрипта в скрипт индикатора (без использования файлов)
2. Инициировать передачу данных в индикатор со стороны основного скрипта (уменьшить частоту обращения индикатора к основному скрипту)
3. Есть ли возможность из основного скрипта инициировать событие для функции OnChangeSettings ?
Неполные лоты валюта. Коды класса и инструментов
 
Всем доброго дня.

У меня брокер ВТБ. Спросил у их техподдержки, но они не смогли (или не захотели) ответить.

Хочу попробовать написать скрипт для торговли валютами (для начала евро, доллар).
Подскажите, какие надо указывать коды класса и инструментов (для неполных лотов).

Буду благодарен за любую помощь.
Описание статусов TRADESTATUS
 
Всем доброго времени суток.

При запросе информации параметра "TRADESTATUS" по акции при помощи вызова функции "getParamEx" можно получить несколько числовых значений.
Например: 0 - сессия закрыта, 1 - сессия доступна для торгов. А вот что означают "4","5" ? Причем отловил такую последовательность смены статусов - 1,0,4,5,0
Что можно делать при статусах 4,5 ? и есть ли статусы 2,3 ?
Страницы: 1
Наверх