أقترح تبديد هذه الشكوك بشكل نهائي ونقل الخطاب من مجال "يمكن أن يتنبأ أو لا يتنبأ" إلى مجال "يتنبأ بخير أو سيء". وسنفعل ذلك بطريقة بسيطة وسريعة ومرئية. سأقدم أداة جاهزة ويمكن للجميع الحصول على النتيجة على أجهزة الكمبيوتر الخاصة بهم. سيساعدنا المشروع المجاني GoogleColaboratory في هذا الأمر. هذه منصة مفتوحة للتطوير التعاوني ، تتم جميع العمليات الحسابية على خوادم Google ، ويتم التفاعل من خلال المتصفح ، ولا يلزم التسجيل.
رمز عملنا مفتوح ومحمّل بالفعل في GoogleColab. ستكون نتائج تدريب الشبكة العصبية لكل منها فردية. وذلك لأن أوزان البداية يتم توزيعها بشكل عشوائي والنتائج مختلفة قليلاً. ضع في اعتبارك أيضًا أن تاريخ الاقتباسات عبارة عن بيانات صاخبة جدًا ، وبالتالي فإن جودة التدريب منخفضة ، ولكنها كافية لمعرفة كيف ستتنبأ الشبكة العصبية. يجب أن تكون التوقعات على مستوى مؤشر جيد تقريبًا.
المكان الوحيد الذي سنختصر فيه مسارنا هو جمع البيانات عن تاريخ زوج التداول. يتم إجراء المجموعة بواسطة تطبيق MetaTrader5 ، العملية ليست معقدة ، ولكنها تتطلب مهارات في العمل مع أحد المختبرين في MetaTrader5. ستؤدي التعليمات التفصيلية إلى مقالة منفصلة ، وبالتالي ، فإننا نستخدم البيانات المعدة مسبقًا لزوج اليورو / الدولار (بالنسبة لأولئك الذين يستخدمون MT5 ، يكون الرابط إلى الخبير في نهاية المقالة). سيكون من الممكن التأكد من أن البيانات المعدة مسبقًا لا "تتطلع إلى الأمام" ولا تشير إلى الشبكات العصبية في المرحلة الأخيرة ، عندما ننتقل إلى الاختبار مع السوق الحقيقي.
لنبدأ ...
GoogleColaboratory
يمكن العثور على "الكمبيوتر المحمول" في GoogleColab على هذا الرابط . لا تنس تسجيل الدخول إلى حساب Google (أو Gmail) أولاً.
انسخ "الكمبيوتر المحمول" لنفسك.
أنت الآن بحاجة إلى تشغيل جميع الكتل بالتسلسل من أعلى إلى أسفل.
1. تركيب المكتبات
ستقوم هذه الخطوة بتثبيت TensorFlow والمكتبات الأخرى. ستنتهي العملية من تلقاء نفسها ، ولا يلزم فعل أي شيء.
2. تحميل وإعداد البيانات للتدريب
في هذه المرحلة ، سيتم تحميل مجموعة البيانات ، بالإضافة إلى مجموعات بيانات منفصلة للتدريب والاختبار. تم جمع مجموعة البيانات لزوج EURUSD للفترة من بداية عام 2015 إلى يومنا هذا ، وخطوة جمع البيانات هي شمعدان M6. آخر أسبوعين - موقع الاختبار. البيانات الموجودة في مجموعة البيانات عبارة عن مجموعة من مئات الآلاف من الأسطر ، كل منها عبارة عن شيء من هذا القبيل
0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240
يتم فصل المتنبئين بفاصلات ، والحقول 3 و 4 من النهاية هي الإجابة الصحيحة حيث ذهب الاتجاه (0.1 - لأسفل ؛ 1.0 - أعلى). الحقل الثاني من النهاية هو معرّف الشمعدان. الأخير هو السعر عند فتح الشمعة. لا يتم استخدام المجالين الأخيرين للتدريب.
3. تدريب واختبار النموذج
اترك إعدادات الشبكة العصبية الافتراضية عند التشغيل الأول. سيتم التدريب في خمس تمريرات حتى يتم الحصول على نتيجة مقبولة. في حالة التدريب الناجح ، سيظهر شيء مثل هذا الجدول:
+------------+---------+----------+-------------+------------+
| | | | (%) | (%)
+------------+---------+----------+-------------+------------+
| 0 | 7174 | 7173 | 50 | 100.0 |
| 2 | 6956 | 6731 | 50 | 95.4 |
| 4 | 6430 | 6224 | 50 | 88.2 |
| 6 | 5867 | 5630 | 51 | 80.1 |
| 8 | 5250 | 5065 | 50 | 71.9 |
| 10 | 4636 | 4450 | 51 | 63.3 |
| 12 | 3964 | 3772 | 51 | 53.9 |
| 14 | 3330 | 3152 | 51 | 45.2 |
| 16 | 2758 | 2539 | 52 | 36.9 |
| 18 | 2198 | 2012 | 52 | 29.3 |
| 20 | 1700 | 1544 | 52 | 22.6 |
| 22 | 1298 | 1167 | 52 | 17.2 |
| 24 | 958 | 825 | 53 | 12.4 |
| 26 | 699 | 517 | 57 | 8.5 |
| 28 | 446 | 278 | 61 | 5.0 |
| 30 | 246 | 127 | 65 | 2.6 |
+------------+---------+----------+-------------+------------+
استجابة الشبكة العصبية هي تصنيف ثنائي حيث [0 1] "لأسفل" و [1 0] "لأعلى". لكن الشبكة العصبية لا تستجيب أبدًا بقيمة عددية ، ويمكن أن تكون استجابتها ، اعتمادًا على درجة "الثقة" ، من النوع [0.4 0.6]. في هذه الاستجابة ، تعتقد الشبكة العصبية أن السعر سينخفض ، لكنه ليس واثقًا جدًا ، وفي الاستجابة [0.1 0.9] انخفض أيضًا ، ولكن هناك ثقة أكبر بكثير. هذا ما تبدو عليه مجموعة الردود الحقيقية:
[[0.5084921 0.49150783]
[0.3930727 0.6069273 ]
[0.4930727 0.50692725]
...
[0.5189831 0.48101687]
[0.27955987 0.7204401 ]
[0.476914 0.5230861 ]]
حقل جدول "استجابة الشبكة" هو الفرق ضمن هذه الاستجابة الثنائية مضروبًا في 100. ومن الواضح أن هذا الاختلاف يميز "ثقة" الشبكة في توقعاتها. نتيجة لذلك ، بعد الضرب في 100 ، لدينا قيم في النطاق من 0 إلى 100. الآن لا يمكنك أن تأخذ جميع الإجابات ، ولكن حدد فقط تلك التي تتمتع فيها الشبكة العصبية "بثقة" كبيرة. لفهم مدى تأثير الإجابة على نتيجة التنبؤ ، يتم التحقق من قسم الاختبار للتأكد من صحة التنبؤ عند مستويات مختلفة من هذه "الثقة". كل صف من الجدول عبارة عن فحص لقيمة أعلى جديدة لاستجابة الشبكة. كلما زاد عامل تصفية "استجابة الشبكة" ، قل عدد الاستجابات ، ولكن كانت أفضل. يمكن رؤية ذلك في حقلي "الفوز" و "الخسارة". تتوقف العملية عندما تصبح الاستجابات (الإشارات) أقل من 1٪ من جميع بيانات الاختبار.
إذا لم يتم تدريب الشبكة في مسار واحد ، فما عليك سوى إعادة تشغيل هذه الكتلة (لا تحتاج إلى إعادة تحميل البيانات).
4. النتائج على الرسم البياني للتجارة
قم بتشغيل هذه الكتلة. كل شيء واضح هنا ، على الرسم البياني لزوج التداول من مجموعة الاختبار ، يتم رسم إشارات الشبكة العصبية ، والأخضر لأعلى ، والأحمر لأسفل.
5. الاختبار في السوق الحقيقي
أثناء هذا الفحص ، يتم تحميل بيانات الشبكة العصبية ، والتي يتم إنشاؤها عند إضافة شموع جديدة في الوقت الفعلي. أولئك. تم إنشاء الجزء الأخير من البيانات المستلمة عند افتتاح الشمعة ، في حالتنا ، الشمعة الصفرية M6. هذه البيانات ، بالطبع ، لا تحتوي على الإجابة الصحيحة ؛ الشبكة مدعوة لعمل توقعات حقيقية. يمكنك التأكد من عدم تغيير البيانات أثناء انتقالها إلى السجل بإلغاء التعليق على سطر الطباعة (البيانات) ومقارنة قيم سطر معين عند الإدخال وبعد فترة.
def get_from_ennro(symbol, tfm, dim, lim):
...
# print(data)
...
قد لا تكون هناك أي إشارات في السوق الحقيقي. يحدث هذا عندما يكون التقلب أقل مما هو عليه في منطقة الاختبار ، وفي هذه الحالة لا ترى الشبكة العصبية نقاط دخول.
الاستنتاجات
نعم! جودة التوقعات ليست مناسبة لفتح المراكز. لكننا لم نحدد مثل هذه المهمة ، الشيء الرئيسي هو أن الشبكة العصبية تتعلم وتتعرف على شيء ما على الرسم البياني ، وتخمن الاتجاه ، ومن الواضح أن توقعاتها ليست فوضوية. يرجى ملاحظة أننا استخدمنا أبسط تكوين للشبكة العصبية - كثافة متسلسلة مع طبقتين و 10 فترات فقط للتدريب. هناك مجال لمزيد من التطوير.
توجد بالفعل حلول تعمل على تحسين التوقعات نوعياً ، ولكن عنها في المقالة التالية.
ملاحظة بالنسبة لأولئك الذين يرغبون في جمع البيانات وإعدادها لأي زوج في MetaTrader5 بأنفسهم ، اقرأ هنا واستخدم GoogleColab ، المتاح هنا .