Перейти к содержанию

Выполнение команд cTrader CLI

В этой статье объясняется, как устроены команды cTrader CLI, как работает аутентификация и как получать данные счетов, цены и исторические данные.

Структура команды

Все команды cTrader CLI имеют одинаковую структуру:

ctrader-cli <command> [arguments] [options]
  • Параметры начинаются с префикса. -- обозначает длинную форму, а - — короткую (--symbol и -s равнозначны).
  • Значение параметра отделяется пробелом или знаком равенства. Обе формы, --symbol EURUSD и --symbol=EURUSD, допустимы.
  • Аргументы — это позиционные значения без префикса. Путь к файлу .algo является аргументом.
  • Значения с пробелами необходимо заключать в одинарные или двойные кавычки, например '/opt/my cbots/trend cbot.algo'. В пределах одной команды последовательно используйте один тип кавычек.

Аутентификация

В cTrader CLI предусмотрены два режима аутентификации. Оба используют файл учетных данных, который вы создаете при настройке.

Режим Обязательные параметры Типичные команды
Пакетный --ctid и --pwd-file periods, accounts, symbols, metadata, run, backtest
Интерактивный --ctid, --password или --pwd-file и -q account, orders, price, candles, positions, exposure, alerts, команды индикаторов

Примечание

Команды пакетного режима не принимают --password. Интерактивные команды принимают как --password, так и --pwd-file.

Команды accounts, symbols, metadata, run и backtest доступны в обоих режимах. В зависимости от указанных параметров они выполняются в пакетном или интерактивном режиме:

  • Пакетный режим — считывает учетные данные из --pwd-file (или --broker) и выполняет команду без взаимодействия с пользователем.
  • Интерактивный режим — использует --password и -q (либо любой параметр конкретной команды) для интерактивного вызова.

Идентификаторы таймфреймов

Многие команды принимают значение --period. Выполните ctrader-cli periods, чтобы вывести все поддерживаемые идентификаторы. Идентификаторы охватывают минуты, часы, дни, недели и месяцы, а также тики, Renko, диапазонные бары и варианты Heikin Ashi. При распознавании идентификаторов регистр букв не учитывается.

Единицы объема

--volume принимает объем в единицах базовой валюты или лотах. Используйте --volume-type=units (по умолчанию) или --volume-type=lots, чтобы выбрать способ интерпретации объема. Для большинства валютных пар Forex 100 000 единиц соответствуют одному стандартному лоту.

При --volume-type=lots Единицы базового актива
--volume=1 100 000
--volume=0.1 10 000
--volume=0.01 1 000

Предупреждение

Для металлов, индексов и криптовалют размер лота зависит от инструмента. Поэтому одинаковое значение --volume=1 может открыть позицию большего размера, чем вы предполагали. Перед торговлей проверьте значение lotSize для инструмента:

ctrader-cli symbol --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 -q --symbol=XAUUSD

Например, если у XAUUSD значение lotSize: 100, то --volume=1 --volume-type=lots открывает позицию объемом 100 единиц.

Даты и время

Все даты и время в cTrader CLI указываются в UTC. CLI никогда не использует местный часовой пояс компьютера или время сервера брокера.

Для вывода команд и ввода дат UTC применяется следующим образом:

  • Вывод: все временные метки в JSON указываются в UTC в формате ISO 8601 с Z, например 2026-10-08T14:05:00.000Z.
  • Интерактивные команды (candles, deals, orders-history, а также backtest при запуске с -q): --from и --to принимают только дату в формате yyyy-MM-dd, dd/MM/yyyy, dd-MM-yyyy или yyyy/MM/dd. Дата обозначает календарный день по UTC.
    • Для deals и orders-history параметр --to включает весь день до 23:59:59 UTC.
    • Для candles параметр --to обозначает начало дня (00:00 UTC). Чтобы включить весь день, укажите в --to следующий день.
    • Без --from / --to интерактивная команда backtest охватывает последние 7 дней.
  • Команды пакетного режима (backtest и другие): даты указываются в формате dd/MM/yyyy, при необходимости со временем в 24-часовом формате dd/MM/yyyy HH:mm, например 31/12/2026 18:00, также по UTC.

Единственное исключение — работающий сиБот (run, backtest). Для него используется параметр TimeZone, заданный в сиБоте, как и в cTrader Algo.

Получение данных счета и рынка

Для ctrader-cli periods не нужны ни счет, ни учетные данные, поэтому с нее удобно начинать проверку.

ctrader-cli periods

Получите список торговых счетов, привязанных к вашему cTrader ID:

ctrader-cli accounts --ctid=letstrade --pwd-file=C:/test/password.pwd

Узнав номер счета, получите список доступных на нем торговых инструментов:

ctrader-cli symbols --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567

Получите текущую цену инструмента и исторические свечи с помощью скрипта:

ctrader-cli price --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD
ctrader-cli candles --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD --period=h1 --count=200 > eurUSD_h1.json

Ограничения исторических данных

Для команд deals и orders-history действуют следующие ограничения по историческим данным:

  • CLI загружает весь диапазон --from / --to без ограничения по длительности.
  • Однако один вызов возвращает только последние 200 сделок (deals) или последние 500 ордеров (orders-history) за этот период.
  • Без --from / --to обе команды возвращают данные только за последние 30 дней.
  • --count задает число возвращаемых записей:

    • По умолчанию 50, максимум 200 для deals.
    • По умолчанию 100, максимум 500 для orders-history.

Если указать --from или --to, параметр --count игнорируется. Тогда вызов возвращает до максимально допустимого числа записей.

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

Чтобы проверить, не был ли результат обрезан, изучите вывод:

  • orders-history: в выводе присутствуют поля available и returned. Если available больше returned, в диапазоне есть дополнительные ордера.
  • deals: если count равен ровно 200, в диапазоне могут быть дополнительные сделки.

Массовые действия в интерактивной оболочке

В интерактивной оболочке к некоторым командам можно добавить в конце all и yes, чтобы выполнить массовое действие без запроса подтверждения.

Команда Форма с all и yes в конце
order cancel order cancel all yes
position close position close all yes
stop stop all yes
alert delete alert delete all yes

Интерактивное выполнение команд

Выполните ctrader-cli без указания команды, чтобы открыть интерактивную оболочку. При появлении запроса войдите с помощью cTID и пароля. После этого можно вводить команды одну за другой, не указывая учетные данные повторно. Это удобно, если нужно выполнить несколько команд подряд.

Чтобы выполнить одну команду и сразу завершить работу, добавьте -q. Это полезно в скриптах, где процесс должен завершиться сразу после выполнения команды.

Два параметра позволяют узнать о поддерживаемых CLI возможностях.

Параметр Назначение
--help Вывести общие параметры и способы запуска.
--commands Вывести все интерактивные команды и их позиционные формы без аутентификации.

Если с вашим cTrader ID связаны счета у разных брокеров с одинаковыми номерами, добавьте --broker=<broker-name>, чтобы однозначно указать счет.

Распространенные ошибки

Признак проблемы Вероятная причина Следующий шаг
ctrader-cli: command not found Путь к CLI отсутствует в переменной PATH. Откройте терминал снова или следуйте инструкции по ручной установке из руководства по настройке.
Parameter password is not allowed Вы указали --password для команды пакетного режима. Вместо него используйте --pwd-file. Полное правило приведено в руководстве по настройке.
Account cannot be found Номер счета неоднозначен, поскольку используется у разных брокеров. Добавьте --broker=<broker-name>.
Unknown symbol name Имя торгового инструмента указано неверно или не поддерживается. Выполните symbols и используйте точное имя из вывода.
Unknown period Указан неверный идентификатор таймфрейма. Выполните periods, чтобы вывести все поддерживаемые идентификаторы.

Примечание

Все параметры, значения по умолчанию и полные описания приведены в справочнике CLI.