Cabang | Versi | Status |
---|---|---|
master | ||
nightly | ||
develop |
Platform | Karat | ular piton |
---|---|---|
Linux (x86_64) | 1.83.0+ | 3.11+ |
macOS (arm64) | 1.83.0+ | 3.11+ |
Windows (x86_64) | 1.83.0+ | 3.11+ |
NautilusTrader adalah platform perdagangan algoritmik tingkat produksi, berperforma tinggi, dan bersumber terbuka, memberikan pedagang kuantitatif kemampuan untuk menguji kembali portofolio strategi perdagangan otomatis pada data historis dengan mesin yang digerakkan oleh peristiwa, dan juga menerapkan strategi yang sama secara langsung, dengan tidak ada perubahan kode.
Platform ini 'mengutamakan AI', dirancang untuk mengembangkan dan menerapkan strategi perdagangan algoritmik dalam lingkungan asli Python yang berkinerja tinggi dan kuat. Hal ini membantu mengatasi tantangan keseimbangan dalam menjaga lingkungan penelitian/backtest Python, konsisten dengan lingkungan produksi perdagangan langsung.
Filosofi desain, arsitektur, dan implementasi NautilusTraders menjaga kebenaran dan keamanan perangkat lunak pada tingkat tertinggi, dengan tujuan mendukung pengujian balik sistem perdagangan asli Python, kritis terhadap misi, dan beban kerja penerapan langsung.
Platform ini juga bersifat universal dan agnostik kelas aset - dengan REST, WebSocket, atau FIX API apa pun yang dapat diintegrasikan melalui adaptor modular. Dengan demikian, ia dapat menangani operasi perdagangan frekuensi tinggi untuk semua kelas aset termasuk FX, Ekuitas, Kontrak Berjangka, Opsi, CFD, Kripto, dan Taruhan – di berbagai tempat secara bersamaan.
IOC
, FOK
, GTD
, AT_THE_OPEN
, AT_THE_CLOSE
, jenis pesanan lanjutan dan pemicu bersyarat. Instruksi eksekusi post-only
, reduce-only
, dan gunung es. Daftar pesanan darurat termasuk OCO
, OTO
.nautilus - dari bahasa Yunani kuno 'pelaut' dan naus 'kapal'.
Cangkang nautilus terdiri dari ruang modular dengan faktor pertumbuhan yang mendekati spiral logaritmik. Idenya adalah hal ini dapat diterjemahkan ke dalam estetika desain dan arsitektur.
Secara tradisional, penelitian strategi perdagangan dan pengujian ulang dapat dilakukan dengan Python (atau bahasa lain yang sesuai) menggunakan metode vektor, dan strategi tersebut kemudian perlu diimplementasikan kembali dengan cara yang lebih berbasis peristiwa menggunakan C++, C#, Java, atau bahasa yang diketik secara statis lainnya. ). Alasannya di sini adalah bahwa kode backtesting yang divektorisasi tidak dapat mengungkapkan kompleksitas perdagangan real-time yang bergantung pada waktu dan peristiwa, di mana bahasa yang dikompilasi telah terbukti lebih cocok karena kinerjanya yang lebih tinggi, dan keamanan jenisnya.
Salah satu keuntungan utama NautilusTrader di sini adalah bahwa langkah implementasi ulang ini sekarang dapat dihindari - karena komponen inti penting dari platform semuanya telah ditulis seluruhnya dalam Rust atau Cython. Ini berarti kami menggunakan alat yang tepat untuk pekerjaan itu, di mana bahasa pemrograman sistem mengkompilasi biner yang berkinerja, dengan modul ekstensi CPython C yang kemudian dapat menawarkan lingkungan asli Python, cocok untuk pedagang kuantitatif profesional dan perusahaan perdagangan.
Python awalnya dibuat beberapa dekade yang lalu sebagai bahasa skrip sederhana dengan sintaksis yang bersih dan lurus. Sejak saat itu, bahasa ini telah berkembang menjadi bahasa pemrograman berorientasi objek tujuan umum yang lengkap. Berdasarkan indeks TIOBE, Python saat ini menjadi bahasa pemrograman terpopuler di dunia. Tidak hanya itu, Python secara de facto telah menjadi lingua franca ilmu data, pembelajaran mesin, dan kecerdasan buatan.
Namun, bahasa yang out of the box ini bukannya tanpa kekurangan, terutama dalam konteks penerapan sistem besar yang kritis terhadap kinerja. Cython telah mengatasi banyak masalah ini, menawarkan semua keuntungan dari bahasa yang diketik secara statis, tertanam dalam ekosistem perpustakaan perangkat lunak dan komunitas pengembang/pengguna yang kaya akan Python.
Rust adalah bahasa pemrograman multi-paradigma yang dirancang untuk kinerja dan keamanan, terutama konkurensi yang aman. Rust sangat cepat dan hemat memori (sebanding dengan C dan C++) tanpa pengumpul sampah. Ini dapat mendukung sistem yang sangat penting, berjalan pada perangkat yang tertanam, dan mudah diintegrasikan dengan bahasa lain.
Sistem tipe kaya dan model kepemilikan Rust menjamin keamanan memori dan keamanan thread secara deterministik — menghilangkan banyak kelas bug pada waktu kompilasi.
Proyek ini semakin banyak menggunakan Rust untuk komponen inti yang sangat penting bagi kinerja. Pengikatan bahasa Python ditangani melalui Cython dan PyO3, dengan pustaka statis ditautkan pada waktu kompilasi sebelum biner roda dipaket, sehingga pengguna tidak perlu menginstal Rust untuk menjalankan NautilusTrader.
Proyek ini membuat Ikrar Kesehatan:
“Tujuan dari proyek ini adalah agar bebas dari bug kesehatan. Pengembang akan melakukan yang terbaik untuk menghindarinya, dan menerima bantuan dalam menganalisis dan memperbaikinya.”
Catatan
MSRV: NautilusTrader sangat bergantung pada perbaikan dalam bahasa dan kompiler Rust. Hasilnya, Versi Rust yang Didukung Minimum (MSRV) secara umum sama dengan rilis stabil terbaru Rust.
NautilusTrader dirancang secara modular untuk bekerja dengan adaptor , memungkinkan konektivitas ke tempat perdagangan dan penyedia data dengan mengubah API mentah mereka menjadi antarmuka terpadu.
Integrasi berikut saat ini didukung:
Nama | PENGENAL | Jenis | Status | dokumen |
---|---|---|---|---|
Betfair | BETFAIR | Pertukaran Taruhan Olahraga | Memandu | |
binance | BINANCE | Pertukaran Kripto (CEX) | Memandu | |
Binance AS | BINANCE | Pertukaran Kripto (CEX) | Memandu | |
Binance Berjangka | BINANCE | Pertukaran Kripto (CEX) | Memandu | |
sedikit demi sedikit | BYBIT | Pertukaran Kripto (CEX) | Memandu | |
Databento | DATABENTO | Penyedia Data | Memandu | |
dYdX | DYDX | Pertukaran Kripto (DEX) | Memandu | |
Broker Interaktif | INTERACTIVE_BROKERS | Pialang (multi-tempat) | Memandu | |
okex | OKX | Pertukaran Kripto (CEX) | Memandu | |
Polimarket | POLYMARKET | Pasar Prediksi (DEX) | Memandu | |
Tardis | TARDIS | Penyedia Data | Memandu |
building
: Sedang dibangun dan kemungkinan besar tidak dalam kondisi dapat digunakan.beta
: Selesai dalam kondisi kerja minimal dan dalam tahap pengujian 'beta'.stable
: Kumpulan fitur dan API yang distabilkan, integrasinya telah diuji oleh pengembang dan pengguna hingga tingkat yang wajar (beberapa bug mungkin masih ada).Lihat dokumentasi Integrasi untuk detail lebih lanjut.
Kami bertujuan untuk mempertahankan pembangunan yang stabil dan berkelanjutan di semua cabang.
master
: Mencerminkan kode sumber untuk versi rilis terbaru.nightly
: Termasuk fitur eksperimental dan sedang dalam proses, digabungkan dari cabang develop
setiap hari pada pukul 14:00 UTC dan juga bila diperlukan.develop
: Cabang paling aktif, sering diperbarui dengan komitmen baru, termasuk fitur eksperimental dan sedang dalam proses. Catatan
Peta jalan kami bertujuan untuk mencapai API yang stabil untuk versi 2.x (kemungkinan setelah port Rust). Setelah pencapaian ini tercapai, kami berencana untuk menerapkan proses rilis formal, termasuk periode penghentian untuk setiap perubahan API. Pendekatan ini memungkinkan kita untuk mempertahankan laju perkembangan yang pesat saat ini.
NautilusTrader masih dalam pengembangan aktif. Beberapa fitur mungkin tidak lengkap, dan meskipun API menjadi lebih stabil, perubahan yang dapat menyebabkan gangguan dapat terjadi di antara rilis. Kami berusaha keras untuk mendokumentasikan perubahan ini dalam catatan rilis dengan upaya terbaik .
Kami bertujuan untuk mengikuti jadwal rilis mingguan , meskipun fitur eksperimental atau fitur yang lebih besar dapat menyebabkan penundaan.
Kami merekomendasikan penggunaan versi terbaru Python yang didukung dan menyiapkan nautilus_trader di lingkungan virtual untuk mengisolasi dependensi
Untuk menginstal roda biner terbaru (atau paket sdist) dari PyPI menggunakan manajer paket pip Python:
pip install -U nautilus_trader
Indeks paket Nautech Systems ( packages.nautechsystems.io
) mematuhi PEP-503 dan menampung roda biner stabil dan pengembangan untuk nautilus_trader
. Hal ini memungkinkan pengguna untuk menginstal versi rilis stabil terbaru atau versi pra-rilis untuk pengujian.
Roda stabil sesuai dengan rilis resmi nautilus_trader
di PyPI, dan menggunakan versi standar.
Untuk menginstal rilis stabil terbaru:
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
Roda pengembangan diterbitkan dari cabang develop
dan nightly
untuk Linux dan macOS, memungkinkan pengguna menguji fitur dan perbaikan sebelum rilis stabil.
Proses ini juga membantu menjaga sumber daya komputasi dan memastikan akses mudah ke biner persis yang diuji dalam pipeline CI, sekaligus mematuhi standar versi PEP-440:
develop
menggunakan format versi dev{date}+{build_number}
(misalnya, 1.208.0.dev20241212+7001
).nightly
menggunakan format versi a{date}
(alpha) (misalnya, 1.208.0a20241212
). Peringatan
Kami tidak menyarankan penggunaan roda pengembangan di lingkungan produksi, seperti perdagangan langsung yang mengendalikan modal nyata.
Secara default, pip menginstal rilis stabil terbaru. Menambahkan tanda --pre
memastikan bahwa versi pra-rilis, termasuk roda pengembangan, dipertimbangkan.
Untuk menginstal pra-rilis terbaru yang tersedia (termasuk roda pengembangan):
pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple
Untuk memasang roda pengembangan tertentu (misalnya, 1.208.0a20241212
untuk 12 Desember 2024):
pip install nautilus_trader==1.208.0a20241212 --index-url=https://packages.nautechsystems.io/simple
Anda dapat melihat semua versi nautilus_trader
yang tersedia pada indeks paket.
Untuk mengambil dan mencantumkan versi yang tersedia secara terprogram:
curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | grep -oP '(?<=<a href=")[^"]+(?=")' | awk -F'#' '{print $1}' | sort
develop
roda cabang ( .dev
): Dibangun dan diterbitkan terus menerus dengan setiap komitmen gabungan.nightly
( a
): Dibangun dan diterbitkan setiap hari ketika cabang develop
digabungkan secara otomatis pada pukul 14:00 UTC (jika ada perubahan). develop
roda cabang ( .dev
): Hanya bentuk roda terbaru yang dipertahankan.nightly
( a
): Hanya 3 bentuk roda terbaru yang dipertahankan. Instalasi dari sumber memerlukan file header Python.h
, yang disertakan dalam rilis pengembangan seperti python-dev
. Anda juga memerlukan rustc
dan cargo
stabil terbaru untuk mengkompilasi perpustakaan Rust.
Untuk MacBook Pro M1/M2, pastikan Python Anda yang diinstal menggunakan pyenv dikonfigurasi dengan --enable-shared
:
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <python_version>
Lihat panduan pengguna PyO3 untuk lebih jelasnya.
Anda dapat menginstal dari sumber menggunakan pip jika Anda menginstal dependensi build terlebih dahulu seperti yang ditentukan dalam pyproject.toml
. Kami sangat menyarankan pemasangan menggunakan puisi seperti dibawah ini.
Instal Rustup (pemasang rantai alat Rust):
curl https://sh.rustup.rs -sSf | sh
rustup-init.exe
rustc --version
Aktifkan cargo
di shell saat ini:
source $HOME /.cargo/env
Instal dentang (frontend bahasa C untuk LLVM):
sudo apt-get install clang
clang
di shell saat ini: [ System.Environment ]::SetEnvironmentVariable( ' path ' , " C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsLlvmx64bin; " + $ env: Path , " User " )
clang --version
Instal puisi (atau ikuti panduan instalasi di situs mereka):
curl -sSL https://install.python-poetry.org | python3 -
Kloning sumbernya dengan git
, dan instal dari direktori root proyek:
git clone https://github.com/nautechsystems/nautilus_trader
cd nautilus_trader
poetry install --only main --all-extras
Lihat Panduan Instalasi untuk opsi lain dan rincian lebih lanjut.
Menggunakan Redis dengan NautilusTrader bersifat opsional dan hanya diperlukan jika dikonfigurasi sebagai backend untuk database cache atau bus pesan. Lihat bagian Redis pada Panduan Instalasi untuk rincian lebih lanjut.
Makefile
disediakan untuk mengotomatiskan sebagian besar tugas instalasi dan build untuk pengembangan. Ini memberikan target berikut:
make install
: Menginstal dalam mode release
build dengan dependensi main
, dev
dan test
kemudian menginstal paket menggunakan puisi (default).make install-debug
: Sama seperti make install
tetapi dengan mode debug
build.make install-just-deps
: Menginstal hanya dependensi main
, dev
dan test
(tidak menginstal paket).make build
: Menjalankan skrip build dalam mode release
build (default).make build-debug
: Menjalankan skrip build dalam mode debug
build.make build-wheel
: Menjalankan build Puisi dengan format roda dalam mode release
.make build-wheel-debug
: Menjalankan build Puisi dengan format roda dalam mode debug
.make clean
: PERHATIAN menghapus semua artefak non-sumber dari repositori.make docs
: Membuat dokumentasi HTML menggunakan Sphinx.make pre-commit
: Menjalankan pemeriksaan pra-komit pada semua file.make ruff
: Menjalankan ruff pada semua file menggunakan konfigurasi pyproject.toml
(dengan perbaikan otomatis).make pytest
: Menjalankan semua pengujian dengan pytest
(kecuali pengujian kinerja).make pytest-coverage
: Sama seperti make pytest
dan juga dijalankan dengan cakupan pengujian dan menghasilkan laporan. Tip
Menjalankan make build-debug
untuk dikompilasi setelah perubahan pada kode Rust atau Cython saat ini merupakan alur kerja paling efisien saat pengembangan.
Indikator dan strategi dapat dikembangkan dengan Python dan Cython. Untuk aplikasi yang sensitif terhadap kinerja dan latensi, kami merekomendasikan penggunaan Cython. Di bawah ini beberapa contohnya:
BacktestEngine
secara langsung. Kontainer Docker dibuat menggunakan gambar dasar python:3.12-slim
dengan tag varian berikut:
nautilus_trader:latest
telah menginstal versi rilis terbaru.nautilus_trader:nightly
telah menginstal kepala cabang nightly
.jupyterlab:latest
telah menginstal versi rilis terbaru bersama dengan jupyterlab
dan contoh notebook backtest dengan data yang menyertainya.jupyterlab:nightly
telah menginstal kepala cabang nightly
bersama dengan jupyterlab
dan contoh notebook backtest dengan data yang menyertainya.Gambar kontainer dapat ditarik sebagai berikut:
docker pull ghcr.io/nautechsystems/<image_variant_tag> --platform linux/amd64
Anda dapat meluncurkan wadah contoh backtest dengan menjalankan:
docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly
Kemudian buka browser Anda di alamat berikut:
http://127.0.0.1:8888/lab
Peringatan
NautilusTrader saat ini melebihi batas kecepatan untuk logging notebook Jupyter (output stdout). Akibatnya, log_level
dalam contoh diatur ke ERROR
. Menurunkan level ini untuk melihat lebih banyak pencatatan akan menyebabkan notebook hang selama eksekusi sel. Kami sedang menyelidiki perbaikan, yang mungkin melibatkan peningkatan batas kecepatan yang dikonfigurasi untuk Jupyter atau membatasi pembersihan log dari Nautilus.
Kami bertujuan untuk memberikan pengalaman pengembang yang paling menyenangkan untuk basis kode hybrid Python, Cython, dan Rust ini. Lihat Panduan Pengembang untuk informasi bermanfaat.
cargo-nextest adalah pelari uji Rust standar untuk NautilusTrader. Anda dapat menginstalnya dengan menjalankan:
cargo install cargo-nextest
Tip
Tes karat hanya akan lulus jika dijalankan melalui cargo-nextest
.
Terima kasih telah mempertimbangkan untuk berkontribusi pada Nautilus Trader! Kami menyambut baik segala bantuan untuk meningkatkan proyek ini. Jika Anda memiliki ide untuk peningkatan atau perbaikan bug, langkah pertama adalah membuka masalah di GitHub untuk mendiskusikannya dengan tim. Hal ini membantu memastikan bahwa kontribusi Anda akan selaras dengan tujuan proyek dan menghindari duplikasi upaya.
Setelah Anda siap untuk mulai mengerjakan kontribusi Anda, pastikan untuk mengikuti pedoman yang diuraikan dalam file CONTRIBUTING.md. Hal ini termasuk menandatangani Perjanjian Lisensi Kontributor (CLA) untuk memastikan bahwa kontribusi Anda dapat disertakan dalam proyek.
Perhatikan bahwa semua permintaan penarikan harus dibuat ke cabang develop
. Di sinilah fitur-fitur baru dan peningkatan diintegrasikan sebelum dirilis.
Sekali lagi terima kasih atas ketertarikan Anda pada Nautilus Trader! Kami berharap dapat meninjau kontribusi Anda dan bekerja sama dengan Anda untuk meningkatkan proyek ini.
Bergabunglah dengan komunitas pengguna dan kontributor kami di Discord untuk mengobrol dan mendapatkan informasi terkini tentang pengumuman dan fitur terbaru NautilusTrader. Baik Anda seorang pengembang yang ingin berkontribusi atau hanya ingin mempelajari lebih lanjut tentang platform ini, semuanya diterima di server kami.
Kode sumber untuk NautilusTrader tersedia di GitHub di bawah GNU Lesser General Public License v3.0. Kontribusi terhadap proyek ini diterima dan memerlukan penyelesaian Perjanjian Lisensi Kontributor (CLA) standar.
NautilusTrader dikembangkan dan dikelola oleh Nautech Systems, sebuah perusahaan teknologi yang mengkhususkan diri dalam pengembangan sistem perdagangan berkinerja tinggi. Meskipun proyek ini menggunakan bahasa pemrograman Rust dan memanfaatkan ekosistemnya, Nautech Systems tidak berafiliasi dengan Rust Foundation, dan proyek ini bukan merupakan karya resmi dari Rust Foundation. Untuk informasi lebih lanjut, kunjungi https://nautilustrader.io.
Hak Cipta (C) 2015-2025 Nautech Systems Pty Ltd. Semua hak dilindungi undang-undang.