Friday, 15 December 2017

لوا تداول نظام


غيل هي لغة برمجة تم تصميم غيل لمساعدة المبرمجين على إنشاء تطبيقات مرنة يمكن تمديدها من قبل المستخدمين أو المبرمجين الآخرين مع المكونات الإضافية، وحدات، أو البرامج النصية. مع غيل يمكنك إنشاء التطبيقات والألعاب لسطح المكتب. الويب. سطر الأوامر. و اكثر. أمثلة الشفرة غيل هو تنفيذ لغة برمجة البرنامج، ودعم النسخة المنقحة 5 ومعظم التقارير المنقحة للغة 6، فضلا عن العديد من مؤسسات التمويل الأصغر. كما يأتي مع مكتبة من الوحدات التي تقدم ميزات إضافية، مثل خادم هتب والعميل، وتحليل شمل، والبرمجة الموجهة نحو الكائن. هيلو وورد بروغرام تحديد متغير يسمى الاسم. الانضمام إلى النصوص مرحبا. اسم. و. معا لتشكيل تحية مرحبا العالم. وعرضه على الشاشة. استيراد وحدات استيراد وحدة سرفي-19 واستخدام وظائفها لعرض التاريخ والوقت الحالي في شكل ويكداي، مونث مونثداي يار هور: سيكوند. هيلو هتب سيرفر قم بتشغيل ملقم ويب الذي سيعرض استجابة بالنص كوثيلو ورلدكوت لكل طلب مرسل بواسطة عملاء هتب. فتح لوكالهوست: 8080 لرؤية النتيجة. غيل هو منصة لغة الإرشاد غيل يحتوي على مترجم فعال والجهاز الظاهري. ويمكن استخدامه من خارج منطقة الجزاء لكتابة البرامج في مخطط، أو يمكن بسهولة أن تكون متكاملة مع C و C البرامج. غيل هو غنو اللغة الذكية في كل مكان للإضافات، واللغة الإرشادية الرسمية لمشروع غنو. توسيع التطبيقات بالإضافة إلى البرنامج، يتضمن غيل غايات من طرفي المجمع ل إكماسكريبت و إماكس ليسب (يتم تقديم الدعم لوا)، مما يعني أنه قد يتم تمديد تطبيقك باللغات (أو اللغات) الأكثر ملاءمة لقاعدة المستخدمين. وتعرض أدوات غيلابوس للتحليل والتجميع كجزء من مجموعة وحداتها القياسية، لذلك يمكن إضافة دعم للغات إضافية دون كتابة سطر واحد من C. غيل تمكن المستخدمين مع البرمجيات كوتراكتريكال فريدومكوت باستخدام أي من لغات البرمجة المعتمدة، يمكن للمستخدمين وتخصيص وتوسيع التطبيقات أثناء تشغيلها ونرى التغييرات تجري مباشرة يمكن للمستخدمين بسهولة التجارة وتبادل الميزات عن طريق تحميل وتحميل البرامج النصية، بدلا من التداول بقع معقدة وإعادة تجميع تطبيقاتها. تطبيقات باستخدام غيل غنو غيكس أمبير غيكسد مدير حزمة والتوزيع غنو جناح لأتمتة التصميم الإلكتروني مصحح غنو غنو غيل في فوسدم 10 يناير 2017 غنو غيل لديها جلسة خاصة بها في فوسدم هذا العام مرة أخرى. الجدول الزمني هو متاح الآن. وتغطي المحادثات مجموعة من المواضيع: واجهة المستخدم غنو غيل 2.1.5 صدر 9 ديسمبر 2016 نحن سعداء للإعلان عن غنو غيل الافراج عن 2.1.5، والقادم قبل الإفراج في ما سيصبح سلسلة مستقرة 2.2. هذا الإصدار يحسن التوازي غيليابوس غنو غيل 2.0.13 صدر إصلاحات الأمان 12 أكتوبر 2016 ويبيوسف صدر للتو نسخة جديدة من غنو غيل، الإصدار 2.0.13، وهو الإفراج الأمني ​​عن غيل (انظر الإعلان الأصلي).هذا يعالج أهمية ثغرة أمنية حول هذا الموقع هذا الموقع هو مدعوم من غنو غيل وشفرة المصدر تحت غنو أغبل. يرجى استخدام القائمة البريدية أو قناة غيل على فرينود لمزيد من المعلومات حول غنو غيل وهذا الموقع. التعليم الآلي والتداول الآلي ذي شورت بيج (I ليك إيت) البحث عن استراتيجيات التداول مع باكتستس مربحة - أوبديت لقد أجريت بعض المحادثات مثيرة جدا للاهتمام منذ لقد عرضت إطار التداول غير الرسمي خلال اليوم مقابل معلومات حول الاستراتيجيات المربحة، وهذا هو السبب في أنني أرغب في تمديد هذه الدعوة المحدودة زمنيا بشكل غير محدد. لاحظ أنني لا أبحث عن أفكار استراتيجية. لدي الكثير من تلك نفسي. التحدي لا يكمن في التوصل إلى فكرة ولكن في اختيار الحق واحد واختباره حتى النهاية، عندما كنت إما تعرف أنه يعمل أو أنه لا. العامل الحاسم هنا هو الوقت. لذلك ما أنا أساسا التداول هو الوقت الذي استثمرت في تطوير إطار التداول الصخري المتداول الصخور ضد الوقت الذي كنت قد استثمرت في تطوير ستراتيغي تجارة مربحة. ويمكن أن يكون الأسهم، إتف، في المستقبل أو استراتيجية الخيار. وستبقى جميع المناقشات والمعلومات المتبادلة سرية. أنا بالطبع مفتوحة لمناقشة محض الأفكار، ولكن من فضلك لا تتوقع مني لاختبار لهم بالنسبة لك و لا يشكو إذا أنا تنفيذها دون طلب موافقتك. دعوة لتقديم مقترحات تسعى استراتيجيات التداول مع باكتستس مربحة حتى 15 يونيو. وأنا أقبل مقترحات لاستراتيجيات تجارية واعدة على الأسهم والعملات ومؤشرات الأمازون ستوكبوند. يجب أن تكون هذه الاستراتيجية مربحة في اختبار الخلفية وأن تكون نسبة شارب السنوية 1.0 على الأقل. في 1 تموز / يوليو، سيتم اختيار اثنين من الاستراتيجيات الواعدة ويمكن للمؤلفين اختيار واحد من الخيارات التالية: 1) الحصول على نسخة كاملة وحرة من إطار التداول المعزز وغير العام على أساس R التي قمت بتطويرها واستخدامها منذ عام 2012 وأن المؤلفين يمكن استخدامها للتداول المباشر استراتيجياتها مع وسطاء التفاعلية. (النسخة العامة مبسطة يمكن تحميلها هنا) 2) الدخول في اتفاق التعاون الذي سوف تلتزم بتنفيذ استراتيجيتها في R والتجارة ورقة ذلك لمدة أقصاها ثلاثة أشهر. وسيتم تقاسم جميع الصفقات الفردية مع المؤلفين عندما أوكر. وبالإضافة إلى ذلك، سيتم تسليم رمز R التي هي محددة للاستراتيجية (وليس رمز إطار التداول) إلى مؤلفي الاستراتيجية. ما يجب تقديمه: وصف مكتوب للاستراتيجية بالإضافة إلى قائمة من الصفقات بالإضافة إلى أوقات العودة من باكتست أو قابل للتنفيذ رمز روكتافيبيثون الذي يحسب مباشرة باكتست أوقات العودة، جنبا إلى جنب مع مجموعة كاملة من الأسعار المستخدمة في باكتست. إرسال إلى بريدي الإلكتروني المتاحة في قسم الاتصال تحديث إطار التداول التداول اليومي النقي وأخيرا وجدت الوقت للقيام بذلك. بالغ التأخير. الإطار الآن يعمل مع أحدث (يونكس) الإصدارات من يب توزغو (الإصدار 9493 وأعلى). وهذا يتطلب في حد ذاته إعادة كتابة جزئية لعدة وظائف من حزمة إبروكرز R العظيمة ولكن الآن قليلا التي كتبها جيف رايان. أيضا تم تحديث التكوين الافتراضي لتداول اليورو مقابل الدولار الأميركي بحيث هو الآن قطعة من الكعكة لتشغيل استراتيجية سبيل المثال دمية. مجرد استنساخ الريبو جيت إلى الجهاز المحلي الخاص بك. جيثبسنزيكسينتراداي-بارتاب واتبع ريدمي. شيء عن الأجهزة أنا لا تزال من محبي امتلاك المعادن الخاصة بي. من المؤكد أن تفعل أشياء مع صور آلة شكلي في سحابة تحظى بشعبية لأنك لم يكن لديك للذهاب من خلال مشاحنات إدارة الأجهزة الخاصة بك، ولكن، ليس هذا المتاعب حقا مجرد مشكلة للمنظمات الكبيرة حيث موندستثوساندس من المستخدمين يجب أن تبقى سعيدة في التكلفة الدنيا. لذا فإن السحابة ليس فقط حلا لمشكلة الناس الذين لديهم لإدارة الحجم، ولكن في نفس الوقت تحاول بيع على هذا الحل إلى جو الفردية هناك الذي يتيح مواجهة ذلك، لا تحتاج حقا. على أي حال، كما قلت، أنا من محبي امتلاك معدن بلدي. غير مكلفة الأجهزة الجاهزة يمكن أن تحصل على طريق طويل إذا كنت تأخذ من الوقت لتكوينه بشكل صحيح. و 16-64 جيجابايت رام سطح المكتب مع واحد أو حتى اثنين من وحدات معالجة الرسومات سوف تفعل الكثير من أي شيء تحتاجه. يبدو أن استراتيجيات باكتستينغ يستخدم طريقة المزيد من الموارد الحوسبة من التداول الفعلي الفعلي، وهذا هو السبب في هذه الأيام يمكنك إعداد وتشغيل استراتيجية لحظية من أي كمبيوتر محمول لائق مع الثقة، في حين ل باكتستينغ والبحوث كنت حقا تريد الوحش رام وحدة المعالجة المركزية غبو أعلاه أو مجموعة صغيرة من الحوسبة الفائقة الصغيرة الخاصة بك، كما وصفت مؤخرا هنا. بيور R التداول اليومي فرامورك تحميل كامل المتاحة لقد جعلت إنتراداي-PartA. tar. gz و إنتراداي-PartB. tgz المتاحة للتحميل. censixdownloads. html إيجاد العلاقات بين الأصول التي يمكن استخدامها في المراجحة الإحصائية بدلا من التركيز على التنبؤ اتجاه الأسعار وتقلب الأسعار مع النماذج غير الخطية المشتقة مع أساليب التعلم الآلي، فإن البديل هو محاولة اكتشاف علاقات الأسعار القابلة للاستغلال بين الأصول من نفس الفئة والرد (التجارة) عندما يحدث سوء التسعير، وبعبارة أخرى، لا المراجحة الإحصائية. بمعنى ما هو أسهل نوعا ما من محاولة التنبؤ بالأسعار، لأن الشيء الوحيد الذي يتعين على المرء فعله هو إيجاد علاقة مستقرة نسبيا أو خطية أو غير خطية بين مجموعة من أصلين على الأقل، ويفترض أنه منذ وقت كشفها، أن هذه العلاقة سوف تستمر لبعض الوقت في المستقبل. التداول تحت هذا الافتراض هو ثم عملية رد الفعل إلى حد كبير جدا التي تسببها تحركات الأسعار التي تختلف اختلافا كبيرا من العلاقة نموذجية. الزوج التقليدي تجارة وتداول الأصول في نموذج فيسم (نموذج تصحيح الخطأ المتجه) أمثلة جيدة ل ستاتارب باستخدام نماذج خطية. فلماذا لا تستخدم شبكة عصبية بسيطة من طبقة واحدة أو حتى ربم لاكتشاف علاقة سعرية غير خطية بين اثنين من الأصول غير المركزة، وإذا نجحت عملية الاكتشاف هذه، قم بتداولها بطريقة مماثلة للزوج الكلاسيكي. الأمور تصبح أكثر إثارة للاهتمام عندما يتم النظر في مجموعات مع أكثر من اثنين فقط من الأصول. وهذا سيكون عندئذ المكافئ غير الخطي لنظام فيسم. اختيار ميزة اتساع مقابل العمق دعونا نقول لدينا هدف أحادي التواقيع التوقع التي يمكن أن تكون إما من نوع الانحدار أو التصنيف، وعلينا أن نقرر ما هي ميزات الإدخال لتحديد. أكثر تحديدا، لدينا الكون كبير من المرات التي يمكننا استخدامها كمدخلات ونود أن نعرف كم يجب علينا اختيار (اتساع) وأيضا إلى أي مدى يعود في الوقت المناسب نريد أن نبحث عن كل واحد (عمق). هناك مساحة ثنائية الأبعاد من الخيارات، محددة من قبل الحالات الأربع المتطرفة التالية، تحت افتراض أن لدينا مجموعة N N ويمكننا، على الأكثر، ننظر إلى الوراء K الخطوات الزمنية: (1) اختيار سلسلة واحدة فقط والاسترجاع (2) اختيار سلسلة واحدة فقط و ريسبتيون K تيمستيبس، (3) اختيار N سلسلة و ريسباك واحد تيمستيب، (4) اختيار N سلسلة و ريسباك K تيمستيبس. ومن المحتمل ألا يكون الخيار الأمثل أي من هذين الخيارين، حيث أن (1) و (2) قد لا يحتويان على معلومات كافية تنبئ بها (3) ولا سيما (4) إما أن تكون غير مجدية بسبب كونترستراينتس الحوسبة أو تحتوي على ضوضاء عشوائية جدا. الطريقة المقترحة من الاقتراب من هذا هو البدء صغيرة في (1)، انظر ما الأداء الذي تحصل عليه، ومن ثم زيادة حجم مساحة الإدخال، سواء اتساع أو عمق الحكمة، حتى كنت قد وصلت إلى أداء التنبؤ مرضية أو حتى كنت قد استنفدت (أو مزاد) سطح المكتب (ق) :) استخدام أجهزة النسخ الآلي المكدسة وآلات بولتسمان المقيدة في R فبراير 12، 2014 مكبرات الصوت المكدسة (سا) وآلات بولتزمان المقيدة الإدارة القائمة على النتائج) نماذج قوية جدا للتعلم غير الخاضع للرقابة. لسوء الحظ، في وقت كتابة هذا التقرير يبدو كما لو لم يكن هناك تنفيذ R المباشر المتاحة، وهو أمر مدهش لأن كلا النوعين نموذج قد تم لفترة من الوقت و R لديها تطبيقات لكثير من أنواع نموذج التعلم آلة أخرى. وكحل بديل، يمكن تنفيذ النظام ساس باستخدام واحدة من عدة حزم شبكة عصبية من R بسرعة إلى حد ما (نيت، أموري) و الإدارة القائمة على النتائج، حسنا، سيكون على شخص ما أن يكتب تنفيذ R جيدة بالنسبة لهم. ولكن بالنظر إلى أن تدريب كل من أنواع النماذج يتطلب الكثير من الموارد الحسابية، ونحن نريد أيضا تنفيذ التي يمكن الاستفادة من وحدات معالجة الرسومات. حتى في هذه اللحظة أبسط حل يبدو أن لدينا هو استخدام ثينو. ويمكن استخدام وحدات معالجة الرسومات (غبو)، كما يوفر تطبيقات مكدسة (دينويسينغ) أوتوينكوديرس و ربمس. وبالإضافة إلى ذلك رمز بيثونثيانو لعدة أخرى أكثر غريبة المتغيرات آلة بولتزمان هو العائمة في جميع أنحاء الشبكة كذلك. يمكننا استخدام ربيثون لاستدعاء هذه الوظائف بيثون من R ولكن التحدي هو البيانات. الحصول على مجموعات كبيرة من البيانات ذهابا وإيابا بين R وبيثون دون استخدام تسلسل أسكي أن ربيثون تنفذ (بطيئة جدا) يحتاج إلى حل. على الأقل على قدم المساواة التنفيذ الفعال من السيارات التي تدعم استخدام غبو متاح عبر إطار Torch7 (تجريبي). ومع ذلك، تسمى وظائف Torch7 باستخدام لوا ودعوتهم من داخل R بدلا من ذلك سوف تتطلب بعض العمل في مستوى C. في الختام: استخدام ثينو (بيثون) أو Torch7 (لوا) لنماذج التدريب مع دعم غبو وكتابة النماذج المدربة لملف. في R، استيراد النموذج المدرب من ملف واستخدام للتنبؤ. تحديث 25 أبريل 2014: الحل الجميل التالي دعوة بيثون من R من خلال ركب يجب أن تجلب لنا خطوة واحدة أقرب إلى استخدام ثينو مباشرة من R. ما الترددات للتجارة. 13 يناير 2014 عند محاولة العثور على أنماط السوق القابلة للاستغلال التي يمكن للمرء أن التجارة كتجارة التجزئة، واحدة من الأسئلة الأولى هي: ما هي الترددات التجارية للنظر في الشهرية الأسبوعية اليومية أو خلال اليوم في أي مكان بين 5 ثوان إلى 1 ساعة مع محدودية الوقت المتاح ل وإجراء البحوث في جميع هذه الجداول الزمنية، وهذا يصبح مسألة مهمة للرد. وقد لاحظت أنا وآخرون أنه يبدو أن هناك علاقة بسيطة بين تواتر التجارة ومقدار الجهد اللازم لإيجاد استراتيجية مربحة ذات كمية محضة ومخاطر مقبولة. باختصار: كلما كان معدل التكرار الذي تريد تداوله أقل (أبطأ)، يجب أن تكون الاستراتيجية الأكثر ربحية أكثر ذكاء. ترادفركسمارتنيساس على سبيل المثال، يمكن للمرء أن ننظر في (جدا) نهاية عالية التردد من الطيف، حيث استراتيجيات صناعة تعتمد على الرياضيات بسيطة جدا حقا يمكن أن تكون مربحة جدا، إذا كنت تدير لتكون قريبة بما فيه الكفاية إلى مركز السوق. أخذ قفزة كبيرة في عالم التردد اليومي، أصبح من الصعب كثيرا العثور على استراتيجيات كمية التي هي مربحة في حين لا تزال تقوم على الرياضيات بسيطة نوعا ما. التداول في فترات أسبوعية وشهرية، باستخدام أساليب كمية بسيطة أو المؤشرات الفنية فقط هو وصفة جيدة جدا للكوارث. لذلك، على افتراض لحظة أن هذه العلاقة هي في الواقع صحيح وأيضا النظر في أننا يمكن ويريدون استخدام تقنيات التعلم الآلي المتطورة في استراتيجيات التداول لدينا، يمكن أن نبدأ مع نافذة تردد الأسبوعية والعمل في طريقنا نحو ترددات أعلى. التداول الأسبوعي لا يجب أن تكون آلية على الإطلاق ويمكن أن يتم من أي واجهة الوساطة على شبكة الإنترنت. يمكننا تطوير حقيبة من الاستراتيجيات، وذلك باستخدام البيانات التاريخية المتاحة للجمهور في تركيبة مع خوارزمية التعلم المفضلة لدينا للعثور على أنماط السوق القابلة للتداول ومن ثم تنفيذ الاستراتيجية يدويا. وعلى هذا النطاق، ينبغي أن يسعى كل الجهد إلى إيجاد وصقل الاستراتيجية الكمية، ولا بد من وضع القليل من التفكير في تنفيذ التجارة. جهد أتمتة التجارة: 0. سمارتيس سمارتنيس ريكيرد: 100 يجب أن يتم التداول الآلي تلقائيا، إلا إذا كنت تستطيع تخصيص جزء ثابت من يومك لمراقبة الأسواق وتنفيذ الصفقات. دمج خوارزميات التعلم الآلي مع التداول الآلي الآلي ليست مهام تافهة، ولكن يمكن القيام به. جهد الأتمتة التجارية: 20، ذكاء الاستراتيجية المطلوبة: 80 على فترات زمنية لحظية، تتراوح بين دقيقة وثواني إلى ثانية ثانية، والجهود التي سيكون لديك للقيام لأتمتة الصفقات الخاصة بك يمكن أن تقع في أي مكان في نطاق ما بين 20 و 90. لحسن الحظ أصغر والمقياس الزمني يصبح دومبير الاستراتيجية الخاصة بك يمكن أن يكون، ولكن البكم هو بالطبع مفهوم نسبي هنا. جهد أتمتة التجارة: 80، استراتيجية سمارتنس المطلوبة: 20 ما هي الميزات للاستخدام. اليد-- وضعت مقابل تعلمت 10 ديسمبر 2013 عند نقطة واحدة في تصميم نظام (آلة) التعلم سوف لا مفر منه تسأل نفسك ما هي الميزات لتغذية في النموذج الخاص بك. هناك خياران على الأقل. الأول هو استخدام ميزات الحرفية اليدوية. هذا الخيار سوف تعطي لك عادة نتائج جيدة إذا تم تصميم الميزات بشكل جيد (وهذا بالطبع هو توتولوغي، لأنك سوف ندعو لهم فقط مصممة بشكل جيد إذا أعطاك نتائج جيدة.). يتطلب تصميم السمات المصنوعة يدويا معرفة خبيرة بالمجال الذي سيتم تطبيق نظام التعلم فيه، أي تصنيف الصوت أو التعرف على الصور أو في حالة تداولنا. والمشكلة هنا هي أنه قد لا يكون لديك أي من تلك المعرفة الخبراء (حتى الآن) وسيكون من الصعب جدا أن تأتي من قبل أو تأخذ الكثير من الوقت أو على الأرجح على حد سواء. وبالتالي فإن البديل هو معرفة الميزات من البيانات أو بعبارة أخرى، واستخدام التعلم دون إشراف للحصول عليها. أحد المتطلبات هنا هو أنك تحتاج حقا إلى الكثير من البيانات. أكثر من ذلك بكثير من أنك سوف تحتاج إلى ميزات الحرفية اليدوية، ولكن مرة أخرى فإنه لا يجب أن يكون المسمى. لكن الفائدة واضحة. أنت لا تحتاج حقا أن تكون خبيرا في مجال معين كنت تصميم نظام ل، أي التجارة والتمويل. لذلك في حين كنت لا تزال بحاجة إلى معرفة أي مجموعة فرعية من الميزات المستفادة سيكون أفضل لنظام التعلم الخاص بك، وهذا هو أيضا شيء سيكون لديك للقيام مع ميزات الحرفية اليدوية. اقتراحي: حاول تصميم بعض الميزات اليدوية الحرفية من قبل نفسك. إذا لم يكن لديهم أداء ولديك أسباب وجيهة للاعتقاد أنه من الممكن أن يكون أفضل النتائج من تلك التي تحصل عليها، واستخدام أساليب التعلم غير الخاضعة للرقابة لمعرفة الميزات. يمكنك حتى إنشاء نظام هجين يستخدم الميزات المصممة والمعلمة معا. لماذا يمكنني استخدام أدوات المصدر المفتوح لبناء تطبيقات التداول نوفمبر 19، 2013 عندما بدأت لأول مرة للنظر في القيام التداول الآلي الخاص بي، كان لي ثلاثة متطلبات على مجموعة من الأدوات التي أردت استخدامها. 1) ينبغي أن تكلف أقل قدر ممكن للحصول على لي، حتى لو كان ذلك يعني أن اضطررت إلى القيام بالكثير من البرمجة والتخصيصات نفسي (سيكلف الوقت) 2) يجب أن يكون هناك مجتمع من الناس مثل التفكير هناك باستخدام هذه الأدوات نفسها لغرض مماثل. 3) يجب أن تسمح الأدوات لي أن أذهب عميقا في احتجاجات النظام حسب الضرورة، حتى لو كان في البداية كان هدفي أكثر لاكتشاف الأساسيات. لم أكن أريد أن أجد نفسي في وضع حيث سنتان أسفل الخط كنت بحاجة إلى التحول إلى مجموعة مختلفة من الأدوات، لمجرد تلك التي كنت قد بدأت مع لم تسمح لي أن أفعل ما أردت بسبب مشاكل مع والمصادر المغلقة، والترخيص التقييدي. ونتيجة لذلك جئت لاختيار R كلغتي المفضلة لتطوير التداول ألغورتيهمز وبدأت باستخدام وسطاء التفاعلية لأنها توفر أبي للتواصل مع نظام الوساطة. في حين أن هناك العديد من أدوات التداول لطيفة التي تتصل محطة العمل المتداول يب وبعض يمكن استخدامها للتداول الآلي، أيا من هذه توفر نفس القوة والمرونة والدعم المجتمعي أن المشروع R لديها. وبالإضافة إلى ذلك، R لديه حقا مستودع مدهش من حزم التعلم الآلي والإحصائي الحرة جدا و أدافانسد، وهو أمر ضروري إذا كنت ترغب في إنشاء خوارزميات التداول. كوبيرايت كوبي سينسيكس 2013 - 2015 أفضل الاستراتيجيات 5: نظام التعلم على المدى القصير آلة الوقت إيت 8217s للجزء الخامس والأخير من بناء استراتيجيات أفضل سلسلة. في الجزء 3 we8217ve ناقشنا عملية تطوير النظام القائم على نموذج، وبالتالي فإننا 8217ll اختتام سلسلة مع تطوير نظام استخراج البيانات. وكانت مبادئ استخراج البيانات والتعلم الآلي موضوع الجزء 4. بالنسبة لنا على سبيل المثال التداول على المدى القصير we8217ll استخدام خوارزمية التعلم العميق. مكدس تلقائي مكدسة، لكنها ستعمل بنفس الطريقة مع العديد من خوارزميات التعلم الآلي الأخرى. مع أدوات البرمجيات اليوم 8217s، وهناك حاجة فقط حوالي 20 خطوط من التعليمات البرمجية لاستراتيجية التعلم الآلي. I8217ll في محاولة لشرح جميع الخطوات بالتفصيل. سيكون لدينا مثال مشروع بحثي 8211 تجربة التعلم الآلي للإجابة على سؤالين. هل خوارزمية أكثر تعقيدا 8211 مثل المزيد من الخلايا العصبية والتعمق التعلم 8211 تنتج تنبؤ أفضل و هي التحركات السعرية على المدى القصير يمكن التنبؤ بها من قبل تاريخ السعر على المدى القصير جاء السؤال الأخير بسبب شكوكي حول تداول حركة السعر في الجزء السابق من هذه السلسلة. حصلت على العديد من رسائل البريد الإلكتروني يسأل عن 8220trading نظام المولدات 8221 أو أدوات العمل السعر مماثلة التي أشاد على بعض المواقع. ليس هناك دليل قوي على أن هذه الأدوات أي وقت مضى أنتجت أي ربح (باستثناء الباعة) 8211 ولكن هل هذا يعني أنهم جميعا القمامة We8217ll نرى. تجربتنا بسيطة: نقوم بجمع المعلومات من الشموع الأخيرة من منحنى السعر، وإطعامها في شبكة عميقة التعلم العصبي، واستخدامها للتنبؤ الشموع المقبلة. فرضيتي هي أن بضعة الشموع don8217t تحتوي على أي معلومات تنبؤية مفيدة. وبطبيعة الحال، فإن نتيجة نونبريديكتيف من التجربة فاز 8217t يعني أن I8217m الحق، لأنني يمكن أن تستخدم المعلمات الخطأ أو أعدت البيانات سيئة. ولكن النتيجة التنبؤية سيكون تلميحا بأن I8217m الخطأ والعمل سعر التداول يمكن أن تكون في الواقع مربحة. تطوير استراتيجية التعلم الآلي الخطوة 1: المتغير المستهدف لخلاصة الجزء السابق. يتم تدريب خوارزمية التعلم تحت إشراف مع مجموعة من الميزات من أجل التنبؤ متغير الهدف. لذا فإن أول شيء يجب تحديده هو ما يجب أن يكون عليه هذا المتغير المستهدف. وهناك هدف شعبي، يستخدم في معظم الأوراق، هو علامة على عودة السعر في الشريط التالي. والأفضل ملاءمة للتنبؤ، حيث أنه أقل عرضة للعشوائية، هو فرق السعر إلى أفق التنبؤ البعيد. مثل 3 أشرطة من الآن، أو نفس اليوم الأسبوع المقبل. مثل أي شيء تقريبا في أنظمة التداول، أفق التنبؤ هو حل وسط بين آثار العشوائية (أقل القضبان أسوأ) والقدرة على التنبؤ (أقل أشرطة أفضل). في بعض الأحيان كنت 8217re لا ترغب في التنبؤ مباشرة الأسعار، ولكن في التنبؤ بعض المعلمة الأخرى 8211 مثل الساق الحالية من مؤشر متعرج 8211 التي يمكن إلا أن تحدد إلا في وقت متأخر. أو كنت تريد أن تعرف إذا كان عدم كفاءة السوق معينة سوف تكون موجودة في المرة القادمة، وخصوصا عندما كنت 8217re استخدام آلة التعلم ليس مباشرة للتداول، ولكن لتصفية الصفقات في نظام قائم على نموذج. أو كنت تريد التنبؤ بشيء مختلف تماما، على سبيل المثال احتمال حدوث انهيار في السوق غدا. كل هذا في كثير من الأحيان أسهل للتنبؤ من العودة الغد شعبية 8217s. في سعرنا تجربة العمل we8217ll استخدام عودة العمل على المدى القصير حركة السعر كمتغير الهدف. بمجرد تحديد الهدف، الخطوة التالية هي تحديد الميزات. الخطوة 2: السمات منحنى السعر هو أسوأ حالة لأي خوارزمية تعلم الآلة. ليس فقط أنها لا تحمل إشارة و معظمها الضوضاء. بل هو أيضا غير مستقرة وتغير نسبة سيغنالنويس في كل وقت. تعتمد النسبة الدقيقة للإشارة والضوضاء على ما يقصد به 8220signal 8221، ولكنها عادة منخفضة جدا لأي خوارزمية تعلم آلي معروفة لإنتاج أي شيء مفيد. لذلك يجب علينا استخلاص الميزات من منحنى السعر التي تحتوي على مزيد من إشارة وأقل ضوضاء. الإشارة، في هذا السياق، هي أي معلومات يمكن استخدامها للتنبؤ الهدف، أيا كان. كل ما تبقى هو الضوضاء. وهكذا، واختيار الميزات أمر بالغ الأهمية للنجاح 8211 أكثر أهمية بكثير من اتخاذ قرار الذي خوارزمية تعلم الآلة you8217re الذهاب للاستخدام. هناك نهجان لاختيار الميزات. الأول والأكثر شيوعا هو استخراج أكبر قدر ممكن من المعلومات من منحنى السعر. منذ كنت لا تعرف أين يتم إخفاء المعلومات، يمكنك فقط توليد مجموعة البرية من المؤشرات مع مجموعة واسعة من المعلمات، ونأمل أن على الأقل عدد قليل منهم سوف تحتوي على المعلومات التي يحتاجها الخوارزمية. هذا هو النهج الذي عادة ما تجد في الأدب. مشكلة هذا الأسلوب: أي خوارزمية التعلم الآلي هو الخلط بسهولة من قبل التنبؤات نونبريديكتيف. لذلك فاز win8217t لمجرد رمي 150 المؤشرات في ذلك. تحتاج إلى بعض خوارزمية الاختيار المسبق الذي يحدد أي منهم يحمل معلومات مفيدة والتي يمكن حذفها. دون الحد من الميزات بهذه الطريقة ربما ثمانية أو عشرة، حتى أعمق خوارزمية التعلم فاز 8217t إنتاج أي شيء مفيد. النهج الآخر، عادة للتجارب والبحوث، يستخدم فقط معلومات محدودة من منحنى السعر. هذا هو الحال هنا: بما أننا نريد أن ندرس تداول حركة السعر، ونحن فقط استخدام الأسعار القليلة الماضية كمدخلات، ويجب تجاهل كل ما تبقى من منحنى. هذا لديه ميزة أننا don8217t بحاجة إلى أي خوارزمية الاختيار المسبق منذ عدد من الميزات محدودة على أي حال. وهنا هي اثنين من وظائف التنبؤ بسيطة التي نستخدمها في تجربتنا (في C): من المفترض أن تحمل الدالتين المعلومات اللازمة للعمل السعر: الحركة في شريط وتقلب. وظيفة التغيير هي الفرق بين السعر الحالي وسعر n من القضبان من قبل، فيما يتعلق بالسعر الحالي. دالة المدى هي إجمالي المسافة العالية المنخفضة من الشموع n الأخيرة، وأيضا فيما يتعلق بالسعر الحالي. ومراكز وظيفة مقياس وضغط القيم إلى مجموعة -100، لذلك نحن تقسيمها بنسبة 100 للحصول على تطبيعها إلى -1. ونحن نتذكر أن هناك حاجة إلى تطبيع لخوارزميات التعلم الآلي. الخطوة 3: التنبؤ المسبق بتنبؤ التنبؤات عندما قمت بتحديد عدد كبير من المؤشرات أو إشارات أخرى كميزات لخوارزمية الخاص بك، يجب عليك تحديد أي منها هو مفيد والتي لا. هناك العديد من الطرق للحد من عدد من الميزات، على سبيل المثال: تحديد الارتباطات بين الإشارات. إزالة تلك التي لها علاقة قوية مع إشارات أخرى، لأنها لا تسهم في المعلومات. قارن محتوى المعلومات من الإشارات مباشرة، مع خوارزميات مثل الكون المعلومات أو أشجار القرار. تحديد محتوى المعلومات بشكل غير مباشر عن طريق مقارنة الإشارات مع إشارات عشوائية هناك بعض مكتبات البرمجيات لهذا، مثل حزمة R بوروتا. استخدام خوارزمية مثل تحليل المكونات الرئيسية (يكا) لتوليد مجموعة إشارة جديدة مع انخفاض الأبعاد. استخدام التحسين الجيني لتحديد أهم الإشارات فقط من خلال النتائج الأكثر ربحية من عملية التنبؤ. كبيرة لمنحنى المناسب إذا كنت ترغب في نشر نتائج مثيرة للإعجاب في ورقة بحثية. بالنسبة إلى تجربتنا، لا نحتاج إلى تحديد مسبق للميزات أو معالجتها مسبقا، ولكن يمكنك العثور على معلومات مفيدة حول هذا الموضوع في المواد (1) و (2) و (3) المدرجة في نهاية الصفحة. الخطوة 4: حدد خوارزمية التعلم الآلي R يقدم العديد من حزم مل مختلفة، وأي منهم يقدم العديد من الخوارزميات المختلفة مع العديد من المعلمات المختلفة. حتى لو كنت قد قررت بالفعل عن طريقة 8211 هنا، التعلم العميق 8211 لديك لا يزال الاختيار بين مختلف النهج ومختلف حزم R. معظمها جديدة تماما، ويمكنك أن تجد العديد من المعلومات التجريبية التي تساعد قرارك. لديك لمحاولة كل منهم واكتساب الخبرة مع أساليب مختلفة. لتجربتنا we8217ve اختار حزمة ديبنيت، والتي هي على الارجح أبسط وأسهل لاستخدام مكتبة التعلم العميق. هذا يحافظ على رمزنا قصيرة. W8217re باستخدام خوارزمية مكدسة أوتوكودر (ساي) لتدريب ما قبل الشبكة. كما يوفر ديبنيت آلة بولتزمان مقيدة (ربم) للتدريب قبل، ولكن لم أستطع الحصول على نتائج جيدة منه. هناك حزم التعلم العميق الأخرى وأكثر تعقيدا ل R، حتى تتمكن من قضاء الكثير من الوقت التحقق من كل منهم. كيف يتم شرح أعمال ما قبل التدريب بسهولة، ولكن لماذا يعمل هو مسألة مختلفة. على حد علمي، لا أحد حتى الآن يأتي مع دليل رياضي قوي أنه يعمل على الإطلاق. على أي حال، تخيل شبكة عصبية كبيرة مع العديد من الطبقات المخفية: تدريب صافي يعني اقامة الأوزان اتصال بين الخلايا العصبية. الطريقة المعتادة هي باكبروباغاتيون الخطأ. ولكن اتضح أن الطبقات أكثر خفية لديك، والأسوأ أنه يعمل. مصطلحات الخطأ باكبروباغاتد الحصول على أصغر وأصغر من طبقة إلى طبقة، مما تسبب في طبقات الأولى من الشبكة لتعلم شيئا تقريبا. وهو ما يعني أن النتيجة المتوقعة تصبح أكثر وأكثر اعتمادا على الحالة الأولية العشوائية للأوزان. هذا الحد بشدة من تعقيد الشبكات العصبية القائمة على طبقة، وبالتالي المهام التي يمكن حلها. على الأقل حتى 10 سنوات مضت. في عام 2006 العلماء في تورونتو نشر لأول مرة فكرة ما قبل تدريب الأوزان مع خوارزمية التعلم غير خاضعة للرقابة، وهي آلة بولتزمان مقيدة. وقد اتضح ذلك مفهوما ثوريا. وعززت تطوير الذكاء الاصطناعي وسمحت لجميع أنواع التطبيقات الجديدة من آلات الذهاب اللعب إلى السيارات ذاتية القيادة. في حالة أوتوينكودر مكدسة، فإنه يعمل بهذه الطريقة: حدد الطبقة المخفية لتدريب تبدأ مع الطبقة المخفية الأولى. قم بتوصيل مخرجاتها بطبقة مخرجات مؤقتة لها نفس بنية طبقة الإدخال network8217s. تغذية الشبكة مع عينات التدريب، ولكن من دون أهداف. تدريب عليه بحيث الطبقة المخفية الأولى يستنسخ إشارة المدخلات 8211 الميزات 8211 في مخرجاتها في أقرب وقت ممكن. يتم تجاهل بقية الشبكة. خلال التدريب، وتطبيق عقوبة 8216 الوزن عقوبة 8217 بحيث يتم استخدام عدد قليل من الأوزان اتصال ممكن لاستنساخ إشارة. الآن تغذية مخرجات طبقة خفية المدربين على المدخلات من الطبقة الخفية غير المدربة المقبل، وكرر عملية التدريب بحيث يتم استنساخ إشارة الدخل الآن في مخرجات الطبقة التالية. كرر هذه العملية حتى يتم تدريب جميع الطبقات المخفية. لدينا الآن شبكة 8216sparse 8217 مع وصلات طبقة قليلة جدا التي يمكن أن تتكاثر إشارات الإدخال. الآن تدريب الشبكة مع باكبروباغاتيون لتعلم المتغير الهدف، وذلك باستخدام الأوزان المدربة مسبقا من الطبقات المخفية كنقطة انطلاق. والأمل هو أن عملية ما قبل التدريب غير الخاضعة للإشراف تنتج الضوضاء الداخلية خفض التجريد من إشارات المدخلات التي يمكن استخدامها بعد ذلك لتسهيل تعلم الهدف. ويبدو أن هذا العمل في الواقع. لا أحد يعرف السبب حقا، ولكن العديد من النظريات 8211 انظر ورقة (4) أدناه 8211 في محاولة لشرح تلك الظاهرة. الخطوة 5: إنشاء مجموعة بيانات الاختبار نحن بحاجة أولا إلى إنتاج مجموعة بيانات مع الميزات والأهداف حتى نتمكن من اختبار عملية التنبؤ لدينا ومحاولة الخروج من المعلمات. يجب أن تستند الميزات على نفس بيانات الأسعار كما في التداول المباشر، ولتحقيق الهدف يجب محاكاة تجارة قصيرة الأجل. لذلك فمن المنطقي لتوليد البيانات لا مع R، ولكن مع منصة التداول لدينا، والتي هي على أي حال أسرع كثيرا. Here8217s النصي زورو صغير لهذا، DeepSignals. c: WE8217re توليد 2 سنوات من البيانات مع الميزات المحسوبة لدينا وظائف التغيير والمدى المحددة أعلاه. هدفنا هو عودة التجارة مع 3 الحانات الوقت الحياة. يتم تعيين تكاليف التداول إلى الصفر، لذلك في هذه الحالة العائد يعادل فارق السعر في 3 بارات في المستقبل. ووصف وظيفة أدفيسيلونغ في دليل زورو هو وظيفة الأقوياء الذي يعالج تلقائيا التدريب والتنبؤ ويسمح لاستخدام أي خوارزمية تعلم آلة القائم على R كما لو كان مؤشر بسيط. في التعليمات البرمجية لدينا، وظيفة يستخدم العائد التجاري المقبل كهدف، وتغيرات الأسعار ونطاقات من 4 أشرطة الماضية كميزات. العلم سيغنالس يقول أنه لا لتدريب البيانات، ولكن لتصديره إلى ملف كسف. العلم بالانسد يتأكد من أن نحصل على العديد من الإيجابية كما عوائد سلبية هذا مهم بالنسبة لمعظم خوارزميات التعلم الآلي. تشغيل البرنامج النصي في وضع القطار مع لدينا الأصول اختبار المعتاد يوروس المحدد. أنه ينشئ ملف جدول بيانات يسمى DeepSignalsEURUSDL. csv الذي يحتوي على الميزات في الأعمدة 8 الأولى، والعائد التجاري في العمود الأخير. Step 6: Calibrate the algorithm Complex machine learning algorithms have many parameters to adjust. Some of them offer great opportunities to curve-fit the algorithm for publications. Still, we must calibrate parameters since the algorithm rarely works well with its default settings. For this, here8217s an R script that reads the previously created data set and processes it with the deep learning algorithm ( DeepSignal. r ): We8217ve defined three functions neural. train . neural. predict . and neural. init for training, predicting, and initializing the neural net. The function names are not arbitrary, but follow the convention used by Zorro8217s advise(NEURAL. ) function. It won8217t matter now, but will matter later when we use the same R script for training and trading the deep learning strategy. A fourth function, TestOOS . is used for out-of-sample testing our setup. The function neural. init seeds the R random generator with a fixed value (365 is my personal lucky number). Otherwise we would get a slightly different result any time, since the neural net is initialized with random weights. It also creates a global R list named 8220Models8221. Most R variable types don8217t need to be created beforehand, some do (don8217t ask me why). The 8216ltlt-8216 operator is for accessing a global variable from within a function. The function neural. train takes as input a model number and the data set to be trained. The model number identifies the trained model in the 8220 Models 8221 list. A list is not really needed for this test, but we8217ll need it for more complex strategies that train more than one model. The matrix containing the features and target is passed to the function as second parameter. If the XY data is not a proper matrix, which frequently happens in R depending on how you generated it, it is converted to one. Then it is split into the features ( X ) and the target ( Y ), and finally the target is converted to 1 for a positive trade outcome and 0 for a negative outcome. The network parameters are then set up. Some are obvious, others are free to play around with: The network structure is given by the hidden vector: c(50,100,50) defines 3 hidden layers, the first with 50, second with 100, and third with 50 neurons. That8217s the parameter that we8217ll later modify for determining whether deeper is better. The activation function converts the sum of neuron input values to the neuron output most often used are sigmoid that saturates to 0 or 1, or tanh that saturates to -1 or 1. We use tanh here since our signals are also in the -1 range. The output of the network is a sigmoid function since we want a prediction in the 0..1 range. But the SAE output must be 8220linear8221 so that the Stacked Autoencoder can reproduce the analog input signals on the outputs. The learning rate controls the step size for the gradient descent in training a lower rate means finer steps and possibly more precise prediction, but longer training time. Momentum adds a fraction of the previous step to the current one. It prevents the gradient descent from getting stuck at a tiny local minimum or saddle point. The learning rate scale is a multiplication factor for changing the learning rate after each iteration (I am not sure for what this is good, but there may be tasks where a lower learning rate on higher epochs improves the training). An epoch is a training iteration over the entire data set. Training will stop once the number of epochs is reached. More epochs mean better prediction, but longer training. The batch size is a number of random samples 8211 a mini batch 8211 taken out of the data set for a single training run. Splitting the data into mini batches speeds up training since the weight gradient is then calculated from fewer samples. The higher the batch size, the better is the training, but the more time it will take. The dropout is a number of randomly selected neurons that are disabled during a mini batch. This way the net learns only with a part of its neurons. This seems a strange idea, but can effectively reduce overfitting. All these parameters are common for neural networks. Play around with them and check their effect on the result and the training time. Properly calibrating a neural net is not trivial and might be the topic of another article. The parameters are stored in the model together with the matrix of trained connection weights. So they need not to be given again in the prediction function, neural. predict . It takes the model and a vector X of features, runs it through the layers, and returns the network output, the predicted target Y . Compared with training, prediction is pretty fast since it only needs a couple thousand multiplications. If X was a row vector, it is transposed and this way converted to a column vector, otherwise the nn. predict function won8217t accept it. Use RStudio or some similar environment for conveniently working with R. Edit the path to the. csv data in the file above, source it, install the required R packages (deepnet, e1071, and caret), then call the TestOOS function from the command line. If everything works, it should print something like that: TestOOS reads first our data set from Zorro8217s Data folder. It splits the data in 80 for training ( XY. tr ) and 20 for out-of-sample testing ( XY. ts ). The training set is trained and the result stored in the Models list at index 1. The test set is further split in features ( X ) and targets ( Y ). Y is converted to binary 0 or 1 and stored in Y. ob . our vector of observed targets. We then predict the targets from the test set, convert them again to binary 0 or 1 and store them in Y. pr . For comparing the observation with the prediction, we use the confusionMatrix function from the caret package. A confusion matrix of a binary classifier is simply a 22152 matrix that tells how many 08217s and how many 18217s had been predicted wrongly and correctly. A lot of metrics are derived from the matrix and printed in the lines above. The most important at the moment is the 62 prediction accuracy . This may hint that I bashed price action trading a little prematurely. But of course the 62 might have been just luck. We8217ll see that later when we run a WFO test. A final advice: R packages are occasionally updated, with the possible consequence that previous R code suddenly might work differently, or not at all. This really happens, so test carefully after any update. Step 7: The strategy Now that we8217ve tested our algorithm and got some prediction accuracy above 50 with a test data set, we can finally code our machine learning strategy. In fact we8217ve already coded most of it, we just must add a few lines to the above Zorro script that exported the data set. This is the final script for training, testing, and (theoretically) trading the system ( DeepLearn. c ): We8217re using a WFO cycle of one year, split in a 90 training and a 10 out-of-sample test period. You might ask why I have earlier used two year8217s data and a different split, 8020, for calibrating the network in step 5. This is for using differently composed data for calibrating and for walk forward testing. If we used exactly the same data, the calibration might overfit it and compromise the test. The selected WFO parameters mean that the system is trained with about 225 days data, followed by a 25 days test or trade period with no training. In the literature you8217ll sometimes find recommendations to retrain a machine learning system after any trade, or at least any day. But this does not make much sense to me. When you used almost 1 year8217s data for training a system, it can obviously not deteriorate after a single day. Or if it did, and only produced positive test results with daily retraining, I would strongly suspect that the results are artifacts by some coding mistake. Training a deep network takes really a long time, in our case about 10 minutes for a network with 3 hidden layers and 200 neurons. Since this is repeated at any WFO cycle, using multiple cores is recommended for training many cycles in parallel. The NumCores variable at -1 activates all CPU cores but one. Multiple cores are only available in Zorro S, so a complete walk forward test with all WFO cycles can take several hours with the free version. In the script we now train both long and short trades. For this we have to allow hedging in Training mode, since long and short positions are open at the same time. Entering a position is now dependent on the return value from the advise function, which in turn calls either the neural. train or the neural. predict function from the R script. So we8217re here entering positions when the neural net predicts a result above 0.5. The R script is now controlled by the Zorro script (for this it must have the same name, NeuralLearn. r . only with different extension). It is identical to our R script above since we8217re using the same network parameters. Only one additional function is needed for supporting a WFO test: The neural. save function stores the Models list 8211 it now contains 2 models for long and for short trades 8211 after every training run in Zorro8217s Data folder. Since the models are stored for later use, we do not need to train them again for repeated test runs. This is the WFO equity curve generated with the script above (EURUSD, without trading costs): Although not all WFO cycles get a positive result, it seems that there is some predictive effect. The curve is equivalent to an annual return of 89, achieved with a 50-100-50 hidden layer structure. We8217ll check in the next step how different network structures affect the result. Since the neural. init . neural. train . neural. predict . and neural. save functions are automatically called by Zorro8217s adviseLongadviseShort functions, there are no R functions directly called in the Zorro script. Thus the script can remain unchanged when using a different machine learning method. Only the DeepLearn. r script must be modified and the neural net, for instance, replaced by a support vector machine. For trading such a machine learning system live on a VPS, make sure that R is also installed on the VPS, the needed R packages are installed, and the path to the R terminal set up in Zorro8217s ini file. Otherwise you8217ll get an error message when starting the strategy. Step 8: The experiment If our goal had been developing a strategy, the next steps would be the reality check, risk and money management, and preparing for live trading just as described under model-based strategy development. But for our experiment we8217ll now run a series of tests, with the number of neurons per layer increased from 10 to 100 in 3 steps, and 1, 2, or 3 hidden layers (deepnet does not support more than 3). So we8217re looking into the following 9 network structures: c(10), c(10,10), c(10,10,10), c(30), c(30,30), c(30,30,30), c(100), c(100,100), c(100,100,100). For this experiment you need an afternoon even with a fast PC and in multiple core mode. Here are the results (SR Sharpe ratio, R2 slope linearity): We see that a simple net with only 10 neurons in a single hidden layer won8217t work well for short-term prediction. Network complexity clearly improves the performance, however only up to a certain point. A good result for our system is already achieved with 3 layers x 30 neurons. Even more neurons won8217t help much and sometimes even produce a worse result. This is no real surprise, since for processing only 8 inputs, 300 neurons can likely not do a better job than 100. Conclusion Our goal was determining if a few candles can have predictive power and how the results are affected by the complexity of the algorithm. The results seem to suggest that short-term price movements can indeed be predicted sometimes by analyzing the changes and ranges of the last 4 candles. The prediction is not very accurate 8211 it8217s in the 58..60 range, and most systems of the test series become unprofitable when trading costs are included. Still, I have to reconsider my opinion about price action trading. The fact that the prediction improves with network complexity is an especially convincing argument for short-term price predictability. It would be interesting to look into the long-term stability of predictive price patterns. For this we had to run another series of experiments and modify the training period ( WFOPeriod in the script above) and the 90 ISOOS split. This takes longer time since we must use more historical data. I have done a few tests and found so far that a year seems to be indeed a good training period. The system deteriorates with periods longer than a few years. Predictive price patterns, at least of EURUSD, have a limited lifetime. Where can we go from here There8217s a plethora of possibilities, for instance: Use inputs from more candles and process them with far bigger networks with thousands of neurons. Use oversampling for expanding the training data. Prediction always improves with more training samples. Compress time series f. i. with spectal analysis and analyze not the candles, but their frequency representation with machine learning methods. Use inputs from many candles 8211 such as, 100 8211 and pre-process adjacent candles with one-dimensional convolutional network layers. Use recurrent networks. Especially LSTM could be very interesting for analyzing time series 8211 and as to my knowledge, they have been rarely used for financial prediction so far. Use an ensemble of neural networks for prediction, such as Aronson8217s 8220oracles8221 and 8220comitees8221. Papers Articles I8217ve added the C and R scripts to the 2016 script repository. You need both in Zorro8217s Strategy folder. Zorro version 1.474, and R version 3.2.5 (64 bit) was used for the experiment, but it should also work with other versions. Results below were generated by revised version of DeepSignals. r 8211 only change was use of LSTM net from the rnn package on CRAN. The authors of the package regard their LSTM implementation as 8220experimental8221 and do not feel it is as yet learning properly, so hopefully more improvement to come there. (Spent ages trying to accomplish the LSTM element using the mxnet package but gave up as couldn8217t figure out the correct input format when using multiple training features.) Will post results of full WFO when I have finished LSTM version of DeepLearn. r Confusion Matrix and Statistics Reference Prediction 0 1 0 1641 1167 1 1225 1701 Accuracy. 0.5828 95 CI. (0.5699, 0.5956) No Information Rate. 0.5002 P-Value Acc gt NIR. lt2e-16 Kappa. 0.1657 Mcnemar039s Test P-Value. 0.2438 Sensitivity. 0.5726 Specificity. 0.5931 Pos Pred Value. 0.5844 Neg Pred Value. 0.5813 Prevalence. 0.4998 Detection Rate. 0.2862 Detection Prevalence. 0.4897 Balanced Accuracy. 0.5828 039Positive039 Class. 0 Results of WFO test below. Again, only change to original files was the use of LSTM in R, rather than DNNSAE. Walk-Forward Test DeepLearnLSTMV4 EURUSD Simulated account AssetsFix Bar period 1 hour (avg 87 min) Simulation period 15.05.2014-07.06.2016 (12486 bars) Test period 04.05.2015-07.06.2016 (6649 bars) Lookback period 100 bars (4 days) WFO test cycles 11 x 604 bars (5 weeks) Training cycles 12 x 5439 bars (46 weeks) Monte Carlo cycles 200 Assumed slippage 0.0 sec Spread 0.0 pips (roll 0.000.00) Contracts per lot 1000.0 Gross winloss 3628 -3235 (5199p) Average profit 360year, 30month, 1.38day Max drawdown -134 34 (MAE -134 34) Total down time 95 (TAE 95) Max down time 5 weeks from Aug 2015 Max open margin 40 Max open risk 35 Trade volume 5710964 (5212652year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol Capital required 262 Number of trades 6787 (6195year, 120week, 25day) Percent winning 57.6 Max winloss 16 -14 Avg trade profit 0.06 0.8p (12.3p -14.8p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 1 (1 -2) Max trade bars 3 (3 hours) Time in market 177 Max open trades 3 Ma x loss streak 17 (uncorrelated 11) Annual return 137 Profit factor 1.12 (PRR 1.08) Sharpe ratio 1.79 Kelly criterion 2.34 R2 coefficient 0.435 Ulcer index 13.3 Prediction error 152 Confidence level AR DDMax Capital 10 143 128 252 20 129 144 278 30 117 161 306 40 107 179 336 50 101 190 355 60 92 213 392 70 85 232 425 80 77 257 466 90 64 314 559 95 53 383 675 100 42 495 859 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .219 1.12 39072880 100.0 XXX EURUSD:L .302 1.17 18301658 65.0 EURUSD:S .145 1.08 20771222 35.0 Interesting For a still experimental LSTM implementation that result looks not bad. Could you help me answering some questions I have few question below: 1.I want to test Commission mode. If I use interactive broker, I should set Commission . in normal case. 2.If I press the 8220trade8221 button, I see the log the script will use DeepLearnEURUSD. ml. So real trade it will use DeepLearnEURUSD. ml to get the model to trade And use neural. predict function to trade 3.If I use the slow computer to train the data , I should move DeepLearnEURUSD. ml to the trade computer I test the real trade on my interactive brokers and press the result button. Can I use Commission0.60 to train the neural and get the real result Thank you. Result button will show the message below: Trade Trend EURUSD Bar period 2 min (avg 2 min) Trade period 02.11.2016-02.11.2016 Spread 0.5 pips (roll -0.020.01) Commission 0.60 Contracts per lot 1000.0 Commission should be normally not set up in the script, but entered in the broker specific asset list. Otherwise you had to change the script every time when you want to test it with a different broker or account. IB has different lot sizes and commissions, so you need to add the command to the script when you want to test it for an IB account. Yes, DeepLearnEURUSD. ml is the model for live trading, and you need to copy it to the trade computer. Dear jcl Do I write assetList(AssetsIB. csv) in the right place So below code8217s result includes Commission I test the result with Commission that seems pretty good. Annual 93 3177p function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Commission Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(2),change(3),change(4), range(1),range(2),range(3),range(4)) gt 0.5) enterLong() if(adviseShort() gt 0.5) enterShort() Problem 1: I run the DeepLearn. c in the IB paper trade. The code 8220LifeTime 3 prediction horizon8221 seems to close the position that you open after 3 bars(3 hours). But I can8217t see it close the position on third bar close. I see the logs below: Closing prohibited 8211 check NFA flag EURUSD::L4202 Can8217t close 11.10995 at 09:10:51 Problem 2: In my IB paper trade, it the default order size is 1k on EURUSD. How to change the order size in paper trade Thank you very much. IB is an NFA compliant broker. You can not close trades on NFA accounts. You must set the NFA flag for opening a reverse position instead. And you must enable trading costs, otherwise including the commission has no effect. I don8217t think that you get a positive result with trading costs. Those account issues are not related to machine learning, and are better asked on the Zorro forum. Or even better, read the Zorro manual where all this is explained. Just search for 8220NFA8221. I do some experiment to change the neural8217s parameter with commission. The code is below: function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(3),change(5),change(7),change(9), range(1),range(3),range(5),range(7),range(9)) gt 0.7) enterLong() if(adviseShort() gt 0.7) enterShort() I get the result with commission that Annual Return is about 23. But I don8217t complete understand the zorro8217s setting and zorro8217s report. شكرا لكم. The result: Annual 23 661p Walk-Forward Test DeepLearn EURUSD Simulated account AssetsIB. csv Bar period 1 hour (avg 86 min) Simulation period 15.05.2014-09.09.2016 (14075 bars) Test period 23.04.2015-09.09.2016 (8404 bars) Lookback period 100 bars (4 days) WFO test cycles 14 x 600 bars (5 weeks) Training cycles 15 x 5401 bars (46 weeks) Monte Carlo cycles 200 Simulation mode Realistic (slippage 0.0 sec) Spread 0.0 pips (roll 0.000.00) Commission 0.50 Contracts per lot 20000.0 Gross winloss 24331 -22685 (914p) Average profit 1190year, 99month, 4.58day Max drawdown -1871 114 (MAE -1912 116) Total down time 92 (TAE 41) Max down time 18 weeks from Dec 2015 Max open margin 2483 Max open risk 836 Trade volume 26162350 (18916130year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol, -1306 com Capital required 5239 Number of trades 1306 (945year, 19week, 4day) Percent winning 52.5 Max winloss 375 -535 Avg trade profit 1.26 0.7p (19.7p -20.3p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg tra de bars 2 (2 -3) Max trade bars 3 (3 hours) Time in market 46 Max open trades 3 Max loss streak 19 (uncorrelated 10) Annual return 23 Profit factor 1.07 (PRR 0.99) Sharpe ratio 0.56 Kelly criterion 1.39 R2 coefficient 0.000 Ulcer index 20.8 Confidence level AR DDMax Capital 10 29 1134 4153 20 27 1320 4427 30 26 1476 4656 40 24 1649 4911 50 23 1767 5085 60 22 1914 5301 70 21 2245 5789 80 19 2535 6216 90 16 3341 7403 95 15 3690 7917 100 12 4850 9625 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .256 1.07 685621 100.0 XXXXXXXXXXXX EURUSD:L .476 1.16 294278 94.5 EURUSD:S .026 1.01 391343 5.5

No comments:

Post a Comment