Tuesday 16 January 2018

توليد استراتيجية التداول باستخدام الخوارزميات الجينية


نظام تداول الفوركس يعتمد على خوارزمية جينية.
لويس مندس بيدرو غودينهو جوانا دياس مؤلف البريد الإلكتروني.
في هذه الورقة، سيتم وصف خوارزمية وراثية تهدف إلى تحسين مجموعة من القواعد التي تشكل نظاما تجاريا لسوق الفوركس. كل فرد من السكان يمثل مجموعة من عشرة قواعد تجارية فنية (خمسة لدخول موقف وخمسة آخرين للخروج). هذه القواعد لديها 31 معلمات في المجموع، والتي تتوافق مع جينات الأفراد. وسيتطور السكان في بيئة معينة تحددها سلسلة زمنية لزوج عمل محدد. تمثل اللياقة البدنية لشخص معين مدى تمكنه من التكيف مع البيئة، ويتم حسابه بتطبيق القواعد المقابلة على السلاسل الزمنية، ومن ثم حساب النسبة بين الربح والحد الأقصى للسحب (نسبة ستيرلنغ) . تم استخدام زوجين من العملات: ور / أوسد و غبب / أوسد. واستخدمت بيانات مختلفة لتطور السكان واختبار أفضل الأفراد. وتناقش النتائج التي حققها النظام. أفضل الأفراد قادرون على تحقيق نتائج جيدة جدا في سلسلة التدريب. في سلسلة الاختبار، وتظهر الاستراتيجيات المتقدمة بعض الصعوبة في تحقيق نتائج إيجابية، إذا كنت تأخذ تكاليف المعاملات في الاعتبار. إذا كنت تجاهل تكاليف المعاملات، والنتائج هي في معظمها إيجابية، تبين أن أفضل الأفراد لديهم بعض القدرة التنبؤ.
ملاحظات.
شكر وتقدير.
ونود أن نشكر الحكام المجهولين الذين ساعدتنا تعليقاتهم في تحسين هذه الورقة.
المراجع.
معلومات حقوق التأليف والنشر.
المؤلفين والانتماءات.
لويس مندس 1 بيدرو غودينهو 2 جوانا دياس 3 كاتب البريد الإلكتروني 1. فاكولديد دي إكونوميا ونيفرزيديد دي كويمبرا كويمبرا البرتغال 2. فاكولديد دي إكونوميا و جيمف ونيفرزيديد دي كويمبرا كويمبرا البرتغال 3. فاكولديد دي إكونوميا أند إينيسك-كويمبرا ونيفرزيديد دي كويمبرا كويمبرا البرتغال.
حول هذه المقالة.
توصيات شخصية.
اقتباس المقال.
المراجع المرجعية ريس ريفوركس زوتيرو.
.BIB بيبتكس جابريف منديلي.
مشاركة المقال.
الوصول غير المحدود إلى المقال الكامل التحميل الفوري تشمل ضريبة المبيعات المحلية إن وجدت.
اقتباس المقال.
المراجع المرجعية ريس ريفوركس زوتيرو.
.BIB بيبتكس جابريف منديلي.
مشاركة المقال.
أكثر من 10 مليون وثيقة علمية في متناول يدك.
تبديل الطبعة.
&نسخ؛ 2017 سبرينجر الدولية للنشر أغ. جزء من الطبيعة سبرينجر.

توليد إستراتيجية التداول باستخدام الخوارزميات الجينية
إذا كنت لا تزال تبحث عن حافة في الأسواق، وأنظمة التداول الآلي هي أفضل وسيلة للحصول عليه. أعرف أكثر.
حقوق الطبع والنشر (ج) 2018 أدابتريد البرمجيات. كل الحقوق محفوظة.
نتائج الأداء البدني أو المحاكاة لها بعض القيود المتراكمة. لا سجل الأداء الفعلي، النتائج المحاكاة لا تمثل التداول الفعلي. أيضا، وبما أن التجارة لم تكن قد تم تنفيذها بشكل فعلي، فقد تكون النتائج قد تم تعويضها أو تعويضها بشكل أكبر عن التأثيرات، إن وجدت، لبعض عوامل السوق، مثل عدم وجود السيولة. برامج التداول المحاكاة بشكل عام هي أيضا تخضع لحقيقة أنها تم تصميمها مع الاستفادة من الأذهان. لا يتم تمثيل أي حساب أو سيكون من المرجح تحقيق الأرباح أو الخسائر مماثلة لتلك التي تظهر.
إيسيلانغواد و ترادستاتيون هي علامات تجارية مسجلة لشركة ترادستاتيون تيشنولوجيز، Inc.
وكان من أكبر الاتجاهات في تجارة التجزئة على مدى العقد الماضي زيادة في شعبية التداول الآلي. في هذا النوع من التداول، المعروف أيضا باسم تنفيذ النظام الآلي، يتم تنفيذ شراء وبيع الإشارات الناتجة عن نظام التداول تلقائيا من قبل منصة متصلة حساب الوساطة التاجر. ويتيح هذا التداول بدون استخدام اليدين، الأمر الذي يتيح سرعة التنفيذ، وقلة الأخطاء، والقدرة على تداول إطارات زمنية أقصر مع استراتيجيات ذات ترددات أعلى.
ويوضح الشكل 1 الخوارزمية الأساسية لبناء أنظمة التداول باستخدام الجيل التلقائي للشفرة. ويبدأ ذلك باستخدام طريقة للجمع بين العناصر المختلفة لاستراتيجية التداول. ويمكن أن تشمل هذه العناصر مؤشرات فنية مختلفة، مثل المتوسطات المتحركة، والستوكاستيك، وما إلى ذلك؛ أنواع مختلفة من أوامر الدخول والخروج؛ والشروط المنطقية لدخول السوق والخروج منها.
الشكل 1. الخوارزمية الأساسية لبناء الاستراتيجية الآلي.
بعد دمج العناصر المختلفة في استراتيجية متماسكة، يمكن تقييمها في السوق أو الأسواق ذات الاهتمام. وهذا يتطلب بيانات السوق - الأسعار، وحجم، والفائدة المفتوحة، وما إلى ذلك - لكل سوق. بشكل عام، سيكون لديك أيضا مجموعة من أهداف البناء للمساعدة في ترتيب أو تسجيل كل استراتيجية. وتشمل أمثلة أهداف البناء مقاييس أداء مختلفة، مثل صافي الربح، والتخفيض، ونسبة الفائزين، وعامل الربح، وما إلى ذلك. ويمكن ذكرها كحد أدنى من المتطلبات، مثل عامل ربح لا يقل عن 2.0، أو كأهداف لتعظيمها، مثل تعظيم صافي الربح.
الأساس النظري لتوليد الرمز التلقائي.
كما هو موضح أعلاه، وبناء نظام التداول باستخدام الجيل التلقائي رمز هو في الأساس مشكلة الأمثل. يتم وضع مزيج من عناصر الاستراتيجية التي تعظم أهداف البناء على أنها الاستراتيجية النهائية. بعض التجار يعترضون على أن أنظمة التداول يجب أن تبنى على أساس فرضية سلوك السوق أو العمل. إذا كان لديك فرضية جيدة لكيفية عمل الأسواق، يمكن بناء استراتيجية حول تلك الفرضية واختبارها. إذا كان يعمل، فإنه يدعم فرضية ويبرر تداول الاستراتيجية.
نمط نظام رمز مولد ل ترادستاتيون.
يصف هذا القسم نهج مخصص لتوليد التعليمات البرمجية التلقائي الذي نظام التداول ل ترادستاتيون تلقائيا بإنشاء أنظمة التداول الأخرى القائمة على نمط ل ترادستاتيون. يبحث نظام أوتوسيستمجين عن مجموعة من قواعد التداول، جنبا إلى جنب مع قيم المعلمات المرتبطة، التي تلبي مجموعة محددة من متطلبات الأداء.
في حين أن أي نوع تقريبا من مؤشر أو منطق التداول يمكن أن تدرج في مولد نظام التداول الموصوفة هنا، لإبقاء الأمور بسيطة إلى حد ما، فإن قواعد النظم ولدت تقتصر على أنماط الأسعار. سيكون لكل قاعدة دخول لنظام تجاري تم إنشاؤه النموذج التالي:
مفتاح هذه العملية هو العثور على أنظمة التداول المرشحة. ويمكن أن يتألف النظام من قاعدة واحدة إلى عشرة قواعد بالشكل الموضح أعلاه. يتم إدخال الصفقات في السوق إذا كانت جميع القواعد صحيحة، وتخرج الصفقات عدد معين من الحانات في وقت لاحق. وإذا تم ترميز هذا النظام كنظام تراديستاتيون تقليدي، وبحد أقصى قدره 10 قواعد، سيكون هناك 52 مدخلات. وهذا من شأنه أن يجعل استراتيجية مرهقة.
يتوفر رمز نظام أوتوسيستمجين ووظائفه ذات الصلة في برياكوت فوتشرز (برياكوتفوتشرز) في صفحة التنزيلات المجانية.
وكمثال على ذلك، النظر في سوق العقود الآجلة لسندات الخزانة لمدة 30 عاما (الرمز @ US. P في ترادستاتيون 8). تم تحسين أوتوسيستمجين على مدى السنوات ال 20 الماضية من أسعار T - السندات مع إدخال أوبستيب زيادة من 1 إلى 10000. وهذا يعني أن النظام تقييم 10،000 أنظمة التداول المختلفة. تم تشغيل الأمثل مرتين، مرة واحدة للتجار طويلة ومرة ​​واحدة للتجار قصيرة. تم استخدام متطلبات الأداء التالية: صافي ربح لا يقل عن 30،000 $، أسوأ حالة لا يزيد عن 7500 $، ما لا يقل عن 200 الصفقات، في المئة مربحة من 50٪ على الأقل، وعامل الربح لا يقل عن 1.2. على جهاز كمبيوتر ثنائي النواة يعمل بنظام التشغيل فيستا، استغرق الأمر حوالي 10 دقائق لتشغيل كل تحسين (10000 نظام لكل تحسين).
سيستيم 2332، @ US. P، 9/17/2007 12:23:00، لونغ ترادس.
صافي الربح = 53562.50، ماكس د = -7381.25، عدد الصفقات = 250، انتصارات في المئة = 56.80، عامل البروفيسور = 1.631.
فار: إنكست (فالس)؛
إنتنكست = فتح [2] & غ؛ = منخفض [16] و.
كلوز [14] & لوت؛ = لو [6] أند.
إذا إنتنكست ثم.
شراء شريط المقبل في السوق.
إذا بارسينسينتري = 2 ثم.
بيع شريط المقبل في السوق.
سيستيم 5771، @ US. P، 9/17/2007 12:27:00، لونغ ترادس.
صافي الربح = 42145.00، ماكس د = -5733.75، عدد الصفقات = 207، نسبة انتصارات = 57.00، عامل البروفيسور = 1.631.
فار: إنكست (فالس)؛
إنتنكست = هاي [7] & غ؛ = منخفض [19] و.
إغلاق [20] & غ؛ = أغلق [5] و.
مرتفع [18] & غ؛ = منخفض [2] و.
إذا إنتنكست ثم.
شراء شريط المقبل في السوق.
إذا بارسينسينتري = 2 ثم.
بيع شريط المقبل في السوق.
سيستيم 7622، @ US. P، 9/17/2007 12:29:00، لونغ ترادس.
صافي الربح = 59348.75، ماكس د = -7222.50، عدد الصفقات = 208، انتصارات في المئة = 60.58، عامل البروفيسور = 1.924.
فار: إنكست (فالس)؛
إنتنكست = لو [2] & لوت؛ = هاي [9] و.
فتح [11] & غ؛ = فتح [18] و.
إذا إنتنكست ثم.
شراء شريط المقبل في السوق.
إذا بارسينسينتري = 3 ثم.
بيع شريط المقبل في السوق.
سيستيم 7718، @ US. P، 9/17/2007 12:29:00، لونغ ترادس.
صافي الربح = 35526.25، ماكس د = -6936.25، عدد الصفقات = 292، انتصارات في المئة = 56.85، عامل البروفيسور = 1.418.
فار: إنكست (فالس)؛
إنتنكست = إغلاق [3] & غ؛ = عالية [19] و.
عالية [6] & لوت؛ = فتح [10] و.
إذا إنتنكست ثم.
شراء شريط المقبل في السوق.
إذا بارسينسينتري = 1 ثم.
بيع شريط المقبل في السوق.
سيستيم 6160، @ US. P، 9/17/2007 12:42:00، شورت ترادس.
صافي الربح = 31277.50، ماكس د = -6846.25، عدد الصفقات = 369، نسبة انتصارات = 51.76، معامل البروفيسور = 1.297.
فار: إنكست (فالس)؛
إنتنكست = هاي [9] & غ؛ = لو [6] و.
إغلاق [15] & غ؛ = مرتفع [8] و.
هاي [7] & لوت؛ = لو [20] و.
إذا إنتنكست ثم.
بيع شريط المقبل القصير في السوق.
إذا بارسينسينتري = 1 ثم.
شراء لتغطية شريط المقبل في السوق.
تتضمن القائمة لكل نظام رقم النظام (المقابل لإدخال أوبستيب)، ورمز السوق، والتاريخ الحالي، وعما إذا كان النظام طويلا فقط أم قصيرا فقط. يحتوي السطر التالي على بعض إحصاءات الأداء الموجزة للمساعدة في تقييم كل نظام. وأخيرا، يظهر رمز النظام. لتقييم الأنظمة في ترادستاتيون، يمكن نسخ التعليمات البرمجية بين خطي التعليق () ولصقها في استراتيجية في ترادستاتيون، ثم تشغيل في إطار المخطط.
آخر نظام في ملف الإخراج هو لنظام قصير فقط (# 6160). عند حفظها في ترادستاتيون كاستراتيجية وتطبيقها على نفس الرسم البياني السندات T، تم إنتاج منحنى الأسهم التالية:
الشكل 3. نظام قصير فقط لسندات T، 20 عاما الماضية، مع 15 $ في التجارة خصمها لتغطية تكاليف التداول، التي تم إنشاؤها بواسطة نظام أوتوسيستمجين.
البرمجة الوراثية لتوليد رمز التلقائي.
والنهج المخصص الموصوف في القسم السابق بسيط ولكنه ينطوي على قوتين: (1) لا تتلاقى الاستراتيجيات التي يتم إنشاؤها عشوائيا مع أهداف البناء، (2) ويصعب تعميم نموذج نظام النمط على استراتيجيات أكثر تعقيدا . وهذا يشير إلى ضرورة اتباع نهج أكثر تعقيدا.
وتسمى طريقة توليد الشفرات الأوتوماتيكية التي تعالج كل من هذه المخاوف البرمجة الجينية (غب)، 1 التي تنتمي إلى فئة من التقنيات تسمى الخوارزميات التطورية. وضعت الخوارزميات التطورية و غب على وجه الخصوص من قبل الباحثين في الذكاء الاصطناعي على أساس المفاهيم البيولوجية للتكاثر والتطور. خوارزمية غب "تطور" مجموعة من استراتيجيات التداول من السكان الأولي من أعضاء إنشاؤه عشوائيا. يتنافس أفراد السكان على بعضهم البعض بناء على "اللياقة البدنية". ويتم اختيار الأعضاء المجندين "كأهل" لإنتاج عضو جديد من السكان، يحل محل عضو أضعف (أقل ملاءمة).
يقلل من الحاجة إلى معرفة المؤشرات الفنية وتصميم الاستراتيجية. خوارزمية غب يختار قواعد التداول الفردية، والمؤشرات، وعناصر أخرى من الاستراتيجية بالنسبة لك.
عملية بناء القاعدة تسمح لتعقيد كبير، بما في ذلك قواعد التداول غير الخطية.
عملية غب يلغي معظم العناصر كثيفة العمالة ومملة من عملية تطوير الاستراتيجية التقليدية. أي التوصل إلى فكرة تجارية جديدة، وبرمجتها، والتحقق من الشفرة، واختبار الاستراتيجية، وتعديل الشفرة، وتكرارها. يتم كل هذا تلقائيا في غب.
عملية غب غير منحازة. في حين أن معظم المتداولين قد طوروا تحيزا ضد أو ضد مؤشرات محددة و / أو منطق التداول، يسترشد غب فقط بما يعمل.
من خلال دمج دلالات قواعد التداول السليمة، يمكن تصميم عملية غب لإنتاج قواعد التداول الصحيحة منطقيا ورمز خالية من الأخطاء.
عملية غب غالبا ما تنتج نتائج ليست فقط فريدة من نوعها ولكن غير واضحة. في كثير من الحالات، هذه الأحجار الكريمة الخفية سيكون من المستحيل تقريبا العثور على أي طريقة أخرى.
من خلال أتمتة عملية البناء، والوقت اللازم لوضع استراتيجية قابلة للحياة يمكن تخفيضها من أسابيع أو أشهر إلى بضع دقائق في بعض الحالات، وهذا يتوقف على طول ملف بيانات سعر المدخلات وغيرها من إعدادات البناء.
وقد استخدمت البرمجة الجينية بنجاح في مجموعة متنوعة من المجالات، بما في ذلك معالجة الإشارات ومعالجة الصور، والتحكم في العملية، والمعلوماتية الحيوية، ونمذجة البيانات، وتوليد رمز البرمجة، وألعاب الكمبيوتر، والنمذجة الاقتصادية؛ انظر، على سبيل المثال بولي وآخرون. 2 لمحة عامة عن استخدام غب في التمويل يتم توفيرها من قبل تشن. 3 كولين 4 كان واحدا من أول من شرح كيفية استخدام غب لتحسين مجموعات من القواعد لاستراتيجية التداول.
J. كوزا. البرمجة الوراثية. ميت الصحافة، كامبريدج، ما. عام 1992.
R. بولي، W. B. لانغدون، و N. F. مكفي. دليل ميداني للبرمجة الوراثية. نشرت عبر لولو ومتوفرة بحرية في gp-field-guide. uk، 2008. (مع مساهمات من J. R. كوزا).
شو هنغ تشن (محرر). الخوارزميات الجينية والبرمجة الوراثية في التمويل الحسابي. كلوير أكاديميك بوبليشرز، نورويل، ما. 2002.
أ. كولين. الخوارزميات الجينية للنمذجة المالية، التداول على الحافة. 1994، الصفحات 165-168. جون وايلي & أمب؛ نيويورك، نيويورك.
ريستو كارجالينن. قواعد التداول الفنية المتطورة ل S & أمب؛ P 500 العقود الآجلة، قواعد التداول المتقدمة، 2002، الصفحات 345-366. إلزيفير، براعة، أوكسفورد، أوك.
جان إيف بوتفين، باتريك سوريانو، مكسيم فالي. توليد قواعد التداول في أسواق الأسهم مع البرمجة الوراثية. أجهزة الكمبيوتر & أمب؛ بحوث العمليات، المجلد 31، العدد 7، حزيران / يونيه 2004، الصفحات 1033-1047.
ماسيميليانو كوسيتش. الاستثمار باستخدام أساليب التعلم التطوري والقواعد الفنية. المجلة الأوروبية للبحوث التشغيلية، المجلد 207، العدد 3، 16 كانون الأول / ديسمبر 2018، الصفحات 1717-1727.
خوارزمية البناء باستخدام البرمجة الوراثية.
وتوسعا على خوارزمية البناء المعروضة سابقا (انظر الشكل 1)، يرد وصف خوارزمية أكثر تفصيلا في الشكل 4 أدناه استنادا إلى البرمجة الجينية. تمثل المربعات الرمادية المظللة بيانات المدخلات التي تتضمن بيانات الأسعار للسوق (الأسواق) ذات الأهمية، والمؤشرات وأنواع الطلبات في ما يسمى مجموعة البناء، والخيارات ومعايير الأداء (أهداف البناء) التي يتم اختيارها بواسطة المستعمل.
الشكل 4. بناء خوارزمية لتوليد رمز التلقائي مع البرمجة الوراثية.
ويمكن استخدام عملية الممارس العام لتطوير عنصرين أساسيين من عناصر الاستراتيجية في وقت واحد: شروط الدخول وأوامر الدخول والخروج. وعادة ما تمثل شروط الدخول على شكل هياكل شجرة، كما هو مبين أدناه في الشكل 5.
ويمثل المفتاح لتطور أوامر الدخول والخروج باستخدام البرمجة الجينية أنواع مختلفة من الأوامر بطريقة عامة. على سبيل المثال، يمكن أن تمثل أسعار إيقاف الدخول والحد منها كما يلي:
في حين أن البرمجة الوراثية قادرة على توليد استراتيجيات التداول مع مجموعة كبيرة ومتنوعة، فمن الضروري أن تبدأ مع هيكل عام للاستراتيجيات لمتابعة. ويوفر هيكل الاستراتيجية المبين أدناه في الكود الزائف إطارا لبناء استراتيجيات تستند إلى شروط الدخول وأنواع الطلبات مثل تلك التي نوقشت أعلاه:
المدخلات: N1، N2، N3، ...
إذا كان الوضع مسطح و لونجنتريكديتيون صحيح ثم.
أمر دخول طويل ...
تهيئة أوامر الخروج الطويلة حسب الضرورة ...
إذا كان الوضع مسطح و شورتنتريكونديتيون صحيح ثم.
أمر دخول مختصر ...
تهيئة أوامر الخروج القصيرة حسب الضرورة ...
إذا كان الموقف طويلا ثم.
أمر خروج طويل 1 ...
أمر خروج طويل 2 ...
إذا كان الموقف قصير ثم.
أمر الخروج القصير 1 ...
أمر الخروج القصير 2 ...
[الخروج الاختياري في نهاية اليوم]
تبدأ الاستراتيجيات مع قائمة المدخلات. يتم توفير مدخلات لأي معلمة مؤشر، ونمط السعر طول النظر إلى الوراء، وأي المعلمات المطلوبة من قبل أوامر الدخول والخروج، مثل طول نظرة إلى الوراء ل أتر.
لتوضيح استخدام البرمجة الوراثية لتوليد رمز التلقائي في بناء الاستراتيجية، تم تشغيل برنامج أدابتريد البناء على الحانات اليومية لسوق الأسهم الآجلة مؤشر لعدد صغير من السكان وعدد محدود من الأجيال. كانت مقاييس الأداء المختارة لتوجيه العملية هي صافي الربح، عدد الصفقات، معامل الارتباط، الدلالة الإحصائية، ونسبة العائد / السحب. تم تحديد أهداف محددة لعدد الصفقات ونسبة العائد / السحب. تم زيادة المقاييس الأخرى المختارة. وكانت وظيفة اللياقة البدنية متوسطا مرجحا للمصطلحات لكل مقياس.
الشكل 6: النسبة المئوية للسكان الذين لديهم صافي ربح خارج العينة يزيد عن 000 1 دولار.
وبالمثل، زاد متوسط ​​صافي ربح أوس من السكان بعد خمسة و 10 أجيال، كما هو مبين في الشكل 7. ويلاحظ أن هذه النتائج هي بالنسبة إلى صافي ربح أوس. وبحكم التعريف، لا تستخدم البيانات خارج العينة في البناء، وبالتالي فإن نتائج الخدمة غير الملموسة غير متحيزة؛ فإنها لا تستفيد من التأخر. وهذا يعني أن عملية الممارس العام لا تميل فقط إلى تحسين النتائج داخل العينة على مدى الأجيال المتعاقبة، وهو تأثير مباشر لخوارزمية غب، ولكن النتائج أوس تميل أيضا إلى التحسن مع تطور الاستراتيجيات. وهذا يشير إلى بناء عالي الجودة.
رمز استراتيجية إيسيلانغواد ل ترادستاتيون.
عدد السكان: 46.
التي أنشأتها: أدابتريد منشئ الإصدار 1.1.0.0.
تاريخ الإنشاء: 10/19/2018 2:19:52 بيإم.
رمز ترادستاتيون ل تيسي 6 أو أحدث.
ملف السعر: C: \ TestData. txt.
فار: إنتكوندل (فالس)،
إنتكوندل = (هيغيست (فولوم، NL1) & غ؛ = لويست (فولوم، NL2)) أور (فولوم & لوت؛ أفيراج (فولوم، NL3))؛
إذا ماركتبوسيتيون = 0 ثم تبدأ إنتكوندل.
شراء شريط التالي في شافيراج (L، NBarEnL1) + إنتفرل * أترنل توقف.
إذا ماركتبوسيتيون = 0 و إنتكوندس ثم تبدأ.
بيع شريط المقبل القصير في أعلى (H، NBarEnS1) - إنتفس * أبسفالو (أدنى (L، NBarEnS2) - أدنى (H، NBarEnS3)) توقف.
ستوب = الطاقة (10، 10)؛
إذا ماركتبوسيتيون & غ؛ 0 ثم ابدأ.
إذا بارسينسينتري & غ؛ = نباريكسل ثم.
بيع شريط المقبل في السوق.
بيع شريط المقبل في إنتريبريس + تارجفرل * أترتارغل الحد؛
إذا ماركتبوسيتيون & لوت؛ 0 ثم ابدأ.
إذا إنتريبريس - C & غ؛ أترفرترايلز * أترترايلز ثم.
إذا سترايلون ثم تبدأ.
نوستوب = إنتريبريس - ترايلبكتس * (إنتريبريس - C) / 100 .؛
ستوب = مينليست (ستوب، نيوستوب)؛
إذا بارسينسينتري & غ؛ = نباريكس ثم.
شراء لتغطية شريط المقبل في السوق.
إذا سترايلون ثم.
شراء لتغطية شريط المقبل في وقف ستوب.
بناء أنظمة التداول عبر توليد رمز التلقائي هو نوع من التحسين. وربما يكون معظم التجار المنهجيين على دراية بتحسين المعلمة، حيث يتم تحسين المدخلات إلى الاستراتيجية. على عكس الأمثل المعلمة، توليد رمز التلقائي يحسن منطق التداول الاستراتيجية. ومع ذلك، فإن خطر الإفراط في التحسين، أو "الإفراط في تركيب"، هو أيضا مصدر قلق لتوليد رمز التلقائي، تماما كما هو الحال بالنسبة الأمثل المعلمة.
للحصول على معلومات عن البرمجيات لبناء استراتيجيات التداول باستخدام البرمجة الوراثية، الرجاء الضغط هنا.
إذا كنت ترغب في أن تكون على علم بالتطورات الجديدة، والأخبار، والعروض الخاصة من أدابتريد البرمجيات، يرجى الانضمام إلى قائمة البريد الإلكتروني لدينا. شكرا لكم.
حقوق الطبع والنشر © 2004-2018 أدابتريد البرمجيات. كل الحقوق محفوظة.

SnowCron.
مجانا E - فئات البريد.
استخدام الخوارزمية الجينية لخلق استراتيجية تداول الفوركس مربحة. الخوارزمية الجينية في اللحاء الشبكات العصبية البرمجيات فيدفوروارد باكبروباغاتيون الشبكة العصبية تطبيق الحسابات الجينية على أساس تداول العملات الأجنبية.
يستخدم هذا المثال مفاهيم وأفكار المقالة السابقة، لذا يرجى قراءة الخوارزمية الجينية للشبكة العصبية في فوريكس ترادينغ سيستمز أولا، على الرغم من أنها ليست إلزامية.
حول هذا النص.
أولا وقبل كل شيء، يرجى قراءة إخلاء المسؤولية. هذا هو مثال على استخدام اللحاء الشبكات العصبية وظائف البرمجيات الخوارزمية الجينية، وليس مثالا على كيفية القيام التداول المربح. أنا لست المعلم الخاص بك، لا ينبغي أن أكون مسؤولا عن الخسائر الخاصة بك.
كورتيكس نيورال نيتوركس البرامج لديها شبكات عصبية في ذلك، و ففب ناقشنا من قبل هو طريقة واحدة فقط لاختيار استراتيجيات تداول العملات الأجنبية. بل هو تقنية جيدة وقوية وعند تطبيقها بشكل صحيح، واعد جدا. ومع ذلك، فإنه لديه مشكلة - لتعليم شبكة العصبية تن، ونحن بحاجة إلى معرفة "الناتج المطلوب".
فمن السهل أن تفعل عندما نفعل وظيفة التقريب، ونحن فقط تأخذ القيمة "الحقيقية" وظيفة، لأننا نعرف ما ينبغي أن يكون.
عندما نقوم بتنبؤ الشبكة العصبية، نحن نستخدم تقنية (وصفها في المقالات السابقة) لتدريس الشبكة العصبية في التاريخ، مرة أخرى، إذا توقعنا، مثلا، سعر الصرف، ونحن نعرف (أثناء التدريب) ما هو التنبؤ الصحيح هو .
ومع ذلك، عندما نقوم ببناء نظام التداول، ليس لدينا أي فكرة عن قرار التداول الصحيح، حتى لو كنا نعرف سعر الصرف! كما هو الأمر في الواقع، لدينا العديد من استراتيجيات تداول العملات الأجنبية يمكننا استخدامها في أي لحظة من الزمن، ونحن بحاجة إلى العثور على واحد جيد - كيف؟ ماذا يجب أن نطعم كمخرجات مطلوبة من الشبكة العصبية لدينا؟
إذا كنت قد اتبعت مقالنا السابق، كما تعلمون، أننا قد خدع للتعامل مع هذه المشكلة. علمنا الشبكة العصبية للقيام سعر الصرف (أو مؤشر سعر الصرف القائم) التنبؤ، ثم استخدم هذا التنبؤ للقيام التداول. ثم، خارج الشبكة العصبية جزء من البرنامج، اتخذنا قرارا بشأن الشبكة العصبية هو أفضل واحد.
الخوارزميات الجينية يمكن التعامل مع هذه المشكلة مباشرة، فإنها يمكن حل المشكلة المذكورة بأنها "العثور على أفضل إشارات التداول".
في هذه المقالة نحن ذاهبون لاستخدام اللحاء العصبية الشبكات البرمجيات لإنشاء مثل هذا البرنامج.
استخدام الخوارزمية الجينية.
الخوارزميات الجينية هي متطورة جدا، ومتنوعة جدا. إذا كنت تريد أن تتعلم كل شيء عنهم، وأنا أقترح عليك استخدام ويكيبيديا، وهذه المقالة هي فقط حول ما اللحاء الشبكات العصبية البرمجيات يمكن القيام به.
وجود برامج الشبكات العصبية اللحاء، يمكننا إنشاء شبكة العصبية التي تأخذ بعض المدخلات، ويقول، قيم مؤشر، وتنتج بعض الإخراج، ويقول، إشارات التداول (شراء وبيع وعقد). وقف الخسارة / أخذ مستويات الربح للوظائف ليتم فتحه.
وبطبيعة الحال، إذا كنا البذور هذه الأوزان الشبكة العصبية لاعبالزبون عشوائيا، وسوف تكون نتائج التداول الرهيبة. ومع ذلك، دعونا نقول نحن خلق عشرات من هذه الشبكات الوطنية. ثم يمكننا اختبار أداء كل منهم، واختيار أفضل واحد، والفائز.
كان هذا هو "الجيل الأول" من ن. للاستمرار في الجيل الثاني، نحن بحاجة إلى السماح للفائز لدينا "الإنجاب"، ولكن لتجنب الحصول على نسخ متطابقة، دعونا نضيف بعض نويس عشوائي لأوزان التنازل.
في الجيل الثاني، لدينا لدينا الجيل الأول الفائز وانها ناقصة (تحور) نسخ. دعونا نفعل الاختبار مرة أخرى. سيكون لدينا الفائز آخر، وهو أفضل ثم أي شبكة العصبية الأخرى في الجيل.
وما إلى ذلك وهلم جرا. نحن ببساطة نسمح للفائزين بالتكاثر، والقضاء على الخاسرين، تماما كما هو الحال في تطور الحياة الحقيقية، وسوف نحصل على أفضل شبكة تداولنا العصبية، دون أي معرفة مسبقة حول ما يجب أن يكون عليه نظام التداول (الخوارزمية الجينية).
الخوارزمية الجينية للشبكة العصبية: مثال 0.
هذا هو أول مثال على الخوارزمية الجينية، وهو مثال بسيط جدا. نحن ذاهبون إلى المشي من خلال ذلك خطوة بخطوة، لتعلم كل الحيل أن الأمثلة التالية سوف تستخدم.
تحتوي الشفرة على تعليقات مضمنة، لذلك دعونا نركز فقط على اللحظات الرئيسية.
أولا، أنشأنا شبكة عصبية. ويستخدم الأوزان العشوائية، ولم يتم تعليمه بعد.
ثم، في دورة، ونحن جعل 14 نسخة منه، وذلك باستخدام MUTATION_NN التبخير. هذه الوظيفة يجعل نسخة من شبكة العصبية المصدر، إضافة قيم عشوائية من 0 إلى (في حالتنا) 0.1 لجميع الأوزان.
نحن نحافظ على مقابض ل 15 نونس الناتجة في صفيف، يمكننا أن نفعل ذلك، والمقبض هو مجرد عدد صحيح.
السبب في أننا نستخدم 15 ننس لا علاقة له مع التداول: اللحاء الشبكات العصبية البرمجيات يمكن رسم ما يصل إلى 15 خطوط على الرسم البياني في وقت واحد.
يمكننا استخدام نهج مختلفة للاختبار. أولا، يمكننا استخدام مجموعة التعلم، كل ذلك في وقت واحد. ثانيا، يمكننا اختبار على سبيل المثال، 12000 ريسوردس (من أصل 100000)، والمشي من خلال مجموعة التعلم، من البداية إلى النهاية. وهذا سيجعل ليرنيغس مختلفة، ونحن سوف ننظر للشبكة العصبية التي هي مربحة على أي جزء معين من البيانات، وليس فقط على مجموعة كاملة. النهج الثاني يمكن أن يعطينا مشاكل، إذا تغير البيانات، من البداية إلى النهاية. ثم ستتطور الشبكة، وستحصل على القدرة على التداول في نهاية مجموعة البيانات، وفقدان القدرة على التجارة في بدايتها.
لحل هذه المشكلة، ونحن في طريقنا لاتخاذ عشوائي 12000 سجلات شظايا من البيانات، وإطعامه إلى الشبكة العصبية.
نضيف أدناه طفل واحد لكل شبكة، مع أوزان مختلفة قليلا. ملاحظة، أن 0.1 للطفرة تانج ليس الخيار الوحيد، كما هو الأمر الواقع، حتى هذه المعلمة يمكن أن يكون الأمثل باستخدام الخوارزمية الجينية.
تضاف ننس التي تم إنشاؤها حديثا بعد 15 منها القائمة. بهذه الطريقة لدينا 30 ننس في صفيف، 15 القديمة و 15 جديدة. ثم سنقوم بالقيام بالدورة التالية من الاختبار، وقتل الخاسرين، من كلا الأجيال.
للقيام الاختبار، ونحن نطبق الشبكة العصبية لبياناتنا، لإنتاج مخرجات، ومن ثم استدعاء وظيفة الاختبار، التي تستخدم هذه النواتج لمحاكاة التداول. يتم استخدام نتائج التداول للتنازل، والتي هي الأفضل.
نحن نستخدم فاصلا من سجلات نلارن، من نستارت إلى نستارت + نلارن، حيث نستارت هو نقطة عشوائية ضمن مجموعة التعلم.
الرمز أدناه هو خدعة. السبب الذي نستخدمه هو توضيح الحقيقة، أن الخوارزمية الجينية يمكن أن تخلق خوارزمية جينية، لكنها لن تكون بالضرورة أفضل واحد، وأيضا، لاقتراح، أنه يمكننا تحسين النتيجة، إذا كنا نعني بعض القيود على التعلم معالجة.
فمن الممكن، أن نظام التداول لدينا يعمل بشكل جيد جدا على الصفقات الطويلة، والفقراء جدا على القصير، أو العكس بالعكس. إذا، على سبيل المثال، الصفقات الطويلة جيدة جدا، هذه الخوارزمية الجينية قد يفوز، حتى مع خسائر كبيرة على الصفقات قصيرة.
لتجنب ذلك، ونحن تعيين المزيد من الوزن إلى الصفقات الطويلة في التداولات الفردية والقصيرة في دورات حتى. هذا هو مجرد مثال، ليس هناك ما يضمن، أنه سيحسن شيئا. المزيد عن ذلك أدناه، في مناقشة حول التصحيحات. من الناحية الفنية، لم يكن لديك للقيام بذلك، أو يمكن أن تجعل من مختلف.
إضافة الربح إلى صفيف فرزها. فإنه يعود موضع الإدراج، ثم نستخدم هذا الموقف لإضافة مقبض الشبكة العصبية والتعلم واختبار الأرباح إلى صفائف غير فرزها. الآن لدينا بيانات للشبكة العصبية الحالية في نفس مؤشر مجموعة أرباحها.
والفكرة هي الوصول إلى مجموعة من الشبكات الوطنية، مرتبة حسب الربحية. كما صفيف هو الفرز حسب الربح، لإزالة 1/2 من الشبكات، التي هي أقل ربحية، ونحن بحاجة فقط لإزالة ننس 0 إلى 14.
وتستند قرارات التداول على قيمة إشارة الشبكة العصبية، من وجهة النظر هذه البرنامج هو مطابق لأمثلة من المادة السابقة.
استراتيجية التداول الفوركس: مناقشة المثال 0.
أولا وقبل كل شيء، دعونا نلقي نظرة على الرسوم البيانية. الرسم البياني الأول للربح خلال التكرار الأول ليس جيدا على الإطلاق، كما ينبغي أن يتوقع، الشبكة العصبية يفقد المال (image_00_gen_0.png صورة نسخ بعد التكرار الأول من "الصور" مجلد):
صورة للربح على دورة 15 هو أفضل، وأحيانا، يمكن خوارزمية وراثية تعلم سريع حقا:
ومع ذلك، لاحظ التشبع على منحنى الربح.
ومن المثير للاهتمام أيضا أن ننظر في طريقة تغير الأرباح الفردية، مع الأخذ في الاعتبار، أن عدد منحنى، ويقول، 3 ليس دائما لنفس الشبكة العصبية، كما يجري ولدت وإنهاء كل الوقت:
ونلاحظ أيضا أن القليل من نظام التداول الآلي في الفوركس يؤدي إلى ضعف في الصفقات القصيرة، وأفضل بكثير على الأطوال، التي قد تكون أو لا تكون ذات صلة بالحقيقة، أن الدولار يتراجع مقارنة باليورو خلال تلك الفترة. كما قد يكون لها علاقة مع معلمات مؤشرنا (ربما، نحن بحاجة إلى فترة مختلفة للسراويل القصيرة) أو اختيار المؤشرات.
هنا هو التاريخ بعد 92 و 248 دورات:
لمفاجأة لدينا، خوارزمية وراثية فشلت تماما. دعونا نحاول معرفة السبب، وكيفية مساعدة الوضع.
أولا وقبل كل شيء، ليس كل جيل من المفترض أن يكون أفضل من بريفيوس واحد؟ الجواب ليس، على الأقل ليس ضمن النموذج الذي استخدمناه. إذا أخذنا التعلم الكامل مجموعة في وقت واحد، واستخدامها مرارا وتكرارا لتعليم لدينا ننس، ثم نعم، فإنها سوف تتحسن على كل جيل. ولكن بدلا من ذلك، أخذنا شظايا عشوائية (12000 السجلات في الوقت المناسب)، واستخدامها.
سؤالان: لماذا فشل النظام على شظايا عشوائية من مجموعة التعلم، ولماذا لم نستخدم مجموعة التعلم بأكمله؟ حسنا. للإجابة على السؤال الثاني، فعلت. أداء ننس بشكل كبير - على مجموعة التعلم. وفشلت في اختبار مجموعة، لنفس السبب أنه فشل عندما استخدمنا التعلم فب. لوضعها بشكل مختلف، حصلت لدينا نونس أوفرسبيسياليزد، تعلموا كيفية البقاء على قيد الحياة في البيئة التي تستخدم ل، ولكن ليس خارج ذلك. هذا يحدث الكثير في الطبيعة.
كان القصد من النهج الذي أخذنا بدلا من ذلك للتعويض عن ذلك، من خلال إجبار ننس لأداء جيدة على أي جزء عشوائي من مجموعة البيانات، بحيث نأمل، فإنها يمكن أن تؤدي أيضا على مجموعة اختبار غير مألوف. بدلا من ذلك، فشلت كل من الاختبار وعلى مجموعة التعلم.
تخيل الحيوانات، الذين يعيشون في الصحراء. وهناك الكثير من الشمس، لا الثلوج على الإطلاق. هذا هو ميتافور للسوق ريج، كما لدينا بيانات ننس تلعب دور البيئة. الحيوانات تعلمت أن تعيش في الصحراء.
تخيل الحيوانات التي تعيش في مناخ بارد. الثلج ولا أشعة الشمس على الإطلاق. حسنا، تم تعديلها.
ومع ذلك، في تجربتنا، وضعنا عشوائيا لدينا ن في الصحراء، في الثلج، في الماء، على الأشجار. من خلال تقديم لهم شظايا مختلفة من البيانات (ارتفاع عشوائيا، السقوط، شقة). ماتت الحيوانات.
أو، لوضعها بشكل مختلف، اخترنا أفضل شبكة العصبية لمجموعة البيانات العشوائية 1، والتي، على سبيل المثال، كان لارتفاع السوق. ثم قدمنا، إلى الفائزين وأطفالهم، بيانات السوق المتساقطة. كان أداء الشبكات الوطنية ضعيفا، أخذنا أفضل أداء ضعيف، ربما، أحد الأطفال المتحولين، الذي فقد القدرة على التجارة في الأسواق الصاعدة، ولكن حصلنا على بعض القدرة على التعامل مع هبوط واحد.
ثم تحولنا الجدول مرة أخرى، ومرة ​​أخرى، حصلنا على أفضل أداء - ولكن أفضل بين الفقراء الأداء. نحن ببساطة لم نعطي لدينا الوطنية أي فرص لتصبح عالمية.
هناك تقنيات تسمح الخوارزمية الجينية لتعلم معلومات جديدة دون فقدان الأداء على المعلومات القديمة (بعد كل شيء، يمكن للحيوانات أن تعيش في الصيف وفي الشتاء، أليس كذلك؟ لذلك التطور هو قادرة على التعامل مع التغييرات المتكررة). قد نناقش هذه التقنيات في وقت لاحق، على الرغم من أن هذه المقالة هي أكثر حول استخدام اللحاء الشبكات العصبية البرمجيات، من حول بناء نظام التداول الآلي الفوركس ناجحة.
الخوارزمية الوراثية للشبكة العصبية: مثال 1.
الآن حان الوقت للحديث عن التصحيحات. وهناك خوارزمية وراثية بسيطة أنشأناها خلال الخطوة السابقة لها عيوب رئيسية. أولا، فشلت في التجارة مع الربح. على ما يرام، يمكننا أن نحاول استخدام نظام مدربين جزئيا (كان مربحا في البداية). العيب الثاني هو أكثر خطورة: ليس لدينا السيطرة على الأشياء، أن هذا النظام لا. على سبيل المثال، قد تتعلم أن تكون مربحة، ولكن مع سحب ضخمة.
بل هو حقيقة معروفة، أنه في واقع الحياة، يمكن للتطور تحسين أكثر من معلمة واحدة في وقت واحد. على سبيل المثال، يمكننا الحصول على حيوان، التي يمكن تشغيلها بسرعة وتكون مقاومة للبرد. لماذا لا تحاول أن تفعل الشيء نفسه في نظام التداول الآلي الفوركس لدينا؟
هذا عندما نستخدم التصحيحات، التي ليست سوى مجموعة من العقوبات إضافية. قل، يتداول نظامنا مع سحب 0.5، في حين نريد أن نؤكد ذلك إلى 0 - 0.3 الفاصل الزمني. ل "أخبر" النظام الذي ارتكب خطأ، ونحن خفض أرباحها (واحدة تستخدم لتحديد، والتي فازت الخوارزمية الجينية) إلى درجة، وهذا يتناسب مع حجم د. ثم، خوارزمية التطور يعتني بقية.
هناك عدد قليل من العوامل التي نريد أن نأخذها في الاعتبار: قد نرغب في الحصول على عدد متساو تقريبا من عمليات الشراء والبيع، ونحن نريد أن يكون لدينا المزيد من العمليات المربحة، ثم الإخفاقات، قد نرغب في رسم بياني للربح تكون خطية وهلم جرا.
في تطور_01.تسك نقوم بتنفيذ مجموعة بسيطة من التصحيحات. أولا وقبل كل شيء، نستخدم بعض العدد الكبير لقيمة تصحيح أولية. ونحن نضاعف ذلك إلى القيم الصغيرة (عادة، بين 0 و 1)، اعتمادا على "العقاب" نريد تطبيق. ثم نقوم بضرب أرباحنا لهذا التصحيح. ونتيجة لذلك، يتم تصحيح الربح، لتعكس مدى توافق الخوارزمية الجينية مع معاييرنا الأخرى. ثم نستخدم النتيجة للعثور على الشبكة العصبية الفائز.
استراتيجية تداول الفوركس: مناقشة المثال 1.
المثال 1 يعمل بشكل أفضل بكثير من المثال 0. خلال أول 100 دورة، تعلم الكثير، والرسوم البيانية الربح تبدو مطمئنة. ومع ذلك، كما هو الحال في المثال 0، الصفقات الطويلة هي أكثر ربحية بكثير، وهو ما يعني على الأرجح أن هناك مشكلة في نهجنا. ومع ذلك، وجد النظام وجود توازن بين زوجين من الظروف الأولية المتناقضة:
هناك بعض الديناميات الإيجابية سواء في مجموعة التعلم، والأهم من ذلك، في مجموعة الاختبار.
أما بالنسبة لمزيد من التعلم، في دورة 278 يمكننا أن نرى، أن نظامنا حصلت أوفيرترايند. وهذا يعني، ما زلنا نحرز تقدما في مجموعة التعلم:
ولكن مجموعة الاختبار تظهر الضعف:
This is a common problem with NNs: when we teach it on learning set, it learns to deal with it, and sometimes, it learns too well - to the degree, when it looses performance on testing set.
To deal with that problem, a "traditional" solution is used: we keep looking for the Neural Network , that performs best on testing set, and save it, overwriting previous best one, every time new peak is reached. This is the same approach, we used in FFBP training, except, this time we have to do it ourselves (adding code, that looks for a best Neural Network on a testing set, and calling SAVE_NN, or exporting weights of Neural Network to a file). This way, when you stop your training, you'll have the best performer ON TESTING SET saved and waiting for you.
Note also, that it is not the max. profit you are after, but optimal performance, so consider using corrections, when looking for a best performer on a testing set.
Genetic Algorithm for FOREX Technical Analysis: Where now?
After you got your winner Neural Network , you can follow the steps, described in previous article, to export weights of that Neural Network , and then to use them in your real time trading platform, like Meta Trader, Trade Station and so on.
Alternatively, you can focus on other ways of optimizing the Neural Network , unlike with FFBP algorithm, here you can get avay from using learning and testing sets, and move sequential learning.

كيف تعمل.
Manual creation of a trading strategy - the old way.
Manual development of a new trading strategy is a slow process. It starts with trader using his experience and knowledge to pick up the elements of the trading strategy like technical indicators, price patterns, entry and exit order types and general strategy design.
When the prototype is finished, strategy is tested on the historical data to prove its profitability. The backtest often reveals that the strategy results are not acceptable. So the trader has to alter it, add or change some indicators, try different ideas, different values and then test it again. It is a long trial-and-error process with numerous iterations, revisions and testing until the strategy achieves acceptable results.
Now imagine you have a tool that does all this manual work for you, and does it 1000x faster.
The StrategyQuant way.
StrategyQuant requires only a fraction of the second to automatically generate new trading strategy. It uses various combinations of technical indicators and price patterns as the entry rules, combines it with various order types (market, limit, . ) and with various exit rules (fixed profit target, trailing stop, etc..).
In the end it tests the new strategy on the historical data to find out if it is profitable. StrategyQuant can do this over and over again, generating and testing tens of the new unique strategies every second! All you have to do is pick up the best ones!
How does it works? - Using Genetic Evolution.
Genetic Evolution takes the process of finding a suitable trading strategies even further. In this mode StrategyQuant first creates a number of random strategies, which are used as the initial population in the evolution.
This initial generation of strategies is then "evolved" over successive generations using genetic programming technology. This process imitates the evolution - the algorithm chooses the fittest strategies (using selected performance criteria) in every generation, and the group of fittest candidates is then used to produce new generation of trading strategies.
فاسيبوك مدونة الاشتراك في النشرة الإخبارية لدينا.
الحصول على ستراتيكونت + المكافآت.
ماذا ستحصل؟
كامل 14 يوما نسخة من ستراتيغيوانت.
كان ستراتيغيكانت قرارنا أفضل. نجد المزيد والمزيد من الفرص مثيرة للاهتمام مع مساعدة من البرنامج. منذ بدأنا باستخدام ستراتيغيوانت، لقد نمت من القادمين الجدد إلى ألغو التداول في المهنيين.

The R Trader.
Using R and related tools in Quantitative Finance.
Using Genetic Algorithms in Quantitative Trading.
The question one should always asked him/herself when using technical indicators is what would be an objective criteria to select indicators parameters (e. g., why using a 14 days RSI rather than 15 or 20 days?). Genetic algorithms (GA) are well suited tools to answer that question. In this post I’ll show you how to set up the problem in R. Before I proceed the usual reminder: What I present in this post is just a toy example and not an invitation to invest. It’s not a finished strategy either but a research idea that needs to be further researched, developed and tailored to individual needs.
What are genetic algorithms?
The best description of GA I came across comes from Cybernatic Trading a book by Murray A. Ruggiero. “Genetic Algorithms were invented by John Holland in the mid-1970 to solve hard optimisation problems. This method uses natural selection, survival of the fittest”. The general process follows the steps below:
Encode the problem into chromosomes Using the encoding, develop a fitness function for use in evaluating each chromosome’s value in solving a given problem Initialize a population of chromosomes Evaluate each chromosome in the population Create new chromosomes by mating two chromosomes. This is done by muting and recombining two parents to form two children (parents are selected randomly but biased by their fitness) Evaluate the new chromosome Delete a member of the population that is less fit than the new chromosome and insert the new chromosome in the population. If the stop criteria is reached (maximum number of generations, fitness criteria is good enough…) then return the best chromosome alternatively go to step 4.
From a trading perspective GA are very useful because they are good at dealing with highly nonlinear problems. However they exhibit some nasty features that are worth mentioning:
Over fitting: This is the main problem and it’s down to the analyst to set up the problem in a way that minimises this risk. Computing time : If the problem isn’t properly defined, it can be extremely long to reach a decent solution and the complexity increases exponentially with the number of variables. Hence the necessity to carefully select the parameters.
There are several R packages dealing with GA, I chose to use the most common one: rgenoud.
Daily closing prices for most liquid ETFs from Yahoo finance going back to January 2000. The in sample period goes from January 2000 to December 2018. The Out of sample period starts on January 2018.
The logic is as following: the fitness function is optimised over the in sample period to obtain a set of optimal parameters for the selected technical indicators. The performance of those indicators is then evaluated in the out of sample period. But before doing so the technical indicators have to be selected.
The equity market exhibits two main characteristics that are familiar to anyone with some trading experience. Long term momentum and short term reversal. Those features can be translated in term of technical indicators by: moving averages cross over and RSI. This represents a set of 4 parameters: Look-back periods for long and short term moving averages, look-back period for RSI and RSI threshold. The sets of parameters are the chromosomes . The other key element is the fitness function . We might want to use something like: maximum return or Sharpe ratio or minimum average Drawdown. In what follows, I chose to maximise the Sharpe ratio.
The R implementation is a set of 3 functions:
fitnessFunction : defines the fitness function (e. g., maximum Sharpe ratio) to be used within the GA engine tradingStatistics : summary of trading statistics for the in and out of sample periods for comparison purposes genoud : the GA engine from the rgenoud package.
The genoud function is rather complex but I’m not going to explain what each parameter means as I want to keep this post short (and the documentation is really good).
In the table below I present for each instrument the optimal parameters (RSI look-back period, RSI threshold, Short Term Moving Average, and Long Term Moving Average) along with the in and out of sample trading statistics.
Before commenting the above results, I want to explain a few important points. To match the logic defined above, I bounded the parameters to make sure the look-back period for the long term moving average is always longer that the shorter moving average. I also constrained the optimiser to choose only the solutions with more than 50 trades in the in sample period (e. g;, statistical significance).
Overall the out of sample results are far from impressive. The returns are low even if the number of trades is small to make the outcome really significant. However there’s a significant loss of efficiency between in and out of sample period for Japan (EWJ) which very likely means over fitting.
This post is intended to give the reader the tools to properly use GA in a quantitative trading framework. Once again, It’s just an example that needs to be further refined. A few potential improvement to explore would be:
fitness function : maximising the Sharpe ratio is very simplistic. A “smarter” function would certainly improve the out of sample trading statistics pattern : we try to capture a very straightforward pattern. A more in depth pattern research is definitely needed. optimisation : there are many ways to improve the way the optimisation is conducted. This would improve both the computation speed and the rationality of the results.
The code used in this post is available on a Gist repository.
As usual any comments welcome.
15 تعليقات.
The problem with using such approaches: the chromosomes can’t change the Darwinian rules of their futures, while the Banksters who crash economies (with some regularity) do change the rules to benefit themselves. Taleb is mostly right, in that policy changes (e. g. liar loans) drive the data, not the other way around.
Thank you for the posDoyou have an example of a smarter function to try?
Thank you for reaching out. The choice of the fitness function is really up to you and it depends on what you try to achieve. It might be a minimum return, stability of return, minimise drawdown, minimum correlation with other strategies etc…. I don’t think there’s any specific rules to follow. However some functions might be biased. For example if you try to minimize drawdown you’ll very likely end up with no trade (max DD = 0) if you don’t constraint to a minimum number of trades.
أتمنى أن يساعدك هذا.
Robert, great comment! Policies will forever drive data, just as data will drive policies. It is a vice-versa world in the financial industry…even so much more for traders, investors and bankers.
How would you go about selecting trading rules and not optimizing trading parameters ?
Like in the Allen paper (Using genetic algorithms to find technical trading rules)
Thank you for reaching out and sorry for the late answer.
I just use common sense in the selection of parameters and above all I tend to use as much as possible the same set of parameters accross all instruments traded.
I am a Chinese reader and really appreciate the article “Using Genetic Algorithms in Quantitative Trading”.
May I translate this article into Chinese and post it on my blog? (I will let you know the link and remain your name on it.) I really hope that, this article can help more people.
Thank you for reaching out.
As long as you clearly mention the source (me) and put a link to the original article in translated article, I have no problem with the post being translated into Chinese.
Thank you very much for posting this! For the posBuySignal, why is RSI evaluated as being less than or equal to 1 – a number? Wouldn’t 1 – xx[2] always result in a negative number? Isn’t the RSI always between 0-100?
Apologies, the code was cut off.
U have just provided me a valuable source for me. I have used the Algorithm written by you and obatained the following results.
NOTE: HARD MAXIMUM GENERATION LIMIT HIT.
Solution Fitness Value: 5.033179e+00.
Parameters at the Solution:
X[ 1] : 3.100000e+01.
X[ 2] : 6.200000e+01.
X[ 3] : 3.200000e+01.
X[ 4] : 7.600000e+01.
Solution Found Generation 38.
Number of Generations Run 50.
Sun Jan 24 12:57:50 2018.
Total run time : 0 hours 0 minutes and 25 seconds.
1: In genoud(fitnessFunction, nvars = 4, max = TRUE, pop. size = 30, :
‘output. path’ can no longer be changed. Please use ‘sink’. Option is only provided for backward compatibility of the API.
2: In genoud(fitnessFunction, nvars = 4, max = TRUE, pop. size = 30, :
Stopped because hard maximum generation limit was hit.
Could u please explain what can we interpret in the solution and my Objective is to predict the future value and how it can be interpreted from this case.
Thank you for reaching out. I’m not sure I understand your question but I’ll give it a try.
Your optimal solution is:
which matches a fitness function value of: 5.03.
Another important point to notice is that you reached the maximum number of iterations. You can easily relax this assumption should you want to explore different solutions.
Besides this I can’t see what exactly is your problem? More details about your fitness function and what you’re trying to achieve might help.
My objective is to predict the future value that is like if i give input till 27th jan 2018 i should get prediction ofr the next date like for 28th. Can we do this with the methodology u have used.
please ping ur mail id to lakshmitharunponnam@gmail this would do a great help for me.
Yes you can. You only have to adjust the frequency of your data. My example used weekly data but you can use the exact same methodology with daily data. Obviously the variables to use will probably have to be adjusted as well.
Thank you for the wonderful post. I have been so excited to go through your codes. I am a newbie. Can you kindly let me know how can i interpret the readings viz.,
to the “SPY” Open, High, Low and Close predicted value.

No comments:

Post a Comment