___ _ _ _ _ _ _____ _ _ ____ _
|_ _|_ __ | |_ ___| | (_) __ _ ___ _ __ | |_ |_ _| __ __ _ __| (_)_ __ __ _ | __ ) ___ | |_
| || '_ | __/ _ | | |/ _` |/ _ '_ | __| | || '__/ _` |/ _` | | '_ / _` | | _ / _ | __|
| || | | | || __/ | | | (_| | __/ | | | |_ | || | | (_| | (_| | | | | | (_| | | |_) | (_) | |_
|___|_| |_|_____|_|_|_|__, |___|_| |_|__| |_||_| __,_|__,_|_|_| |_|__, | |____/ ___/ __|
|___/ |___/
₿ Ξ ₳ ₮ ✕ ◎ ● Ð Ł Ƀ Ⱥ ∞ ξ ◈ ꜩ ɱ ε ɨ Ɓ Μ Đ ⓩ Ο Ӿ Ɍ ȿ
؟ إشارات التداول الذكية ؟ https://t.me/intelligent_trading_signals
يهدف المشروع إلى تطوير روبوت تداول ذكي للعملات المشفرة للتداول الآلي باستخدام خوارزميات التعلم الآلي (ML) المتطورة وهندسة الميزات. يوفر المشروع الوظائف الرئيسية التالية:
تعمل خدمة الإشارات في السحابة وترسل إشاراتها إلى قناة Telegram هذه:
؟ إشارات التداول الذكية ؟ https://t.me/intelligent_trading_signals
يمكن للجميع الاشتراك في القناة للحصول على انطباع حول الإشارات التي يولدها هذا الروبوت.
حاليًا، يتم تكوين الروبوت باستخدام المعلمات التالية:
هناك فترات صامتة تكون فيها النتيجة أقل من الحد الأدنى ولا يتم إرسال أي إشعارات إلى القناة. إذا كانت النتيجة أكبر من العتبة، فسيتم إرسال إشعار يبدو كل دقيقة
₿ 24.518 ؟؟؟ النتيجة: -0.26
الرقم الأول هو أحدث سعر إغلاق. النتيجة -0.26 تعني أنه من المحتمل جدًا أن نرى السعر أقل من سعر الإغلاق الحالي.
إذا تجاوزت النتيجة بعض العتبات المحددة في النموذج، فسيتم إنشاء إشارة شراء أو بيع مما يعني أن هذا هو الوقت المناسب للقيام بالتداول. تبدو هذه الإشعارات كما يلي:
؟ شراء: ₿ 24,033 النتيجة: +0.34
لكي تعمل خدمة الإشارة، يجب تدريب عدد من نماذج تعلم الآلة وإتاحة ملفات النماذج للخدمة. تعمل جميع البرامج النصية في الوضع الدفعي عن طريق تحميل بعض بيانات الإدخال وتخزين بعض ملفات الإخراج. توجد البرامج النصية المجمعة في وحدة scripts
.
إذا تم تكوين كل شيء، فيجب تنفيذ البرامج النصية التالية:
python -m scripts.download_binance -c config.json
python -m scripts.merge -c config.json
python -m scripts.features -c config.json
python -m scripts.labels -c config.json
python -m scripts.train -c config.json
python -m scripts.signals -c config.json
python -m scripts.train_signals -c config.json
بدون ملف التكوين، ستستخدم البرامج النصية المعلمات الافتراضية التي تكون مفيدة لأغراض الاختبار وليس المقصود منها إظهار أداء جيد. استخدم ملفات التكوين النموذجية المتوفرة لكل إصدار مثل config-sample-v0.6.0.jsonc
.
معلمة التكوين الرئيسية لكلا البرنامجين النصيين هي قائمة المصادر في data_sources
. يحدد أحد الإدخالات في هذه القائمة مصدر بيانات بالإضافة إلى column_prefix
المستخدم لتمييز الأعمدة التي تحمل نفس الاسم من مصادر مختلفة.
قم بتنزيل أحدث البيانات التاريخية: python -m scripts.download_binance -c config.json
دمج عدة مجموعات بيانات تاريخية في مجموعة بيانات واحدة: python -m scripts.merge -c config.json
هذا البرنامج النصي مخصص لحساب الميزات المشتقة:
python -m scripts.features -c config.json
يتم تكوين قائمة الميزات التي سيتم إنشاؤها عبر قائمة feature_sets
في ملف التكوين. يتم تحديد كيفية إنشاء الميزات من خلال منشئ الميزات الذي يحتوي كل منها على بعض المعلمات المحددة في قسم التكوين الخاص به.
talib
على مكتبة التحليل الفني TA-lib. فيما يلي مثال على تكوينه "config": {"columns": ["close"], "functions": ["SMA"], "windows": [5, 10, 15]}
itbstats
بتنفيذ الوظائف التي يمكن العثور عليها في tsfresh مثل scipy_skew
و scipy_kurtosis
و lsbm
(أطول ضربة أقل من المتوسط) و fmax
(الموقع الأول للحد الأقصى) و mean
و std
و area
و slope
. فيما يلي المعلمات النموذجية "config": {"columns": ["close"], "functions": ["skew", "fmax"], "windows": [5, 10, 15]}
itblib
في ITB ولكن يمكن إنشاء معظم ميزاته (بشكل أسرع بكثير) عبر talibtsfresh
بإنشاء وظائف من مكتبة tsfresh يشبه هذا البرنامج النصي إنشاء الميزات لأنه يضيف أعمدة جديدة إلى ملف الإدخال. ومع ذلك، تصف هذه الأعمدة شيئًا نريد التنبؤ به وما لا يُعرف عند التنفيذ في وضع الاتصال بالإنترنت. على سبيل المثال، يمكن أن يكون ارتفاع الأسعار في المستقبل:
python -m scripts.labels -c config.json
يتم تكوين قائمة التسميات التي سيتم إنشاؤها عبر قائمة label_sets
في التكوين. تشير مجموعة تسميات واحدة إلى الوظيفة التي تنشئ أعمدة إضافية. تكوينها مشابه جدًا لتكوينات الميزات.
highlow
صحيحًا إذا كان السعر أعلى من الحد المحدد خلال أفق مستقبلي ماhighlow2
يحسب الزيادات (النقصان) المستقبلية بشرط عدم وجود انخفاضات (زيادات) كبيرة قبل ذلك. إليك تكوينها النموذجي: "config": {"columns": ["close", "high", "low"], "function": "high", "thresholds": [1.0, 1.5, 2.0], "tolerance": 0.2, "horizon": 10080, "names": ["first_high_10", "first_high_15", "first_high_20"]}
topbot
مهملtopbot2
يحسب الحد الأقصى والحد الأدنى للقيم (المسمى صحيح). يتم ضمان أن يكون كل حد أقصى (حد أدنى) محاطًا بحد أدنى (حد أقصى) أقل (أعلى) من المستوى المحدد. يتم تحديد الحد الأدنى المطلوب للفرق بين الحد الأدنى والحد الأقصى المتجاورين عبر معلمات level
. تسمح معلمة التسامح أيضًا بتضمين نقاط قريبة من الحد الأقصى/الحد الأدنى. فيما يلي تكوين نموذجي: "config": {"columns": "close", "function": "bot", "level": 0.02, "tolerances": [0.1, 0.2], "names": ["bot2_1", "bot2_2"]}
يستخدم هذا البرنامج النصي ميزات الإدخال والتسميات المحددة لتدريب العديد من نماذج تعلم الآلة:
python -m scripts.train -c config.json
prediction-metrics.txt
مع درجات التنبؤ لجميع النماذجإعدادات:
model_store.py
train_features
labels
algorithms
الهدف من هذه الخطوة هو تجميع درجات التنبؤ الناتجة عن خوارزميات مختلفة لتسميات مختلفة. والنتيجة هي نتيجة واحدة من المفترض أن تستهلكها قواعد الإشارة في الخطوة التالية. تم تحديد معلمات التجميع في قسم score_aggregation
. يحدد كل من buy_labels
و sell_labels
درجات تنبؤ الإدخال التي تتم معالجتها بواسطة إجراء التجميع. window
هي عدد الخطوات السابقة المستخدمة للتجميع المتجدد combine
هو طريقة يتم من خلالها دمج نوعين من النتائج (الشراء والتسميات) في درجة إخراج واحدة.
النتيجة الناتجة عن إجراء التجميع هي رقم معين والهدف من قواعد الإشارة هو اتخاذ قرارات التداول: الشراء أو البيع أو عدم القيام بأي شيء. تم توضيح معلمات قواعد الإشارة في trade_model
.
يحاكي هذا البرنامج النصي عمليات التداول باستخدام العديد من معلمات إشارات الشراء والبيع ثم يختار معلمات الإشارة الأفضل أداءً:
python -m scripts.train_signals -c config.json
يبدأ هذا البرنامج النصي خدمة تنفذ بشكل دوري نفس المهمة: تحميل أحدث البيانات، وإنشاء الميزات، وإجراء التنبؤات، وإنشاء الإشارات، وإخطار المشتركين:
python -m service.server -c config.json
هناك مشكلتان:
python -m scripts.predict_rolling -c config.json
python -m scripts.train_signals -c config.json
يتم تحديد معلمات التكوين في ملفين:
service.App.py
في حقل config
لفئة App
-c config.jsom
للخدمات والبرامج النصية. ستحل القيم الموجودة في ملف التكوين هذا محل القيم الموجودة في App.config
عند تحميل هذا الملف في برنامج نصي أو خدمة فيما يلي بعض الحقول الأكثر أهمية (في كل من App.py
و config.json
):
data_folder
- موقع ملفات البيانات المطلوبة فقط للبرامج النصية المجمعة غير المتصلة بالإنترنتsymbol
هو زوج تداول مثل BTCUSDT
labels
قائمة بأسماء الأعمدة التي يتم التعامل معها كتسميات. إذا قمت بتحديد تسمية جديدة تستخدم للتدريب ثم للتنبؤ، فأنت بحاجة إلى تحديد اسمها هناalgorithms
قائمة أسماء الخوارزميات المستخدمة للتدريبtrain_features
قائمة بجميع أسماء الأعمدة المستخدمة كميزات إدخال للتدريب والتنبؤ.buy_labels
و sell_labels
قوائم الأعمدة المتوقعة المستخدمة للإشاراتtrade_model
للإشارة (بشكل أساسي بعض العتبات)trader
هو قسم لمعلمات التاجر. حاليا، لم يتم اختبارها بدقة.collector
قسم المعلمات هذا مخصص لخدمات جمع البيانات. هناك نوعان من خدمات جمع البيانات: متزامنة مع الطلبات المنتظمة لموفر البيانات وخدمة التدفق غير المتزامنة التي تشترك في مزود البيانات وتحصل على إشعارات بمجرد توفر بيانات جديدة. إنهم يعملون ولكن لم يتم اختبارهم بشكل كامل ودمجهم في الخدمة الرئيسية. يعتمد نمط الاستخدام الرئيسي الحالي على التحديثات اليدوية للبيانات المجمعة، وإنشاء الميزات، والتدريب على النماذج. أحد أسباب وجود خدمات جمع البيانات هذه هو 1) الحصول على تحديثات أسرع 2) عدم توفر بيانات في واجهة برمجة التطبيقات العادية مثل دفتر الطلبات (توجد بعض الميزات التي تستخدم هذه البيانات ولكنها غير مدمجة في سير العمل الرئيسي).راجع نماذج ملفات التكوين والتعليقات في App.config لمزيد من التفاصيل.
في كل دقيقة، يقوم المُشير بتنفيذ الخطوات التالية للتنبؤ بما إذا كان السعر من المحتمل أن يرتفع أو ينخفض:
ملحوظات:
بدء الخدمة: python3 -m service.server -c config.json
يعمل المتداول ولكن لم يتم تصحيح أخطائه بشكل كامل، وعلى وجه الخصوص، لم يتم اختباره من حيث الاستقرار والموثوقية. لذلك، ينبغي اعتباره نموذجًا أوليًا بوظائف أساسية. وهي مدمجة حاليًا مع Signaler ولكن في تصميم أفضل يجب أن تكون خدمة منفصلة.
الاختبار الخلفي
التكاملات الخارجية