Оставьте свои данные, чтобы скачать программу
Платформа работает на Windows
Нажимая кнопку, вы даете нам право на обработку информации о себе и соглашаетесь с политикой конфиденциальности

Программирование торговых роботов. Урок 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. При увеличения количества свечей в коллекции применяются те же самые правила что и при тестировании.
Часто задаваемые вопросы
Не понятно почему CandleCount больше IndexBar не на 1, а на 2. Тогда получается анализируем не текущую, не предыдущую, а так сказать позапрошлую свечу?
Если в коллекции имеется 5 свечей. CandleCount=5. В C# списки и коллекция начинают нумерацию с нуля, т.е. Первая свеча будет иметь индекс 0, вторая закрытая свеча = 1, третья закрытая свеча – 2, четвертая закрытая свеча – 3, текущая формирующаяся свеча – 4. В цикле for (var bar = IndexBar; bar < CandleCount - 1; bar++) – цикл проходит только по закрытым свечам.
Оставьте свои данные, чтобы скачать программу
Платформа работает на Windows
Нажимая кнопку, вы даете нам право на обработку информации о себе и соглашаетесь с политикой конфиденциальности