Environment Setup ¶
For development we recommend using the PyCharm Professional edition IDE, as it interprets Cython syntax. Alternatively, you could use Visual Studio Code with a Cython extension.
pyenv is the recommended tool for handling Python installations and virtual environments.
poetry is the preferred tool for handling all Python package and dev dependencies.
pre-commit is used to automatically run various checks, auto-formatters and linting tools at commit.
NautilusTrader uses increasingly more Rust , so Rust should be installed on your system as well ( installation guide ).
Setup ¶
The following steps are for UNIX-like systems, and only need to be completed once.
-
Follow the installation guide to setup the project with a modification to the final poetry command:
poetry install
-
Setup the pre-commit hook which will then run automatically at commit:
pre-commit install
Builds ¶
Following any changes to
.pyx
or
.pxd
files, you can re-compile by running:
poetry run python build.py
or
make build
Services ¶
You can use
docker-compose.yml
file located in
.docker
directory
to bootstrap the Nautilus working environment. This will start the following services:
docker-compose up -d
If you only want specific services running (like
postgres
for example), you can start them with command:
docker-compose up -d postgres
Used services are:
-
postgres
- Postgres database with root userPOSTRES_USER
which defaults topostgres
,POSTGRES_PASSWORD
which defaults topass
andPOSTGRES_DB
which defaults topostgres
-
redis
- Redis server -
pgadmin
- PgAdmin4 for database management and administration
Note: Please use this as development environment only. For production, use a proper and more secure setup.
After the services has been started, you must log in with
psql
cli to create
nautilus
Postgres database.
To do that you can run, and type
POSTGRES_PASSWORD
from docker service setup
psql -h localhost -p 5432 -U postgres
After you have logged in as
postgres
administrator, run
CREATE
DATABASE
command with target db name (we use
nautilus
):
psql (16.2, server 15.2 (Debian 15.2-1.pgdg110+1))
Type "help" for help.
postgres=# CREATE DATABASE nautilus;
CREATE DATABASE
Nautilus CLI Developer Guide ¶
Introduction ¶
The Nautilus CLI is a command-line interface tool designed to interact with the Nautilus Trader ecosystem. It provides commands for managing the Postgres database and other trading operations.
Note: The Nautilus CLI command is only supported on UNIX-like systems.
Install ¶
You can install nautilus cli command with from Make file target, which will use
cargo
install
under the hood.
And this command will install
nautilus
bin executable in your path if Rust
cargo
is properly configured.
make install-cli
Commands ¶
You can run
nautilus
--help
to inspect structure of CLI and groups of commands:
Database ¶
These are commands related to the bootstrapping the Postgres database.
For that you work, you need to supply right connection configuration. You can do that through
command line arguments or
.env
file in the root directory or where the commands is being run.
-
--host
arg orPOSTGRES_HOST
for database host -
--port
arg orPOSTGRES_PORT
for database port -
--user
arg orPOSTGRES_USER
for root administrator user to run command with (namelypostgres
root user here) -
--password
arg orPOSTGRES_PASSWORD
for root administrator password -
--database
arg orPOSTGRES_DATABASE
for both database name and new user that will have privileges of this database ( if you providednautilus
as value, then new user will be created with namenautilus
that will inherit the password fromPOSTGRES_PASSWORD
andnautilus
database with be bootstrapped with this user as owner)
Example of
.env
file
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USERNAME=postgres
POSTGRES_DATABASE=nautilus
POSTGRES_PASSWORD=pass
List of commands are:
-
nautilus database init
- it will bootstrap schema, roles and all sql files located inschema
root directory (liketables.sql
) -
nautilus database drop
- it will drop all tables, role and data in target Postgres database