Выполнение команд 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.
- По умолчанию 50, максимум 200 для
Если указать --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.