
في
مقال سابق ، بدأت بمقارنة طرق التحسين البارامترية ، أي اختيار المعلمات ، وتقييم ربحية تداول الروبوت خلال
الاختبار الخلفي اللاحق. اتضح أن طريقة مونت كارلو العادية - توليد مجموعات عشوائية غير مترابطة من معلمات الروبوت - تعمل بشكل جيد. أريد الآن اختبار خوارزمية شائعة ، بما في ذلك خوارزمية في مجتمع تجار البرمجة:
خوارزمية التحسين الوراثي .
خوارزمية جينية لتحسين استراتيجية التداول
سننظر في هذه الخوارزمية كمثال على تحسين معلمتين. المعلمات المحسنة
لروبوتنا هي فترة
المتوسط المتحرك و
TakeProfit . لمزيد من الانغماس في "علم الوراثة" ، دعونا نتفق على تسمية فترة المتوسط المتحرك الجين المسؤول عن "النمو" ، و TakeProfit - جين "لون العين".
في مساحة قيم المعلمات المقبولة ، في كل نقطة ، يصف كل زوج من الإحداثيات - "لون / ارتفاع العين" نظريًا "فرد" واحد. لنفترض أننا أنشأنا 10 أفراد بشكل عشوائي. كانت هذه هي
الخطوة الأولى من خوارزمية التحسين الوراثي - لإنشاء الجيل الأول:

في الفضاء الإحداثي M - T ، يتم تحديد النقاط بشكل عشوائي. على سبيل المثال ، النقطتان اللتان تم تمييزهما بإطار أحمر هما "أفراد" بأسماء محايدة جنسانيا (هذه نقطة مهمة!) Zhenya و Sasha. "نمو" ساشا (في الصيغة الأولية للمشكلة هو متوسط الفترة المتحركة) هو 11 وحدة ، "لون العين" هو 0.6 (عيون خضراء زرقاء). Zhenya يختلف قليلاً في المعلمات. تصف نفس الخصائص الأفراد الثمانية المتبقين.
الخطوة الثانية هي التكاثر
من الجيل الأول بأكمله ، نحدد عددًا معينًا من أنجح الأفراد. المعيار ، بوضوح ، هو قيمة
CF. هؤلاء الأفراد سوف يولدون أزواجًا بشكل عشوائي (لهذا السبب ، حصلوا على أسماء محايدة بين الجنسين). بشكل عام ، يمكن تعيين عدد من القواعد لمطابقة الأزواج. على سبيل المثال ، لتحديد الأفراد القريبين في الخصائص (أي حرفيا ، الأقرب في مساحة الإحداثيات) من الأفراد - التزاوج. يمكنك ، على العكس من ذلك ، البحث عن الأضداد (التكاثر). لم أتمكن من العثور على حجج لصالح أحد هذه الخيارات - في تنفيذي ، يتم تشكيل الأزواج بصرامة عن طريق الصدفة ... على سبيل المثال ، اجتازت Zhenya و Sasha المؤهل وقررتا أن تنجب سليل. ماذا يعني هذا في سياقنا:

من شخصين "أبوين" نحصل على الفرد الثالث ، الذي يرث جزءًا من خصائص أحد الوالدين ، وجزء من الآخر. على سبيل المثال ، أنجبت Zhenya و Sasha فردًا من Nikita (Nikita ، Nikita؟):
- ورث نيكيتا علامة "لون العين" (معلمة TakeProfit للروبوت) من أحد والديه - "Zhenya" ،
- "النمو" (فترة المتوسط المتحرك للروبوت) ورث نيكيتا من "ساشا" ... ولكن تم تعديله قليلاً في اتجاه والد آخر ، زينيا.
والحقيقة هي أنه كلما صغر حجم مساحة التحسين (في حالتنا يساوي 2) ، كلما كان النسل "أقرب". لا تحدد خوارزمية التحسين الجيني بدقة قواعد "وراثة" الجينات لفرد ابنة. لذلك ، بشكل عشوائي ، استعار نيكيتا لون عينيه دون أي تغييرات ، لكنه تبين أنه في الوسط بين كلا الوالدين ، أقرب إلى أحدهما. في تنفيذي ، بنفس النجاح ، يمكن أن يقترض نيكيتا المعلمات الأصلية من كلا الوالدين.
الخطوة الثالثة هي التكاثر
المحرك للعملية التطورية ، الانتقاء الطبيعي. أعطى 4 من أصل أفضل 10 أفراد 10 أحفاد أكثر. الآن لدينا 20 فردا. تتضمن خوارزمية التحسين الوراثي الحفاظ على حجم سكان ثابت. 10 أفراد يجب أن يموتوا. في هذا التطبيق ، "يموت" معظم أفراد الجيل الأول ، من 80٪ إلى 100٪.
وفقًا لذلك ، في مثالنا ، سيتكون الجيل الجديد من 0 ... والدين و 8 - 10 من نسلهم. بمعنى آخر ، إذا حذفت الكلمات ، فسيتم حساب المتجهات الجديدة لمعلمات الروبوت التجاري من المتجهات التي تم الحصول عليها في الخطوة السابقة ، "الانتشار" (توليفة) من أفضل 4 اختبارات. لن يقبل معظم "كبار السن" المشاركة في تكرار الاختيار الجديد (من الممكن تنفيذ خيارات أخرى).
إكمال الخوارزمية
يتم تكرار الاستنساخ والاختيار مرات N. على وجه التحديد ، في مثالنا ، للمقارنة مع ثلاث خوارزميات تم اختبارها مسبقًا ، يتم اختبار 4 أجيال من 10 أفراد ، أي ما مجموعه 40 اختبارًا.
ولكن قد يحدث أن ينهار سكان آخرون. وبعبارة أخرى ، ستكون جميع الاختبارات بالقرب من عدة نقاط. لتجنب هذا الوضع ، يتم استخدام العديد من الآليات ، على وجه الخصوص:
- ضخ "الدم الطازج" إلى السكان. إلى أحفاد السكان الحاليين يتم إضافة العديد من الأفراد الجدد الذين تم الحصول عليهم عن طريق الصدفة ، بنفس الطريقة التي تم بها تشكيل السكان الأوليين ،
- آلية التحور: قد يكون لدى فرد النسل بعض الخصائص (الإحداثيات) المختلفة قليلاً عن خصائص والديه:

في هذا المثال
- صفات السليل جين وجوس - "النمو" و "لون العين" يتم استعارتهما من كل من الوالدين ،
- تختلف خصائص نسل Sam و Siri إلى حد ما عن الخصائص المقابلة لكلا الأبوين.
في تنفيذي ، على الرغم من الطفرات و "الأفراد الجدد" ، كان يجب تحديث السكان بشكل دوري ككل لتجنب التقارب المبكر ، وتوطين السكان بالكامل في مساحة محدودة.
إذا عدنا إلى البيانات الأصلية التي اختبرنا عليها خوارزميات مونت كارلو ، وهبوط التدرج ، والخوارزمية التي تحمل اسم العمل "معركة بحرية" ، فيمكن توضيح عملية التحسين من خلال الرسوم المتحركة التالية:

كما ترى من الرسوم المتحركة ، في البداية يكون ترتيب النقاط فوضوياً ، ولكن مع الأجيال اللاحقة ، يميل إلى مناطق ذات قيم أعلى من DF.
قارن الآن الخوارزميات على نفس السطح:
P = f (
M ،
T ):

مونتي كارلو | أصل متدرج | "معركة بحرية" | الخوارزمية الجينية |
---|
95.7٪ | 92.1٪ | 97.0٪ | 96.8٪ |
متوسط قيمة الطرف الأقصى من CF كنسبة مئوية من القيمة العالمية.
بالطبع ، من السابق لأوانه الحكم على مجموعة واحدة من بيانات الإدخال ، ولكن حتى الآن ، فيما يتعلق بروبوت التداول لدينا ، أقل شأنا من خوارزمية "المعركة البحرية":
- بشكل غير مهم - بمتوسط القيمة شبه المثلى التي تم العثور عليها من التليف الكيسي ،
- يعطي أسوأ تقدير للاستقرار البارامي لخوارزمية التداول ، لأنه لا "يبحث" في محيط المعلمات شبه المثلى الموجودة بتفاصيل قليلة جدًا.
الاختبار النهائي ل 4 خوارزميات التحسين
تم إجراء الاختبار النهائي على 4 مجموعات من بيانات الإدخال - نتائج الاختبار الخلفي لاستراتيجية التداول في 4 قطاعات مختلفة من تاريخ الأسعار (
EURUSD : 2016 ، EURUSD: 2017 ،
XAUUSD : 2016 ، XAUUSD: 2017).

(أمثلة للمرشحات الرقمية كدالة
لمعلمتين لأربع سلاسل زمنية للأسعار)
هذه المرة ، تم تنفيذ التحسين وفقًا لثلاث معلمات:
- فترة المتوسط المتحرك "السريع"
- فترة المتوسط المتحرك "البطيء"
- TakeProfit (الربح على المعاملة ، بالنسبة المئوية ، عند الوصول إلى الصفقة التي تم إنجازها).
أخذت كل من المعلمات 20 قيمة مختلفة. الإجمالي لبناء الجدول
P = F (Mf ، Ms ، T)
حيث P هو الربح ، و Mf هي فترة المتوسط المتحرك "السريع" ، و Ms هي فترة المتوسط المتحرك "البطيء" ، و T هي TakeProfit ،
20 * 20 * 20 = تم إجراء 8000 تكرار اختبار.
تم تنفيذ التحسين مع تقييد 160 و 400 و 800 اختبار (حسابات DF في الإحداثيات المحددة). في كل مرة ، تم حساب متوسط النتائج لـ 1000 تكرار تحسين. كان متوسط قيمة DF للمتجه شبه المثلى للمعلمات:
مونتي كارلو | أصل متدرج | "معركة بحرية" | الخوارزمية الجينية |
---|
84.1٪ | 83.9٪ | 77.0٪ | 92.6٪ |
بشكل منفصل ، تجدر الإشارة إلى أن GA تظهر نتيجة جيدة حتى مع نسبة صغيرة من الاختبارات لإجمالي عدد ممكن من الخيارات:
الاختبارات | مونتي كارلو | أصل متدرج | "معركة بحرية" | الخوارزمية الجينية |
---|
160 من أصل 8000 | 79.1٪ | 76.7٪ | 73.1٪ | 87.7٪ |
400 من أصل 8000 | 84.7٪ | 85.0٪ | 77.4٪ | 93.7٪ |
800 من أصل 8000 | 88.6٪ | 90.1٪ | 80.4٪ | 96.3٪ |
بدلا من الاستنتاج
لقد فوجئت إلى حد ما بالنتيجة ، التي أظهرت خوارزمية التحسين الوراثي. لا أعتقد أن "النموذج الجيني" للطريقة على وجه التحديد قد زوده بالمركز الأول في القائمة. إلى حد ما ، وفقًا لمنطق اختيار الإحداثيات ، كان يشبه طرق الانقسام / النسبة الذهبية. ربما يجدر تجربة إحدى هذه الخوارزميات ومقارنة GA بها.
بالعودة إلى روبوت التداول ، تجدر الإشارة إلى كيف يتغير "ارتياح" السطح الذي تشكله CF (الربح) من عام إلى آخر. أي أنه بعد "تحسين" الروبوت في تاريخ عام 2017 ،
لا معنى لتطبيق هذه الإعدادات في 2018 (الربع الأول ، الشهر ، الأسبوع ... 2018).
من المحتمل أن استراتيجيات التداول الصناعية والعقيدة والعاجزة مثل استراتيجياتنا (الشراء عند تقاطع المتوسط المتحرك) لن تفقد أسلوبها قريبًا. لسوء الحظ ، لم يكن لدي أي استراتيجيات أخرى. وبناءً على ذلك ، فإنني أعزو ربح أو خسارة الروبوتات التجارية إلى الحظ بدلاً من مزايا / عيوب الخوارزمية. لذلك ، فإن مهمة التحسين البارامترية لروبوت التداول هي بالنسبة لي شخصيًا حصريًا ذات اهتمام أكاديمي.