تطور نظم التجارة

قادم ، ونحن لسنا خائفين منه. أقترح أحجية له من خلال كسب الملفوف في البورصة. بالنسبة للمبتدئين ، سنرى.

حيث


الوكيل هو برنامج لديه حسابات بعملات مختلفة في بورصة واحدة ، والتي ينبغي أن يؤدي عملها إلى زيادة في قيمتها الإجمالية.

أصل الوكيل - قائمة الحسابات التي توفر الأموال عليها A = [A1 ، A2 ، ..] حيث A1 ، A2 ، ... المبلغ بالعملة المقابلة.

قيمة الأصول. يجب أن يكون لدينا مقياس عالمي للأصل يسمح لنا بقياس الأصل. خذ أمرا مفروغا منه أن هذا هو $. $ (حساب) هو جزء من الأصل. نفترض أيضًا أن لدينا قدرة خوارزمية على تقدير قيمة كل حساب في القائمة من خلال $.

يمكن إغلاق الوكيل (الاعتماد فقط على الأصول الخاصة به) أو فتحه (الاقتراض). للبساطة ، نحن نفترض أن لدينا واحدة مغلقة.

كل عملية وكيل لها قيمتها الخاصة جدا (Ax-> Ay، Sum) والتي سوف نقيسها بقياسنا $ والوقت إلى (Ax-> Ay).

بيئة الوكيل - عوامل أخرى أو أشخاص لديهم خوارزميات عمل متشابهة أو غير متماثلة + أي معلومات صالحة في تلك اللحظة.

استراتيجية الوكيل. هذه خوارزمية تتلقى معلومات عن حالة الحسابات ، وتاريخ نشاط البورصة ، ونشاطها ، ونشاط البورصة الحالية (نظارات) ، واستجابة لذلك ، تنفذ أو لا تنفذ مجموعة من الإجراءات.

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

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

لنفترض أن لدينا ثلاث مجموعات من الاستراتيجيات غير المكتملة:

St   = [1,2,3,4] St   = [5,6,7,8] St  = [9,10,11,12] 

مزيج من هذه الاستراتيجيات يوفر 64 سلوكيات فريدة من نوعها ذلك
اتضح أنه (مفيد) للبيئات [O1 ، O2 ، O3] وغير مجدية لـ [O4 ، O5 ، O6] أو ضار لـ [O7 ، ..]

تحليل عمل الاستراتيجيات ومجموعاتها في بيئات مختلفة
يمكننا أن نبني إستراتيجية تحويلية من شأنها تبديل سلوك الوكيل اعتمادًا على البيئة التي يتم اكتشافها حاليًا.

نظام الوكيل (يشار إليه فيما يلي باسم النظام الأساسي ، MetaBot) هو وكيل محدد يقوم بإنشاء وتنسيق وحذف الوكلاء في عمليات التبادل المتصلة. مثل الوكيل ، يتكون من الناحية المعمارية من مجموعة من استراتيجيات التحكم التي يمكن دمجها لتحسين أداء النظام بأكمله ككل. يخزن النظام الأساسي محفوظات كافة العمليات والبيانات المفيدة الأخرى التي تسمح لاستراتيجياتها المكونة بإدارة الوكلاء المرؤوسين بشكل فعال (بالدولار) ، وتحليل الأنماط الإحصائية العامة وتاريخ تأثير مجموعات الاستراتيجيات على النجاح في بيئات معينة. تتم إدارة المنصة بواسطة metastrategy ، التي تتطور معلماتها بمرور الوقت لتحقيق أقصى قدر من الأرباح.

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

النظر في محتويات التنفيذ البسيط لاستراتيجية الوكيل (على Scala) لمعالجة تبادل سجل الطلبات:

 //    var minDelayBetweenOperationsSec: Long //      // 0,     > 0      // < 0      def action(rateVolume: TimeRate): Double //     def middleValues() : Seq[Double] 

نأتي بجينوم سينمو خلال تشغيل النظام.

إن الإستراتيجية هي عبارة عن جينوم إستراتيجية الروبوت الذي يحتوي على الكثير من الجينات لتحديد الاستراتيجية:

 case class StrategyParams(low: IntGene, middle: IntGene, high: IntGene, intense: DoubleGene, threshold: DoubleGene, delay: IntGene) 

حيث low، middle، high هي الفترات بالدقائق لقيم الأصول التي تم حسابها فوقها.
يتم استخدامها للتنبؤ بحركة القيمة.

مكثفة يعني نشاط بوت أو عدوانية. باستخدام قيم المعلمات الكبيرة ، يقوم الروبوت بإجراء معاملات بكميات كبيرة و (أو) تقييم التنبؤات بتفاؤل كبير.
الحد الأدنى يعني الحد الأدنى من ثقة الروبوت في التنبؤ ، مما يدفعه إلى إكمال العملية. تأخير - الجمود ، والحد الأدنى للوقت بين التنشيط.

من المفترض أن هناك استراتيجية بوت مثالية لأي فترة تم وصفها بواسطة معلمات StrategyParams والتي يمكن حسابها من تاريخ معدل الأصل. يمكن حساب المعلمات باستخدام خوارزمية اختيار الجينوم التطورية. الحساب لديه النموذج:

 def evalBots(trs: Seq[TimeRate]) = EvolutionFactory( candidate = defaultBotStrategyParams, populationConfig = PopulationConfig(500), evolutionConfig = EvolutionConfig(100), errorRate = (c: StrategyParams) => {errorBot(c, trs)} ). 

trs - سجل الطلبات ،
populationConfig - كم عدد الروبوتات التي تتنافس في الوقت نفسه على البقاء فيما بينها ، و evolutionConfig - كم عدد مرات تكرار الحياة والتكاثر التي يتعين القيام بها. في عملية التكرار ، من غير المرجح أن تنتج السير التي تحتوي على عدد أقل من الأصول ذرية مع روبوتات أخرى ، والتي في نهاية المطاف ، بعدد كبير من السكان بدرجة كافية وعدد تطور التنكس ، ينبغي أن تقودنا إلى الروبوت المثالي (روبوتات).

بعد تلقي مثل هذه الروبوتات وحسابها لفترة معينة (التاريخ) ، تحتاج إلى استخدامها بطريقة ما للتداول الفعال في المستقبل. سوف تتعامل Platform-Metabot و MetaStrategy مع هذه المشكلة.

النظر في محتويات تطبيق استراتيجية منصة بسيطة:

 MetaStrategy(rateSensitivity: DoubleGene, volumeSensitivity: DoubleGene, profitSensitivity: DoubleGene, criticalForce: DoubleGene, volumesSize: IntGene, delaySwitching: IntGene) 

حيث rateSensitivity ، volumeSensitivity ، ربح تصف الحساسية مدى حساسية سلوك المنصة للتغيرات في معايير سعر الأصل ، وحجم التداول ، وانخفاض الربح المتوقع من العمليات.

تعين الأهمية البالغة قيمة عتبة تستند إلى تقييم شامل للمعايير المذكورة أعلاه ، والتي تتجاوز إشارة إلى عدم كفاءة إستراتيجية الروبوت الحالية (وليس النظام الأساسي) وحساب نسختها الأكثر نجاحًا (إستراتيجية الروبوت الحالية).

جزء من التنفيذ:

 val force = rateForce * volumeForce * profitForce if (force >= strategy.criticalForce.value.get) changeBot(force / strategy.criticalForce.value.get, extremeBot, tr) 

بعد وصف خوارزمية إستراتيجية المنصة باستخدام معلمات MetaStrategy ، يمكننا أن نبدأ عملية تطورية مماثلة لتنمية عدد كبير من روبوتات النظام الأساسي الفعالة ، والتي ستكون أكثرها فعالية أساس النظام التجاري.

لاختبار فاعلية هذه الأفكار ، تم إنشاء نظام تداول العملة الأولي النموذجي الذي يمكن استخدامه كأرض اختبار. يتطلب المكب بيانات عن تاريخ الدورات التدريبية وقيمها المتوسطة على مدار الفترات ، والتي يتم تخزينها في Influx والتي يتم إنشاؤها بواسطة المكب نفسه عن طريق الاستخراج من خلال واجهة برمجة تطبيقات التبادل المفتوحة لـ bitfinex. انظر كائن HistoryExtractor.

نتائج الاختبار




خلال فترات التشغيل ، تمكنا من إيجاد بعض الاستراتيجيات البسيطة للوكلاء الذين أظهروا ، بدون استخدام مدير Metabot ، أرباحًا بنسبة 14٪ سنويًا على مدار عامين ونصف من الاختبار. على الرغم من الإعجاب ، فإنه لا يضمن نفس الاهتمام في الفترات المستقبلية. لم يتم اختبار سلوك النظام في الوقت الحقيقي. استخدام استراتيجيات Metabot المصممة لفترات قصيرة (شهر أو أقل) لم يكن مربحًا ، ولكن لفترات كبيرة من الممكن استخدام استراتيجيات meta الفعالة. كان حسابهم صعبًا بسبب التعقيد الحسابي الكبير (أشهر التشغيل المتواصل لجهاز كمبيوتر عادي). لا يمكن ضبط معدلات العملة المشبوهة إلا إلى حدٍ كبير ، ولكن ... باستخدام هذا النهج للتداول في الأصول الأخرى التي تقلبها ليست فوضوية ولديها فترات موسمية يمكن أن تعطي نتائج أفضل.

مصادر المضلع متوفرة هنا .

Source: https://habr.com/ru/post/ar463357/


All Articles