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

هذه المادة ليست دليلًا أو مراجعة شاملة ، بل هي اقتراح لتبادل أفكار العمل على أساس البحث العملي عن مجموعة عمل عادية للاستخدام الشخصي. في مواجهة الحاجة إلى أتمتة استراتيجيات التداول البسيطة (تجارة الزخم ، متابعة الاتجاه ، وما إلى ذلك) ، ظهر عدد من المشكلات على الفور. دعنا نشير إلى ما نحتاج إلى:
- صوغ فرضية واعمل على حسابها
- اختبار الفرضية على البيانات التاريخية. ملاحظة مهمة للغاية: يجب أن تفهم أيضًا البيانات التاريخية التي تندرج ضمن فئة "مناسبة" للاستخدام في الاختبارات الخلفية للأنظمة التجارية. لن أتعهد بكتابة مشاركة منفصلة حول هذا الأمر الآن (على الرغم من أن هذا يتطلب ذلك ، ولكن هناك الكثير من المواد حول هذا الموضوع في المجال العام) ، سأوضح بعض المشكلات الرئيسية المتعلقة بالبيانات التاريخية: هل الشركات التي خرجت من الفهارس أو المفلسة مأخوذة في الاعتبار ، هل تم تقسيم الأسهم ، وكذلك كيفية أخذ الربحية بعين الاعتبار - مع الأخذ في الاعتبار الأرباح (إجمالي العائد) أم لا. أعتذر حقًا عن الإيجاز ، لكن هذا المنشور لا يتعلق بذلك بعد ، وهذا ليس مجموعة شاملة من متطلبات البيانات.
- إذا نجحت عملية التحقق ، فيمكنك نقل الفرضية إلى حساب تداول حقيقي ، مع إضافة نظام لإدارة المخاطر وإدارة الطلبات وإعادة التوازن وتقييم النتيجة.
الآن هو الوقت المناسب لعمل
استطرادين مهمين فيما يتعلق بـ "المقدمة" التي نعمل معها في هذه المقالة. الأول هو اختيار اللغة: سيقول الكثيرون أن C # لإنشاء روبوتات التداول / أنظمة التداول الآلية أكثر شيوعًا وأسرع من Python. لا يمكنني الاختلاف ، لكن يجب أن أراعي النقطة المهمة الثانية - الفرق بين التداول الحسابي وأتمتة أنظمة التداول. من المحادثات مع ممارسي التداول الكمي وببساطة من المواد النظرية الموجودة ، يمكن الاستنتاج أن التداول الحسابي (يستخدم غالبًا كمرادف لـ "التداول عالي التردد (HFT)") هو تكتيك للعمل مع الطلبات ، مع تدفق البيانات إلى عمليات تبادل مختلفة ، بناءً على السرعة الوصول إليها (واعتمادًا على المللي ثانية) ، وهناك حصريًا C # يمكنه التعامل مع المهام. في الوقت نفسه ، من المرجح أن تكون المهام التي يتبعها متداول algo "المنزلي" هي Python ، لأننا نهدف إلى أتمتة أنظمة تداول المضاربة على المدى القصير والمتوسط ، والتي لا يصل معدل دوران محفظتها إلى 100٪ يوميًا ، وعدد الطلبات والمتطلبات لا تتجاوز سرعة تنفيذها حدًا معقولًا يفصل بين التداول عالي التردد والتداول الآلي قصير / متوسط الأجل.
كيف يتم تقييم أنظمة التداول ، وكيف تتم كتابة خوارزميات التداول وما إلى ذلك - كل هذا أصبح الآن خارج النطاق ، وإلا لا توجد طريقة لتناسب المقالة. دعونا نلقي نظرة على مثال محدد - لدي نظام تداول قائم على النظام الموضح في كتاب "الأسهم أثناء التنقل: التغلب على السوق باستراتيجيات زخم صناديق التحوط". تتم كتابة استراتيجية التداول في Python ولا تتضمن أي عناصر فائقة التعقيد. أول شيء تحتاجه هو الفرصة لاختبار استراتيجية البيانات التاريخية. ليست لدي مشكلة في مناقشة اختيار الوسيط ، يمكنني استخدام خدمات الوسطاء التفاعليين ولديهم بالفعل واجهة برمجة تطبيقات أصلية لبيثون. ومع ذلك ، لا يتم توفير إمكانية إجراء اختبار خلفي حتى مع اشتراكات البيانات المدفوعة. إليكم ما تمكنت من العثور عليه في الاختبار الخلفي:
1) الجميع يسمعون - Quantopian.comيتم دعم Python 2.7 فقط ، فمن الممكن إنشاء واختبار أنظمة التداول مجانًا ، وهناك بيانات تاريخية مجانية لاستخدامها (الأسهم الأمريكية والعقود الآجلة) ، عبر الإنترنت ، التثبيت المحلي غير ممكن. لن أكتب مراجعة طويلة ، وسأحدد على الفور مجالات المشكلات التي تم العثور عليها حتى على المستوى الأساسي: نظرًا لأنهم أزالوا إمكانية الارتباط بحساب الوساطة ، فلا توجد طريقة لاستخدام أنظمة التداول المتقدمة والمختبرة للتداول المباشر. هذا يفرض قيودًا فورًا (سيساعد بعضها في حل zipline-live ، والمزيد على ذلك أدناه) ، لأن يعتمد Quantopian على مكتبة zipline ، علاوة على ذلك ، هناك بعض الوظائف التي تعمل فقط داخل نظامهم ، لذلك عندما ترغب في نقل نظامك المكتوب ذاتيًا واختباره إلى نفس واجهة برمجة التطبيقات الأصلية من الوسيط ، سيتعين عليك إعادة كتابة نصفها للعمل ، و قرر أيضًا ما يجب عمله مع مقتطفات الشفرة المستندة إلى zipline. يمكن أيضًا اعتبار ناقص (بالنسبة لبعض الأنظمة) حظر المؤشرات الديناميكية ، ولكن الآن نترك هذه الأطروحة دون تفاصيل.
الإضافة الرئيسية لـ Quantopian (IMHO) (بالإضافة إلى نظام مجاني للاختبارات والبيانات التاريخية) هي مجتمع نشط للغاية ، والكثير من المشاركات في التحليلات والفروق الدقيقة في أنظمة البناء. هام: تأخذ البيانات التاريخية المتوفرة هناك في الاعتبار بعض المشكلات (لا يمكنك العمل فقط مع الشركات الحية ، ولكن أيضًا الحصول على قوائم بمؤشرات السنوات الماضية لأخذها في الحسبان ، والإفلاس ، وما إلى ذلك) ، وتؤخذ الانقسامات أيضًا في الاعتبار ، بل هناك (!) مجموع مجموعات بيانات العائد ، أي أنه يمكنك استخدام مؤشرات الربحية مع توزيعات الأرباح.
2) يريد حقًا أن يسمع الجميع ، لكن لم يحدث ذلك بعد - Backtrader.comPython 2.7، 3.2-3.6 مدعوم ، وهو متاح فقط للاستخدام على الجهاز المحلي.
يبدو أن هناك تكاملًا مع السماسرة وسيكون من الممكن إطلاق أنظمة تستخدم هذه المكتبة في معركة مع الحد الأدنى من جهود التكامل. بصراحة - إنه أمر مشكوك فيه للغاية ، لم أر أي أمثلة حية ، لقد مات المجتمع تقريبًا - هناك صمت في المنتدى. مؤلف المكتبة يروج لها بنشاط على Quora وغيرها من الموارد. لا توجد بيانات تاريخية ، لذلك يتعين عليك إما شراء مصادر مجانية أو البحث عنها - ولكن هناك مشاكل "الناجين" وأرباح الأسهم (سواء كانت مدرجة في البيانات أم لا) ، تبدأ الانقسامات وأشياء أخرى. سأكون سعيدًا للحصول على ملاحظات حقيقية حول ممارسة استخدام هذه المكتبة.
3) QuantConnect - quantconnect.comهذه منصة على الإنترنت (تدعم Python ، على التوالي) ، حيث تقدم كل من البيانات والاختبار الخلفي والتكامل مع الوسطاء المشهورين. ولكن في الوقت نفسه ، دعنا نقول أنه لكي تكون قادرًا على التداول المباشر من خلال Interactive Brokers ، تحتاج إلى دفع 20 دولارًا على الأقل شهريًا للاشتراك في QuantConnect ، وهذا لا يأخذ في الاعتبار اشتراكات البيانات من الوسيط ، إلخ.
رأيي الشخصي هو أن المنصة ليست مريحة للغاية للاستخدام المستمر ، بطريقة ما كل شيء مزدحم للغاية وغير مريح ، بالإضافة إلى مدفوع ، بالإضافة إلى أنه كتب في الأصل في C # وملفوفة بحيث يمكنك استخدام Python. لذا ، بعد أن حاولت اختبار العديد من الاستراتيجيات هناك ، رفضت استخدامها أكثر. على الرغم من أننا يجب أن نشيد - المجتمع هناك أقل نشاطًا ، إلا أن هناك الكثير من المواد في المنتديات ، ويمكن حل المشكلات بسرعة. سأكون سعيدًا إذا كنت تشارك تعليقات حقيقية - ربما لم يكن لدي تجربة مستخدم.
4) QuantRocket - quantrocket.comاذا حكمنا من خلال الوصف - انها مجرد "أغنية". يوجد كل شيء - التثبيت عبر الإنترنت والمحلية ، والاختبار الخلفي ، والبيانات التاريخية التي يمكن جمعها من الوسيط أو توفيرها بنفسك (مقابل 9 دولارات شهريًا) ، والتكامل الفوري مع الوسطاء ، والتكامل جيد جدًا بحيث يتعهدون بإعادة كتابة أي شيء سيتعين عليك ... وحتى أنهم يعدون بأنه إذا كنت معتادًا على Quantopian وقمت بكتابة بعض الأشياء على zipline ، فسوف يساعدون في الانتقال إلى النظام الأساسي الخاص بهم وإلى المكتبة الداخلية (Moonshot) ، مما سيسمح بالتداول المباشر من خلال وسيط للتنفيذ بأقل جهد ممكن ... الكل يبدو مثاليا إن لم يكن لأحد حول "لكن" - ما لا يقل عن 30 دولارًا شهريًا لإتاحة الفرصة لاختبار مثل الجميع حقًا. لم أكن أتجرأ ، لأن هناك أشهر لا تتطلب مشاركتك في السوق (على سبيل المثال ، جميع المرشحات لدخول السوق تظهر "الجلوس لا يزال") ثم رسوم قدرها 30 دولار للحصول على فرصة لاختبار الفرضيات تبدو غير مبررة للغاية. لكنني سأكون ممتنًا للمراجعات الحقيقية - من حاول وما هي إيجابيات وسلبيات وما إلى ذلك. نقطة محرجة أخرى هي الربط بالمنصة والمكتبة ، التي تستخدم فقط ، ثم تزخر بزيادة "تكاليف التبديل" ، أي غدًا ، سيقومون بدلاً من 30 دولارًا بتوصيل تعريفة بسيطة بقيمة 150 دولارًا تقريبًا ، ويمكنك ربطها بمكتبة Moonshot الفريدة الخاصة بهم ونشرها من خلال نظامهم الأساسي ... كما يقولون ، بيضك في سلة واحدة ...)
5) Zipline و Zipline-live (http://www.zipline.io، www.zipline-live.io )يتم تثبيته محليًا ، ويعمل مع Python 2.7 و 3.5 لـ Zipline و 2.7 فقط لـ zipline-live.
وصلنا إلى الحزمة العزيزة ، والتي ، وفقًا لملاحظاتي ، تُستخدم غالبًا في مجتمع محبي أنظمة التداول الآلية في المنزل.
ما لدينا: مكتبة zipline ، والتي هي أساس محرك Quantopian (انظر النقطة 1) وشقيقها الأصغر ، zipline-live ، والتي تدعم التكامل مع Interactive Brokers وتتيح لك تشغيل الخوارزميات التي تم إنشاؤها باستخدام zipline في الإنتاج مع أقل التعديلات. باختصار حول تاريخ القضية - عندما قرروا قبل عامين في Quantopian التخلي عن التجارة الحية ، أصبح المجتمع مهتاجًا ، فالمياه هبت ، وظهرت نتيجة الجهود الجماعية (بما في ذلك فريق Quantopian ، الذي وعد بدعم تطوير المكتبة الحية على أساس غير مهتم). بعد ذلك ، أصبح Zipline-live ، في الواقع ، الطريقة الوحيدة المناسبة (مجانًا) (وبدون تسجيل :) لتكييف الأنظمة التي تم اختبارها على Quantopian (أو محليًا على zipline) لتداول حقيقي من خلال وسطاء تفاعليين (مع وجود تكامل ، ولكن بدون رقم بعض وظائف zipline المهمة وليست كذلك). ماذا يمكن أن يقال عن هذه المجموعة:
- يعد zipline مناسبًا لك محليًا إذا كان لديك مصدر موثوق للبيانات التاريخية أو إذا كان لديك مجموعات بيانات quandl كافية مضمنة في المكتبة مجانًا. يجب ألا يغيب عن البال أن المكتبة لا تدعم ترجمة البيانات عبر الإنترنت ، وسوف يتعين عليك تنزيلها ثم القيام بالتحميل للاختبار الخلفي ( هنا ستجد المزيد من التفاصيل حول هذا)
- تعتبر zipline-live من الناحية النظرية مناسبة إذا تم تنفيذ التكامل مع IB بشكل طبيعي ، ولن تحتاج الخوارزميات المنقولة من Quantopian إلى معالجة وتقليم مهمين بسبب الوظائف التي لم يتم تنفيذها في zipline-live.
6) QsTrader - github.com/mhallsmoore/qstraderهذه مكتبة من المبدعين من موقع البوابة الكمية ، ومجموعة ومجموعة من المواد التعليمية والمحاضرات وما إلى ذلك. تم التثبيت محليًا ، ويستخدم Python 3 وما فوق. لا توجد فرصة تداول حقيقية من خلال وسيط ، لكنهم يعدون بالإضافة. تعتمد إلى حد كبير على كومة بيانات العلوم المعتادة في بيثون - الباندا ، الرديئة ، الغريبة ، وما إلى ذلك ، لذلك سيكون عليك تثبيتها كلها دفعة واحدة. لم أتمكن من الحصول على تقديرات موضوعية حول مدى انتشار هذه المكتبة وسأقولها بصراحة - لم أجربها عمليًا ، نظرًا لتاريخ التحديث ، العمل عليها غير نشط ، لا تتم إضافة الوظائف ، مما يعني أنها لا تعمل لنظام متكامل وحتى "منزلي" مناسب ، ولكن إذا كانت هناك نتائج لاستخدامه وتشكيل رأي شخصي - سهم ، فجأة يكون هذا الحل أفضل من الآخرين.
7) بعد ذلك ، سأدرج المكتبات التي تمكنت من العثور عليها ، لكن لا يمكنني أن أقول الكثير عنها. غالبًا ما يتم دعمهم حصريًا من قِبل مؤلفي المدونات التي أنشأتهم ، وليس لديهم القدرة على الاندماج مع وسيط ، مما يعني أنه يتم اختباره فقط من دون القدرة على استخدامه في المعركة ، دون مجتمع وببطء عملية التطوير ، أي لا تفي بجميع المهام المعينة.-
bt (Backtesting for Python)-
نظام التجارةبتلخيص النتائج الوسيطة ، أشارك الاستنتاجات الشخصية:- إذا كنت لا تمانع في استخدام المنصات عبر الإنترنت التي أصبحت قديمة بيثون 2.7 والأدوات التي تستهدفها في الاستراتيجيات هي الأسهم / العقود الآجلة على مواقع الولايات المتحدة (وسيط IB) ، سيكون مزيج من Quantopian + zipline-live مناسبًا ومجانيًا بالتأكيد (!) التي ستتلقى فيها بيانات تاريخية مجانية (تستوفي معايير الجودة) ، و IDE مجاني لاختبار الفرضيات ، فضلاً عن مكتبة محلية تتيح لك دمج إنجازاتك مع حساب الوساطة وإطلاق النظام في رحلة قتالية ، مع مراعاة جميع البنود ومزيج من الحدود التي لم يتم الكشف عنها اأعاله. أنا شخصياً اخترت هذا الخيار لك بسبب الراحة والوظائف الأساسية المجانية ومجتمع نشط للغاية. في المنشور التالي ، سوف أخبركم عن مدى سهولة (أو ليس سهلاً) اختبار واختبار إستراتيجية مخزونات الزخم من Quantopian عبر الإنترنت إلى zipline-live على الجهاز المحلي ، ومدى نجاح التكامل مع حساب الوساطة في IB في هذه المكتبة ، وكذلك مشاركة تفاصيل استخدام الأصلي Python API من IB.
- إذا كانت الأولوية هي التثبيت المحلي ، والتحكم الكامل في النظام ولا يكلف نفسه عناء الحاجة إلى تنزيل البيانات التاريخية في شكل حزمة بيانات لاختبار الفرضيات ، أو إذا كان هناك مصدر لهذه البيانات أو خالٍ من quandl ، فإن الحزمة Zipline + Zipline-live ستصبح حلاً ممكنًا ، مما سيسمح يمكنك تنفيذ الاستراتيجيات التي تم اختبارها على جهاز محلي بالبيانات التاريخية (الخاصة بك أو المجانية) من خلال IB وكل هذا مجاني في إطار وظيفة المكتبات المشار إليها ووسيط Python API.
- إذا كنت لا تستطيع أو لا ترغب في فتح حساب مع الوسطاء التفاعليين ، فبالنسبة إلى حد كبير ، فإن الكثير من القائمة أعلاه ستفعل ، لأن يعمل QuantConnect ، على سبيل المثال ، مع وسطاء آخرين يدعمون أيضًا تداول FX / Crypto وما إلى ذلك. وإذا كانت المهام ، من حيث المبدأ ، لا تحتاج إلى إجراء تداول مباشر من خلال وسيط ، فيمكنك تجربة جميع المكتبات / المنصات الموصوفة لإعادة الاختبار واختيار المهمة التي تلبي مهامك بشكل كامل.
ملاحظة: في الختام ، أود أن أشير إلى أن أهمية اختيار منصة / مكتبة ليست مجرد راحة ، بل هي أيضًا "قابلية التوسع" للأنظمة. دعنا نقول أنني وضعت شيء واضح واختبرت على zipline. ثم قرر تنفيذه دون إجراء اختبار من أي وسيط من خلال API الخاصة به - وهنا يبدأ بمليون التفاصيل الإضافية التي لن تأخذها في الاعتبار في وضع الصندوق - كيف يتم تنفيذ الطلبات ، وكيف يعالج نظامك في أوضاع تداول مختلفة ، وإذا هناك فجوة / مرحلة ما بعد المتاجرة الفوقية بعد التقرير الفصلي وما إلى ذلك ... لذلك ، من وجهة نظري الشخصية ، من المهم اختيار مثل هذا التجمع الذي يعمل الكود على حد سواء لاختباره الخلفي ولتطبيق نظام التداول في المعركة ، ثم ستعمل على حل العيوب ، ح لتحسين نوعية على حد سواء.