Скрипты на Python (движок Pyodide)

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

Senzoukria · Документация · Обновлено: сентябрь 2026


Где найти

Где
Страница «Скрипты» → Язык → Python, затем полоса «Движок Python»
Загрузка
Шесть файлов, около 16,4 МБ суммарно, скачиваются один раз
В комплекте
numpy, в виде колеса, совместимого с ABI движка
Бюджет запуска
120 с на старт движка; у загрузки свой бюджет в 600 с
Бюджет скрипта
2 с на запуск, как и в JavaScript

Что это даёт

Язык выбирается для каждого скрипта и хранится вместе с ним. Оба языка получают одни и те же данные и возвращают одни и те же формы, поэтому перенесённый с одного на другой скрипт не теряет ориентиров: колонки бара доступны под своими именами, расчётные помощники сохраняют названия, а построители выходов соответствуют один к одному.

Старт движка — полноценное состояние на собственной полосе, и его никогда не путают с запуском скрипта. Это различие важно: движок стартует секундами, тогда как у запуска скрипта бюджет в две секунды, и если свести одно к другому, каждый корректный скрипт на Python выглядел бы как бесконечный цикл.

Ничто не скачивается само по себе. Установка — это щелчок; автоматический старт происходит, только когда файлы уже на месте.

Состояния движка

Полоса движка Python, состояние за состоянием
СостояниеПо умолчаниюЧто меняет
Не установленначальноеПредлагает «Установить движок Python» и называет размер разовой загрузки.
ЗагрузкаПоказывает процент и предлагает «Отменить загрузку».
ЗапускДвижок стартует; скрипты ждут, а не падают.
Движок готовПоказывает версию и время старта в миллисекундах, предлагает «Удалить движок».
Движок недоступенСообщает, что движок не стартовал, с исходным сообщением, и предлагает «Повторить». Скрипты на JavaScript это не затрагивает.
Примечание об офлайневсегдаПосле установки движок работает полностью офлайн — ни скрипт, ни данные никуда не отправляются.

Несовпадение языка

Вставка скрипта на Python в черновик, у которого ещё стоит JavaScript, раньше давала синтаксическую ошибку с произвольным номером строки и совет про console.log тому, кто пишет на Python. Теперь страница проверяет, противоречит ли код объявленному языку, и прямо об этом сообщает, с кнопкой переключения на распознанный язык.

Проверка намеренно узкая: она ищет только те признаки, которые в другом языке являются явными синтаксическими ошибками, и молчит, когда в файле есть признаки обоих, — наполовину переведённому скрипту нечего сказать полезного. Пропущенное распознавание лишь возвращает вас к прежнему невнятному сообщению; выдуманное отправило бы вас менять язык, который был верным.

Ограничения и подводные камни

  • Смена языка не переводит ваш код: он остаётся ровно таким, как написан, и не запустится, пока вы его не перепишете.
  • Файлы движка скачиваются с собственного ретранслятора продукта — единственного удалённого источника, который разрешает политика содержимого приложения.
  • Версия движка зафиксирована и сверяется со скомпилированным бинарником; смешение версий отклоняется, а не приводит к нечитаемым сбоям.
  • Бэктест стратегии на Python выполняет цикл на стороне Python, а не пересекает границу языков на каждом баре, и тест на паритет сравнивает её сделки с циклом на JavaScript бар за баром. print() уходит в журнал с префиксом текущего бара.

Эта страница на других языках

Частые вопросы

Нужно ли устанавливать Python на компьютер?
Нет. Движок встроен и скачивается приложением один раз. Он не использует и не требует системной установки Python.
Какие библиотеки доступны?
Стандартная библиотека плюс numpy, который поставляется как колесо, совместимое с ABI движка. Доступа к сети из песочницы нет, поэтому пакеты нельзя скачать во время выполнения.
Почему мой скрипт на Python падает с синтаксической ошибкой на несуществующей строке?
Это характерный признак несовпадения языка: к вашему исходнику дописана обёртка на другом языке. Смените язык скрипта и запустите снова.