فرع | إصدار | حالة |
---|---|---|
master | ||
nightly | ||
develop |
منصة | الصدأ | بايثون |
---|---|---|
Linux (x86_64) | 1.83.0+ | 3.11+ |
macOS (arm64) | 1.83.0+ | 3.11+ |
Windows (x86_64) | 1.83.0+ | 3.11+ |
NautilusTrader عبارة عن منصة تداول خوارزمية مفتوحة المصدر وعالية الأداء وعلى مستوى الإنتاج، مما يوفر للمتداولين الكميين القدرة على اختبار محافظ استراتيجيات التداول الآلية على البيانات التاريخية باستخدام محرك يحركه الحدث، وكذلك نشر نفس الاستراتيجيات مباشرة، مع لا توجد تغييرات في التعليمات البرمجية.
المنصة هي "AI-first"، وهي مصممة لتطوير ونشر استراتيجيات التداول الخوارزمية ضمن بيئة Python الأصلية عالية الأداء والقوية. يساعد هذا في مواجهة تحدي التكافؤ المتمثل في الحفاظ على بيئة البحث/الاختبار الخلفي لـ Python، بما يتوافق مع بيئة التداول المباشر للإنتاج.
تحافظ فلسفة التصميم والهندسة المعمارية والتنفيذ لدى NautilusTraders على صحة البرامج وسلامتها على أعلى مستوى، بهدف دعم الاختبار الخلفي لنظام التداول الأصلي والبالغ الأهمية لـ Python وأحمال عمل النشر المباشر.
تعد المنصة أيضًا عالمية وحيادية لفئة الأصول - مع إمكانية دمج أي REST أو WebSocket أو FIX API عبر محولات معيارية. وبالتالي، يمكنها التعامل مع عمليات التداول عالية التردد لأي فئة من فئات الأصول بما في ذلك العملات الأجنبية والأسهم والعقود الآجلة والخيارات وعقود الفروقات والعملات المشفرة والمراهنة - عبر أماكن متعددة في وقت واحد.
IOC
، FOK
، GTD
، AT_THE_OPEN
، AT_THE_CLOSE
، وأنواع الأوامر المتقدمة والمشغلات المشروطة. تعليمات التنفيذ post-only
، reduce-only
، والجبال الجليدية. قوائم أوامر الطوارئ بما في ذلك OCO
و OTO
.نوتيلوس - من كلمة "بحار" اليونانية القديمة وكلمة "سفينة" غثيان.
تتكون قوقعة النوتيلوس من غرف معيارية ذات عامل نمو يقارب الحلزون اللوغاريتمي. والفكرة هي أن هذا يمكن ترجمته إلى جماليات التصميم والهندسة المعمارية.
تقليديا، يمكن إجراء أبحاث استراتيجية التداول والاختبار الخلفي في لغة بايثون (أو لغة أخرى مناسبة) باستخدام أساليب موجهة، مع الحاجة بعد ذلك إلى إعادة تنفيذ الاستراتيجية بطريقة تعتمد على الأحداث باستخدام C++، C#، Java أو لغة (لغات) أخرى مكتوبة بشكل ثابت. ). السبب هنا هو أن كود الاختبار الخلفي المتجه لا يمكن أن يعبر عن الوقت الدقيق والتعقيد المعتمد على الحدث للتداول في الوقت الفعلي، حيث أثبتت اللغات المجمعة أنها أكثر ملاءمة بسبب أدائها العالي بطبيعتها وسلامة الكتابة.
إحدى المزايا الرئيسية لـ NautilusTrader هنا، هي أنه تم الآن التحايل على خطوة إعادة التنفيذ هذه - حيث تمت كتابة المكونات الأساسية المهمة للمنصة بالكامل بلغة Rust أو Cython. هذا يعني أننا نستخدم الأدوات المناسبة للمهمة، حيث تقوم لغات برمجة الأنظمة بتجميع الثنائيات عالية الأداء، مع وحدات امتداد CPython C ثم قادرة على تقديم بيئة Python الأصلية، ومناسبة للمتداولين الكميين المحترفين والشركات التجارية.
تم إنشاء لغة Python في الأصل منذ عقود مضت كلغة برمجة نصية بسيطة ذات بنية واضحة ومباشرة. لقد تطورت منذ ذلك الحين إلى لغة برمجة موجهة للأغراض العامة كاملة. استنادًا إلى مؤشر TIOBE، تعد لغة Python حاليًا لغة البرمجة الأكثر شيوعًا في العالم. ليس هذا فحسب، فقد أصبحت لغة بايثون هي اللغة المشتركة الفعلية لعلوم البيانات، والتعلم الآلي، والذكاء الاصطناعي.
ومع ذلك، فإن اللغة المبتكرة لا تخلو من العيوب، خاصة في سياق تنفيذ أنظمة كبيرة ذات أهمية كبيرة للأداء. لقد عالجت Cython الكثير من هذه المشكلات، حيث قدمت جميع مزايا اللغة المكتوبة بشكل ثابت، والمضمنة في نظام Python البيئي الغني لمكتبات البرامج ومجتمعات المطورين/المستخدمين.
Rust هي لغة برمجة متعددة النماذج مصممة للأداء والسلامة، وخاصة التزامن الآمن. يتميز Rust بالسرعة الفائقة وكفاءة في الذاكرة (مقارنة بـ C وC++) بدون أداة تجميع البيانات المهملة. يمكنه تشغيل الأنظمة ذات المهام الحرجة، وتشغيله على الأجهزة المدمجة، ويتكامل بسهولة مع اللغات الأخرى.
يضمن نظام Rust الغني ونموذج الملكية سلامة الذاكرة وسلامة الخيط بشكل حتمي - مما يؤدي إلى القضاء على العديد من فئات الأخطاء في وقت الترجمة.
يستخدم المشروع بشكل متزايد الصدأ للمكونات الأساسية ذات الأداء الحيوي. تتم معالجة ربط لغة Python من خلال Cython وPyO3، مع ربط المكتبات الثابتة في وقت الترجمة قبل تجميع الثنائيات العجلة، لذلك لا يحتاج المستخدم إلى تثبيت Rust لتشغيل NautilusTrader.
هذا المشروع يجعل تعهد السلامة:
"الهدف من هذا المشروع هو أن يكون خاليًا من أخطاء السلامة. سيبذل المطورون قصارى جهدهم لتجنبها، ويرحبون بالمساعدة في تحليلها وإصلاحها.
ملحوظة
MSRV: يعتمد NautilusTrader بشكل كبير على التحسينات في لغة Rust والمترجم. ونتيجة لذلك، فإن الحد الأدنى من إصدار الصدأ المدعوم (MSRV) يساوي عمومًا أحدث إصدار مستقر من Rust.
تم تصميم NautilusTrader بشكل نمطي للعمل مع المحولات ، مما يتيح الاتصال بأماكن التداول وموفري البيانات عن طريق تحويل واجهات برمجة التطبيقات الأولية الخاصة بهم إلى واجهة موحدة.
عمليات التكامل التالية مدعومة حاليًا:
اسم | بطاقة تعريف | يكتب | حالة | المستندات |
---|---|---|---|---|
بيتفير | BETFAIR | تبادل الرهان الرياضي | مرشد | |
بينانس | BINANCE | تبادل العملات المشفرة (CEX) | مرشد | |
بينانس الولايات المتحدة | BINANCE | تبادل العملات المشفرة (CEX) | مرشد | |
العقود الآجلة بينانس | BINANCE | تبادل العملات المشفرة (CEX) | مرشد | |
بايبيت | BYBIT | تبادل العملات المشفرة (CEX) | مرشد | |
داتابنتو | DATABENTO | مزود البيانات | مرشد | |
dYdX | DYDX | تبادل العملات المشفرة (DEX) | مرشد | |
الوسطاء التفاعليون | INTERACTIVE_BROKERS | الوساطة (متعددة الأماكن) | مرشد | |
أوكي إكس | OKX | تبادل العملات المشفرة (CEX) | مرشد | |
بوليماركت | POLYMARKET | سوق التنبؤ (DEX) | مرشد | |
تارديس | TARDIS | مزود البيانات | مرشد |
building
: قيد الإنشاء ومن المحتمل ألا يكون في حالة صالحة للاستخدام.beta
: اكتملت إلى الحد الأدنى من حالة العمل وفي مرحلة الاختبار "التجريبية".stable
: مجموعة الميزات الثابتة وواجهة برمجة التطبيقات (API)، وقد تم اختبار التكامل من قبل كل من المطورين والمستخدمين إلى مستوى معقول (قد تظل بعض الأخطاء موجودة).راجع وثائق التكامل لمزيد من التفاصيل.
نحن نهدف إلى الحفاظ على بناء مستقر ومرور عبر جميع الفروع.
master
: يعكس الكود المصدري لأحدث إصدار تم إصداره.nightly
: يتضمن ميزات تجريبية وجارية، يتم دمجها من فرع develop
يوميًا في الساعة 14:00 بالتوقيت العالمي المنسق وأيضًا عند الحاجة.develop
: الفرع الأكثر نشاطًا، ويتم تحديثه بشكل متكرر بالتزامات جديدة، بما في ذلك الميزات التجريبية وقيد التنفيذ. ملحوظة
تهدف خريطة الطريق الخاصة بنا إلى تحقيق واجهة برمجة تطبيقات مستقرة للإصدار 2.x (على الأرجح بعد منفذ Rust). بمجرد الوصول إلى هذا الإنجاز، نخطط لتنفيذ عملية إصدار رسمية، بما في ذلك فترات الإيقاف لأي تغييرات في واجهة برمجة التطبيقات. يتيح لنا هذا النهج الحفاظ على وتيرة التطور السريع في الوقت الحالي.
NautilusTrader لا يزال قيد التطوير النشط. قد تكون بعض الميزات غير مكتملة، وبينما تصبح واجهة برمجة التطبيقات (API) أكثر استقرارًا، فقد تحدث تغييرات معطلة بين الإصدارات. ونحن نسعى جاهدين لتوثيق هذه التغييرات في ملاحظات الإصدار على أساس أفضل جهد .
نحن نهدف إلى اتباع جدول إصدار أسبوعي ، على الرغم من أن الميزات التجريبية أو الأكبر حجمًا قد تسبب تأخيرات.
نوصي باستخدام أحدث إصدار مدعوم من Python وإعداد nautilus_trader في بيئة افتراضية لعزل التبعيات
لتثبيت أحدث عجلة ثنائية (أو حزمة sdist) من PyPI باستخدام مدير حزم Pythons pip:
pip install -U nautilus_trader
مؤشر حزمة Nautech Systems ( packages.nautechsystems.io
) متوافق مع PEP-503 ويستضيف كلاً من العجلات الثنائية المستقرة والتطويرية لـ nautilus_trader
. يتيح ذلك للمستخدمين تثبيت أحدث إصدار ثابت أو إصدارات ما قبل النشر للاختبار.
تتوافق العجلات المستقرة مع الإصدارات الرسمية من nautilus_trader
على PyPI، وتستخدم الإصدارات القياسية.
لتثبيت أحدث إصدار ثابت:
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
يتم نشر عجلات التطوير من كل من فرع develop
والفرع nightly
لنظامي التشغيل Linux وmacOS، مما يسمح للمستخدمين باختبار الميزات والإصلاحات قبل الإصدارات الثابتة.
تساعد هذه العملية أيضًا في الحفاظ على موارد الحوسبة وتضمن سهولة الوصول إلى الثنائيات الدقيقة التي تم اختبارها في مسارات CI، مع الالتزام بمعايير إصدار PEP-440:
develop
تنسيق الإصدار dev{date}+{build_number}
(على سبيل المثال، 1.208.0.dev20241212+7001
).nightly
تنسيق الإصدار a{date}
(alpha) (على سبيل المثال، 1.208.0a20241212
). تحذير
لا ننصح باستخدام عجلات التطوير في بيئات الإنتاج، مثل التداول المباشر الذي يتحكم في رأس المال الحقيقي.
افتراضيًا، تقوم النقطة بتثبيت أحدث إصدار ثابت. إن إضافة علامة --pre
تضمن أخذ إصدارات ما قبل النشر في الاعتبار، بما في ذلك عجلات التطوير.
لتثبيت أحدث إصدار مسبق متاح (بما في ذلك عجلات التطوير):
pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple
لتثبيت عجلة تطوير محددة (على سبيل المثال، 1.208.0a20241212
بتاريخ 12 ديسمبر 2024):
pip install nautilus_trader==1.208.0a20241212 --index-url=https://packages.nautechsystems.io/simple
يمكنك عرض جميع الإصدارات المتاحة من nautilus_trader
على فهرس الحزمة.
لجلب الإصدارات المتوفرة وإدراجها برمجيًا:
curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | grep -oP '(?<=<a href=")[^"]+(?=")' | awk -F'#' '{print $1}' | sort
develop
العجلات الفرعية ( .dev
): يتم إنشاؤها ونشرها بشكل مستمر مع كل التزام مدمج.nightly
( a
): يتم إنشاؤها ونشرها يوميًا عندما يتم دمج فرع develop
تلقائيًا في الساعة 14:00 بالتوقيت العالمي المنسق (إذا كانت هناك تغييرات). develop
العجلات الفرعية ( .dev
): يتم الاحتفاظ فقط بأحدث إصدار للعجلة.nightly
( a
): يتم الاحتفاظ فقط بأحدث 3 تصميمات للعجلات. يتطلب التثبيت من المصدر ملف رأس Python.h
، والذي تم تضمينه في إصدارات التطوير مثل python-dev
. ستحتاج أيضًا إلى أحدث إصدار ثابت rustc
cargo
لتجميع مكتبات Rust.
بالنسبة إلى MacBook Pro M1/M2، تأكد من تكوين Python المثبت باستخدام pyenv باستخدام --enable-shared
:
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <python_version>
راجع دليل مستخدم PyO3 لمزيد من التفاصيل.
من الممكن التثبيت من المصدر باستخدام النقطة إذا قمت أولاً بتثبيت تبعيات البناء كما هو محدد في pyproject.toml
. نوصي بشدة بالتثبيت باستخدام الشعر على النحو التالي.
تثبيت Rustup (مثبت سلسلة أدوات Rust):
curl https://sh.rustup.rs -sSf | sh
rustup-init.exe
rustc --version
تمكين cargo
في الصدفة الحالية:
source $HOME /.cargo/env
تثبيت clang (الواجهة الأمامية للغة C لـ LLVM):
sudo apt-get install clang
clang
في الصدفة الحالية: [ System.Environment ]::SetEnvironmentVariable( ' path ' , " C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsLlvmx64bin; " + $ env: Path , " User " )
clang --version
قم بتثبيت الشعر (أو اتبع دليل التثبيت على موقعهم):
curl -sSL https://install.python-poetry.org | python3 -
انسخ المصدر باستخدام git
، وقم بالتثبيت من الدليل الجذر للمشروع:
git clone https://github.com/nautechsystems/nautilus_trader
cd nautilus_trader
poetry install --only main --all-extras
راجع دليل التثبيت للحصول على خيارات أخرى ومزيد من التفاصيل.
يعد استخدام Redis مع NautilusTrader أمرًا اختياريًا ومطلوبًا فقط إذا تم تكوينه كواجهة خلفية لقاعدة بيانات ذاكرة التخزين المؤقت أو ناقل الرسائل. راجع قسم Redis في دليل التثبيت لمزيد من التفاصيل.
يتم توفير ملف Makefile
لأتمتة معظم مهام التثبيت والإنشاء للتطوير. ويوفر الأهداف التالية:
make install
: التثبيت في وضع إنشاء release
باستخدام التبعيات main
dev
test
ثم تثبيت الحزمة باستخدام الشعر (افتراضي).make install-debug
: مثل make install
ولكن مع وضع بناء debug
.make install-just-deps
: يقوم بتثبيت التبعيات main
dev
test
فقط (لا يتم تثبيت الحزمة).make build
: تشغيل البرنامج النصي للإنشاء في وضع إنشاء release
(افتراضي).make build-debug
: تشغيل البرنامج النصي للبناء في وضع بناء debug
.make build-wheel
: تشغيل بناء الشعر بتنسيق العجلة في وضع release
.make build-wheel-debug
: تشغيل بناء الشعر بتنسيق عجلة في وضع debug
.make clean
: تنبيه يزيل جميع العناصر غير المصدر من المستودع.make docs
: إنشاء وثائق HTML باستخدام Sphinx.make pre-commit
: يقوم بإجراء فحوصات الالتزام المسبق على جميع الملفات.make ruff
: يقوم بتشغيل ruff على جميع الملفات باستخدام تكوين pyproject.toml
(مع الإصلاح التلقائي).make pytest
: تشغيل جميع الاختبارات باستخدام pytest
(باستثناء اختبارات الأداء).make pytest-coverage
: مثل make pytest
ويعمل بالإضافة إلى ذلك مع تغطية اختبارية وينتج تقريرًا. نصيحة
يعد تشغيل make build-debug
للتجميع بعد إجراء تغييرات على كود Rust أو Cython هو سير العمل الأكثر كفاءة حاليًا عند التطوير.
يمكن تطوير المؤشرات والاستراتيجيات في كل من Python وCython. بالنسبة للأداء والتطبيقات الحساسة لزمن الوصول، نوصي باستخدام Cython. فيما يلي بعض الأمثلة:
BacktestEngine
مباشرة. يتم إنشاء حاويات Docker باستخدام الصورة الأساسية python:3.12-slim
مع علامات المتغيرات التالية:
nautilus_trader:latest
يحتوي على أحدث إصدار مثبت.nautilus_trader:nightly
تم تثبيت رأس الفرع nightly
.jupyterlab:latest
على أحدث إصدار مثبت مع jupyterlab
ومثال دفتر ملاحظات للاختبار الخلفي مع البيانات المصاحبة.jupyterlab:nightly
تم تثبيت رأس الفرع nightly
جنبًا إلى جنب مع jupyterlab
ومثال لدفتر الملاحظات الخلفي مع البيانات المصاحبة.يمكن سحب صور الحاوية على النحو التالي:
docker pull ghcr.io/nautechsystems/<image_variant_tag> --platform linux/amd64
يمكنك تشغيل حاوية مثال الاختبار الخلفي عن طريق تشغيل:
docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly
ثم افتح متصفحك على العنوان التالي:
http://127.0.0.1:8888/lab
تحذير
يتجاوز NautilusTrader حاليًا الحد الأقصى لمعدل تسجيل دفتر Jupyter (إخراج stdout). ونتيجة لذلك، تم تعيين مستوى log_level
في الأمثلة على ERROR
. سيؤدي خفض هذا المستوى لرؤية المزيد من التسجيل إلى تعليق دفتر الملاحظات أثناء تنفيذ الخلية. نحن نحقق في حل قد يتضمن إما رفع حدود المعدل التي تم تكوينها لـ Jupyter أو تقييد تدفق السجل من Nautilus.
نحن نهدف إلى توفير أفضل تجربة ممكنة للمطورين لقاعدة التعليمات البرمجية الهجينة هذه المكونة من Python وCython وRust. راجع دليل المطور للحصول على معلومات مفيدة.
Cargo-Nextest هو برنامج اختبار الصدأ القياسي لـ NautilusTrader. يمكنك تثبيته عن طريق تشغيل:
cargo install cargo-nextest
نصيحة
لن تنجح اختبارات الصدأ إلا عند تشغيلها عبر cargo-nextest
.
شكرًا لك على التفكير في المساهمة في Nautilus Trader! نحن نرحب بأي وكل مساعدة لتحسين المشروع. إذا كانت لديك فكرة لتحسين أو إصلاح خطأ، فإن الخطوة الأولى هي فتح مشكلة على GitHub لمناقشتها مع الفريق. يساعد هذا على ضمان توافق مساهمتك بشكل جيد مع أهداف المشروع وتجنب ازدواجية الجهود.
بمجرد أن تصبح مستعدًا لبدء العمل على مساهمتك، تأكد من اتباع الإرشادات الموضحة في ملف CONTRIBUTING.md. يتضمن ذلك التوقيع على اتفاقية ترخيص المساهم (CLA) لضمان إمكانية تضمين مساهماتك في المشروع.
لاحظ أنه يجب تقديم جميع طلبات السحب إلى فرع develop
. هذا هو المكان الذي يتم فيه دمج الميزات والتحسينات الجديدة قبل إصدارها.
شكرًا لك مرة أخرى على اهتمامك بـ Nautilus Trader! ونحن نتطلع إلى مراجعة مساهماتك والعمل معك لتحسين المشروع.
انضم إلى مجتمع المستخدمين والمساهمين لدينا على Discord للدردشة والبقاء على اطلاع بأحدث إعلانات وميزات NautilusTrader. سواء كنت مطورًا يتطلع إلى المساهمة أو ترغب فقط في معرفة المزيد حول النظام الأساسي، فنحن نرحب بالجميع على خادمنا.
الكود المصدري لـ NautilusTrader متاح على GitHub بموجب ترخيص GNU Lesser General Public License الإصدار 3.0. نرحب بالمساهمات في المشروع وتتطلب إكمال اتفاقية ترخيص المساهم القياسية (CLA).
تم تطوير NautilusTrader وصيانته بواسطة Nautech Systems، وهي شركة تكنولوجيا متخصصة في تطوير أنظمة التداول عالية الأداء. على الرغم من أن المشروع يستخدم لغة برمجة Rust ويستفيد من نظامه البيئي، إلا أن Nautech Systems ليست تابعة لمؤسسة Rust، وهذا المشروع ليس عملاً رسميًا لمؤسسة Rust. لمزيد من المعلومات، قم بزيارة https://nautilustrader.io.
حقوق الطبع والنشر (C) 2015-2025 لشركة Nautech Systems Pty Ltd. جميع الحقوق محفوظة.