وكيل تداول قائم على التعلم المعزز العميق للبيتكوين باستخدام شبكة DeepSense لتقريب دالة Q.
للحصول على تفاصيل كاملة عن مجموعة البيانات والمعالجة المسبقة وبنية الشبكة والتنفيذ، راجع Wiki الخاص بهذا المستودع.
لإعداد جهاز أوبونتو الظاهري مع كافة التبعيات لتشغيل التعليمات البرمجية، راجع assets/vm
.
اسحب صورة عامل الإرساء المعدة مسبقًا مباشرة من مركز الإرساء وقم بتشغيلها كـ
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
أو
أنشئ صورة عامل الإرساء محليًا عن طريق تنفيذ الأمر وتشغيل الصورة باسم
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
سيؤدي هذا إلى إعداد المستودع لتدريب الوكيل و
قم بتثبيت الدليل الحالي في /deep-trading-agent
في الحاوية
أثناء إنشاء الصورة، يتم سحب أحدث سجل للمعاملات من البورصة وأخذ عينات منه لإنشاء مجموعة بيانات مقياس لكل دقيقة لأسعار البيتكوين. يتم وضع مجموعة البيانات هذه في /deep-trading-agent/data/btc.csv
لبدء تدريب الوكيل، حدد المعلمات المناسبة في ملف التكوين (يتوفر مثال لملف التكوين في /deep-trading-agent/code/config/config.cfg
) وقم بتشغيل التعليمات البرمجية باستخدام /deep-trading-agent/code/main.py
يدعم التدريب التسجيل والمراقبة من خلال Tensorboard
يتم تثبيت vim
و screen
في الحاوية لتحرير ملفات التكوين وتشغيل tensorboard
قم بربط المنفذ 6006 للحاوية بـ 6006 للجهاز المضيف لمراقبة التدريب باستخدام Tensorboard
يرجى إعطاء هذا المستودع لدعم المشروع؟.
Preprocessor
مستوحاة من Deep Q-Trading حيث تقوم بحل مشكلة تداول مبسطة لأصل واحد.
بالنسبة لكل وحدة تداول، يُسمح فقط بإجراء واحد من الإجراءات الثلاثة: محايد (1)، طويل (2) وقصير (3) ويتم الحصول على مكافأة اعتمادًا على المركز الحالي للوكيل. يتم تدريب وكيل Deep Q-Learning لتعظيم إجمالي المكافآت المتراكمة.
تم تعديل نموذج Deep Q-Trading الحالي باستخدام بنية Deep Sense لتقريب دالة Q.
يتم الحصول على سلسلة Bitcoin في الدقيقة عن طريق تعديل الإجراء المذكور في هذا المستودع. يتم أخذ عينات من المعاملات في بورصة Coinbase لإنشاء سلسلة أسعار البيتكوين.
ارجع إلى assets/dataset
لتنزيل مجموعة البيانات.
المعالجة الأساسية
تجاهل القيم المفقودة تمامًا وقم بإزالتها من مجموعة البيانات وقم بتجميع كتل من القيم المستمرة باستخدام الطوابع الزمنية للأسعار.
يتم بعد ذلك تصفية جميع الكتل المتراكمة ذات عدد الطوابع الزمنية الأقل من طول التاريخ المدمج للحالة وأفق الوكيل، حيث لا يمكن استخدامها لتدريب الوكيل.
في التنفيذ الحالي، يتم استخدام أسعار البيتكوين خلال الثلاث ساعات الماضية (180 دقيقة) في الدقيقة لإنشاء تمثيل للحالة الحالية للوكيل.
مع مجموعة البيانات الموجودة (في وقت كتابة هذا التقرير)، فيما يلي السجلات التي تم إنشاؤها أثناء المعالجة المسبقة لمجموعة البيانات:
INFO:root:Number of blocks of continuous prices found are 58863
INFO:root:Number of usable blocks obtained from the dataset are 887
INFO:root:Number of distinct episodes for the current configuration are 558471
المعالجة المسبقة المتقدمة
قم بمعالجة القيم المفقودة وتسلسل الكتل الأصغر لزيادة أحجام كتل الأسعار المستمرة.
التقنية القياسية في الأدبيات لملء القيم المفقودة بطريقة لا تؤثر كثيرًا على أداء النموذج هي استخدام التعبئة الأسية دون أي تسوس.
(جاري التنفيذ)
يتم استخدام الإصدار "1.1.0" من Tensorflow لتنفيذ شبكة Deep Sense .
تم تكييف التنفيذ من مستودع Github هذا مع بعض التبسيطات في بنية الشبكة لدمج التعلم عبر سلسلة زمنية واحدة من بيانات Bitcoin.
التنفيذ والمعالجة المسبقة مستوحى من هذا المنشور المتوسط. التنفيذ الفعلي لشبكة Deep Q مقتبس من DQN-tensorflow.