Программирование торговых роботов. Урок 1.

Основы понимания работы со свечами
В каждом роботе есть основной метод Execute в котором закладывается основная логика работы робота. Данный метод вызывается каждый раз при получении новой информации по свечам при тестировании, а в реальном времени раз в заданный интервал времени, по умолчанию раз в 200 млсек.
В данном цикле идет перебор свечей.

for (var bar = IndexBar; bar < CandleCount - 1; bar++)

IndexBar – последняя обработанная закрытая свеча

CandleCount – общее количество свечей.

Нумерация свечей идет с 0.

Тестирование
Первый вход в цикл
bar=0

IndexBar=0

CandleCount=2

При выходе из метода Execute

IndexBar=0
Второй вход в цикл
bar=0

IndexBar=0

CandleCount=3

При выходе из метода Execute

IndexBar=1 - последняя обработанная закрытая свеча
Третий вход в цикл
bar=1

IndexBar=1 – анализ алгоритма уже начинается со свечи 1

CandleCount=4

При выходе из метода Execute

IndexBar=2 - последняя обработанная закрытая свеча
IndexBar используется только для ускорения расчетов, чтоб не бегать каждый раз по всему списку свечей. IndexBar изменяется при выходе из метода Execute при появлении новой закрытой свечи.
Реальная торговля
При запуске робота происходит предторговая эмуляция (воссоздает позицию, которая должна быть), т.е. алгоритм пробегается сразу по всем свечам начиная с 0. Например 1000 свечей сохранено по инструменту в ETS, весь этот массив передается в робота (bar=0, IndexBar=0, CandelCount=999). Робот начиная с 0 начинает анализировать. На выходе из метода Execute IndexBar=998. Далее обработка идет раз в 200млсек (по умолчанию). Данные по тикам обрабатываются в ядре программы и преобразуются в таймфреймы используемые в роботах ETS. При увеличения количества свечей в коллекции применяются те же самые правила что и при тестировании.
Часто задаваемые вопросы