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


بارسونستر أنا يمكن أن نرى على الرغم من الأشياء مثل مداخن الشبكات، والتي هي تماما تعتمد على منصة، تتطلب بعض الجسم من المعرفة قبل أن تكون قادرة على تبديل المنصات بالإضافة إلى أشياء مثل شوكة التي هي شائعة في عالم بوسيكس ولكن ليست ممكنة في بيئة ويندوز وأعتقد أنه سا إجابة معقولة بيلي أونيل أوج 29 10 في 0 55.Linux أونيكس هي أكثر قابلية للاستخدام للمستخدمين عن بعد المتزامنة، مما يجعل من الأسهل على النصي حول الأنظمة، واستخدام الأدوات القياسية مثل غريب سيد أوك بيرل روبي أقل على سجلات سش سكب كل تلك الأشياء ق فقط هناك. هناك أيضا القضايا التقنية، على سبيل المثال لقياس الوقت المنقضي على ويندوز يمكنك الاختيار بين مجموعة من الوظائف على أساس علامة على مدار الساعة ويندوز، و كيريبرفورمانسكونتر القائم على الأجهزة الأول هو زيادات كل 10 إلى 16 ميلي ثانية ملاحظة بعض الوثائق يعني المزيد من الدقة - على سبيل المثال القيم من قياس جيتسيستيمتيمياسفيليتيمي إلى 100ns، ولكنهم يبلغون نفس 100ns حافة علامة على مدار الساعة حتى القراد مرة أخرى هذا الأخير - كيريبرفورمانسكونتر - يحتوي على القضايا عرض توقف حيث النوى مختلفة كبوس يمكن الإبلاغ عن الساعات منذ منذ بدء التشغيل التي تختلف من عدة ثوان بسبب يجري تسخينها في أوقات مختلفة خلال وثائق النظام مسن التمهيد هذا باعتباره علة بيوس ممكن، ولكن من القواسم المشتركة لذلك، الذي يريد تطوير أنظمة التداول منخفضة الكمون على منصة التي يمكن أن تكون مصممة بشكل صحيح هناك حلول، ولكنك فازت t العثور على أي البرامج التي يجلس مريح في دفعة أو إيس. العديد من المتغيرات لينكس أونيكس لديها الكثير من المعلمات توياكابل بسهولة للمتاجرة الكمون لحدث واحد ضد متوسط ​​الكمون تحت الحمل، وأحجام شريحة الوقت، وسياسات الجدولة وغيرها على أنظمة التشغيل مفتوحة المصدر، وهناك أيضا تأكيد أن يأتي مع القدرة على الرجوع إلى رمز عندما كنت تعتقد أن شيئا يجب أن يكون أسرع مما هو عليه، ومعرفة أن مجتمع ضخم من الناس قد تم وكان يفعلون ذلك نقديا - مع ويندوز فمن الواضح أن أساسا سوف يكون الناس الذين أعيد تعيين للنظر في it. O ن جانب السمعة فود - غير ملموس إلى حد ما ولكن جزءا هاما من أسباب اختيار نظام التشغيل - وأعتقد أن معظم المبرمجين في هذه الصناعة سوف تثق فقط لينكس أونيكس أكثر لتوفير جدولة موثوق بها والسلوك وعلاوة على ذلك، لينكس أونيكس لديه سمعة لتحطمها أقل، على الرغم من ويندوز موثوقة جدا في هذه الأيام، ولينكس لديها قاعدة رمز أكثر تقلبا بكثير من سولاريس أو FreeBSD. resp 29 أغسطس في 0 42.Windows أنظمة التشغيل العميل تسمح فقط شخص واحد لاستخدام رديب في وقت ومع ذلك كان ويندوز ترمينال سيرفر حول إلى الأبد كان، في الواقع، الاستخدام الأصلي من رديب ويسمح العديد من الاتصالات كما لديك تراخيص وصول العميل ويندوز سيرفر أوس تأتي مع القدرة على الحصول على أكثر من مستخدم بعيد واحد بشكل افتراضي إذا كنت يمكن أن مصدر التعليق حول جدولة ثم أنا سوف 1 هنا - هذا الجزء من الجواب ويبدو أن فود في هذه المرحلة بالنسبة لي بقية الجواب هو جيد يمف بيلي أونيل أغسطس 29 10 في 0 50.There لا يوجد أونيكس لينكس جدولة انها واحدة من المناطق التي تطبيقات تختلف ولينكس في الواقع كان لديها أكثر من واحد جدولة اختيار جوجل تماما معرض جدولة لينكس للخلفية، حتى تتمكن من ر حتى يقول جدولة لينكس موثوقة مسالتيرز أغسطس 30 10 في 11 37.I ثانيا آراء التاريخية والوصول إلى نواة التلاعب. بصرف النظر عن تلك الأسباب وأعتقد أيضا أن تماما مثل كيفية إيقاف جمع القمامة وآلية مماثلة في جافا عند استخدام هذه التقنيات في بعض الكمون المنخفض أنها قد تجنب ويندوز بسبب أبي الصورة على مستوى عال التي تتفاعل مع وانخفاض مستوى نظام التشغيل ومن ثم kernel. So جوهر هو بالطبع النواة التي يمكن أن تتفاعل مع استخدام نظام التشغيل على مستوى منخفض يتم توفير واجهات برمجة التطبيقات عالية المستوى فقط لجعل المستخدمين العاديين الحياة أسهل ولكن في حالة الكمون المنخفض هذا اتضح أن تكون طبقة الدهنية وكسر ثواني خسارة حول كل عملية حتى خيار مربح لكسب ثواني جزء صغير لكل call. Apart من هذا شيء آخر للنظر هو التكامل معظم سي رفرز ومراكز البيانات والتبادلات استخدام أونيكس لا ويندوز وذلك باستخدام عملاء من نفس الأسرة يجعل التكامل والاتصالات أسهل. ثم لديك قضايا الأمن كثير من الناس هناك قد لا تتفق مع هذه النقطة على الرغم من القرصنة أونيكس ليست سهلة مقارنة القرصنة ويندوز الأول لا يجب الموافقة على الترخيص يجب أن يكون قضية للبنوك لأنها دش المال على كل قطعة واحدة من الأجهزة والبرمجيات والناس الذين تخصيص لهم، لذلك سوف تراخيص شراء لن تكون أكبر قضية عندما تعتبر ما يكسبون من خلال شراء. في ​​21 ديسمبر 12 في 20 05.Your answer.2017 كومة الصرف، وشركة كيفية تطوير نظام التداول. ومن المهم أيضا أن حافة قوية نظام قوي عندما يحافظ على توقع إيجابي يجب اختبار النظام على صعودا وهبوطا و حركة جانبية العديد من الأنظمة التالية الاتجاه أداء جيدا عندما اتجاهات الصك ولكن لا تفعل كذلك عندما يكون الجهاز في فترة انحراف جانبية فمن الأهمية بمكان أن تؤخذ هذه الفترة في الاعتبار خلال الظهر test. i يوصي الاختبار الخلفي على ما لا يقل عن 2000 القضبان إذا كنت باكتستينغ نظام على الرسوم البيانية اليومية أوصي باستخدام 10 سنوات على الرسوم البيانية خلال اليوم أوصي مرة أخرى اختبار النظم بقدر ما يعود بائع البيانات الخاصة بك تسمح هذا هو عادة 6 أشهر إلى سنة. اختبار برامج الاختبار. من المهم استخدام برامج المستوى المهني مع قدرات الاختبار الخلفي عند تطوير النظام الخاص بك على سبيل المثال لا الحصر. واحد من أفضل برامج اختبار الظهر هناك على الرغم من أن البرمجة قد تكون صعبة كما هو في باسكال لا يوجد خدمة العملاء الهاتف للثروة المختبر إما نسمفكس تقدم خدمات البرمجة بأسعار تنافسية، وفي تخفيضات هائلة لعملائها الفوركس الحالي. إدارة المخاطر features. System تطوير wizard. Professional مستوى الاختبار الخلفي وتحليل البرمجيات ميتاستوك تقدم العديد من أنظمة التداول والمؤشرات ميتاستوك له لغته الخاصة، قد يكون أسهل قليلا من الثروة مختبر ولكن أكثر محدودية بكثير خدمة العملاء جيدة وهناك نوم بالإضافة إلى الإضافات والمكونات الإضافية التي يمكنك شراء لتتناسب مع طريقتك في التداول نسمفكس تقدم خدمات البرمجة بأسعار تنافسية، وفي تخفيضات هائلة لعملائها الفوركس الموجودة. الكسندر نيكريتين هو تاجر المهنية مع أكثر من 8 سنوات من الخبرة وتشمل تخصصاته المخاطر إدارة وتطوير النظام ألكسندر هو الرئيس التنفيذي الذي هو وسيط إدخال الفوركس وشركة التعليم التي تساعد احتياجات العميل جناح في تجارة الفوركس ألكسندر لديه درجة مع التركيز في الخدمات المصرفية الاستثمارية وأدوات مشتقة من كلية بابسون في ماساتشوستس. أفضل لغة البرمجة ل أنظمة التداول الخوارزمية. أحد الأسئلة الأكثر شيوعا التي أتلقىها في كيس البريد الإلكتروني قس هو ما هي أفضل لغة برمجة للتداول الحسابي الجواب القصير هو أنه لا يوجد أفضل لغة استراتيجية المعلمات والأداء والنمطية والتنمية والمرونة والتكلفة يجب أن جميع يمكن النظر في هذه المقالة سوف الخطوط العريضة للمكونات الضرورية للخوارزمية وهي الطريقة التي تؤثر بها القرارات المتعلقة بالتنفيذ على اختيار اللغة. أولا، سيتم النظر في المكونات الرئيسية لنظام التداول الخوارزمي، مثل أدوات البحث، ومحفظة المحفظة، ومدير المخاطر ومحرك التنفيذ. وفي وقت لاحق، سوف تكون استراتيجيات التداول المختلفة ودراسة وكيفية تأثيرها على تصميم النظام على وجه الخصوص وتيرة التداول وحجم التداول المحتمل على حد سواء سيتم مناقشتها. بمجرد اختيار استراتيجية التداول، فمن الضروري لمهندس النظام بأكمله وهذا يشمل اختيار الأجهزة، والتشغيل نظام النظام ومرونة النظام ضد نادرة، أحداث كارثية محتملة في حين يتم النظر في العمارة، يجب إيلاء الاعتبار الواجب للأداء - على حد سواء لأدوات البحث وكذلك بيئة التنفيذ الحية. ما هو نظام التداول في محاولة للقيام به. قبل اتخاذ قرار على أفضل لغة التي لكتابة نظام التداول الآلي من الضروري تحديد ريكير إيمنتس هل سيستمر النظام على أساس التنفيذ بحتة هل يتطلب النظام إدارة المخاطر أو وحدة بناء المحفظة سوف يتطلب النظام باكتستر عالي الأداء بالنسبة لمعظم الاستراتيجيات يمكن تقسيم نظام التداول إلى فئتين بحث وتوليد إشارة. مع تقييم لأداء استراتيجية على البيانات التاريخية عملية تقييم استراتيجية التداول على بيانات السوق السابقة يعرف باسم باكتستينغ حجم البيانات والتعقيد الخوارزمي سيكون لها تأثير كبير على كثافة الحسابية من سرعة وحدة المعالجة المركزية باكتستر والتزامن غالبا ما تكون محدودة العوامل في تحسين سرعة تنفيذ البحث. ويهتم جيل الجيل مع توليد مجموعة من إشارات التداول من خوارزمية وإرسال هذه الأوامر إلى السوق، وعادة عن طريق الوساطة بالنسبة لبعض الاستراتيجيات يتطلب مستوى عال من الأداء قضايا إو مثل عرض النطاق الترددي للشبكة و الكمون غالبا ما يكون العامل المحدد في تحسين التنفيذ s يستيمز وبالتالي فإن اختيار اللغات لكل مكون من النظام بأكمله قد يكون مختلفا تماما. النوع، التردد وحجم الاستراتيجية. نوع من استراتيجية خوارزمية المستخدمة سيكون لها تأثير كبير على تصميم النظام سيكون من الضروري النظر في والأسواق التي يجري تداولها، والاتصال ببائعي البيانات الخارجية، وتواتر وحجم الاستراتيجية، والمفاضلة بين سهولة التنمية والأداء الأمثل، فضلا عن أي الأجهزة المخصصة، بما في ذلك الخوادم المخصصة الموجودة في الموقع، وحدات معالجة الرسومات أو فبغا التي قد يكون من الضروري. خيارات التكنولوجيا لاستراتيجية منخفضة الأسهم الأسهم الولايات المتحدة ستكون مختلفة إلى حد كبير عن تلك التي تتبعها استراتيجية التحكيم عالية التردد التداول في سوق العقود الآجلة قبل اختيار اللغة العديد من البائعين البيانات يجب تقييم التي تتعلق وسوف يكون من الضروري النظر في الاتصال للبائع، وهيكل أي واجهات برمجة التطبيقات، في الوقت المناسب من البيانات ومتطلبات التخزين والمرونة في ه الوجه من بائع الذهاب حاليا ومن الحكمة أيضا أن تمتلك إمكانية الوصول السريع إلى العديد من البائعين أدوات مختلفة جميعا لها المراوغات التخزين الخاصة، والأمثلة على التي تشمل رموز شريط متعددة للأسهم وتاريخ انتهاء الصلاحية للعقود الآجلة ناهيك عن أي بيانات أوتك محددة هذا يحتاج على أن يتم إدراجها في تصميم منصة. من المرجح أن تكون واحدة من أكبر السائقين لكيفية سيتم تعريف كومة التكنولوجيا استراتيجيات توظيف البيانات بشكل متكرر أكثر من الحانات بدقة أو الثانية تتطلب اهتماما كبيرا فيما يتعلق بالأداء. استراتيجية تتجاوز وثانيا الحانات أي بيانات القراد يؤدي إلى تصميم مدفوعة الأداء كما الشرط الأساسي لاستراتيجيات عالية التردد كمية كبيرة من بيانات السوق سوف تحتاج إلى تخزين وتقييم البرمجيات مثل HDF5 أو كدب تستخدم عادة لهذه الأدوار. من أجل معالجة كميات كبيرة من البيانات اللازمة لتطبيقات هفت، على نطاق واسع باكتستر الأمثل ونظام التنفيذ يجب أن يكون تستخدم سيسي ربما مع بعض المجمع من المرجح أن أقوى لغة المرشح استراتيجيات فائقة التردد سوف تتطلب بالتأكيد تقريبا الأجهزة المخصصة مثل فبغاس وتبادل تبادل الموقع و شبكة الشبكة واجهة ضبط. Research أنظمة البحث وعادة ما تنطوي على مزيج من التنمية التفاعلية والنص البرمجي الآلي وغالبا ما يحدث في مكان داخل إيد مثل فيسوال ستوديو، ماتلاب أو R ستوديو هذا الأخير ينطوي على حسابات عددية واسعة على العديد من المعلمات ونقاط البيانات وهذا يؤدي إلى اختيار اللغة توفير بيئة مباشرة لاختبار التعليمات البرمجية، ولكن أيضا يوفر ما يكفي الأداء لتقييم استراتيجيات أكثر من أبعاد معلمة متعددة. إيدس نموذجية في هذا المجال تشمل ميكروسوفت فيسوال سيسي، الذي يحتوي على الأدوات المساعدة التصحيح واسعة، قدرات اكتمال التعليمات البرمجية عن طريق إنتليسنس ومناظر عامة مباشرة من كومة المشروع بأكمله عن طريق قاعدة البيانات أورم، لينق ماتلاب الذي تم تصميمه على نطاق واسع الخط العددي أر و فيكتوريسد العمليات، ولكن بطريقة وحدة التحكم التفاعلية R ستوديو الذي يلتف وحدة تحكم اللغة الإحصائية R في إيد الكسوف إيد كاملة لينكس جافا و C و إيدس شبه الملكية مثل إينوهت الستارة لبيثون، والتي تشمل تحليل البيانات والمكتبات مثل نومبي سسيبي سسيت تعلم والباندا في بيئة وحدة التحكم التفاعلية واحدة. ل باكتستينغ العددي، كل من اللغات المذكورة أعلاه هي مناسبة، على الرغم من أنه ليس من الضروري الاستفادة من واجهة المستخدم الرسومية إيد كما سيتم تنفيذ التعليمات البرمجية في الخلفية رئيس الوزراء النظر في هذه المرحلة هو أن سرعة التنفيذ لغة مجمعة مثل C غالبا ما تكون مفيدة إذا كانت أبعاد المعلمة باكتستينغ كبيرة تذكر أنه من الضروري أن نكون حذرين من هذه الأنظمة إذا كان هذا هو الحال. اللغات المترجمة مثل بيثون غالبا ما تجعل استخدام من المكتبات عالية الأداء مثل نومبي الباندا لخطوة باكتستينغ، من أجل الحفاظ على درجة معقولة من القدرة التنافسية مع معادلات تجميعها ولتيم سيتم تحديد اللغة المختارة للاختبار الخلفي من خلال احتياجات خوارزمية محددة وكذلك مجموعة من المكتبات المتاحة في اللغة أكثر على ذلك أدناه ومع ذلك، فإن اللغة المستخدمة في باكتستر والبيئات البحثية يمكن أن تكون مستقلة تماما عن تلك المستخدمة في محفظة وبناء وإدارة المخاطر وتنفيذ المكونات، كما سيظهر. الحافظة البناء وإدارة المخاطر. المكونات محفظة البناء وإدارة المخاطر غالبا ما يتم تجاهلها من قبل تجار التجزئة خوارزمية هذا هو دائما تقريبا خطأ هذه الأدوات توفر الآلية التي سيتم الحفاظ على رأس المال أنها لا تحاول فقط لتخفيف عدد الرهانات محفوفة بالمخاطر، ولكن أيضا تقليل الازدحام من الصفقات نفسها، والحد من تكاليف المعاملات. يمكن أن الإصدارات المتطورة من هذه المكونات يكون لها تأثير كبير على نوعية واتساقية الربحية فمن السهل لخلق مستقر من استراتيجيات وآلية بناء المحفظة والمانا المخاطر جير يمكن تعديلها بسهولة للتعامل مع أنظمة متعددة وبالتالي ينبغي اعتبارها مكونات أساسية في بداية تصميم نظام التداول حسابي. وظيفة نظام بناء محفظة هو اتخاذ مجموعة من الصفقات المطلوبة وإنتاج مجموعة من الصفقات الفعلية التي تقلل من زبد، والحفاظ على التعرض لعوامل مختلفة مثل القطاعات وفئات الأصول والتقلب وغيرها، وتحسين تخصيص رأس المال لاستراتيجيات مختلفة في محفظة. محفظة البناء غالبا ما يقلل إلى مشكلة الجبر الخطي مثل فاكتوريساتيون المصفوفة، وبالتالي الأداء هو للغاية تعتمد على فعالية تنفيذ الجبر الخطي العددي المتاحة وتشمل المكتبات المشتركة أوبلاس لاباك و ناغ ل C ماتلاب تمتلك أيضا عمليات مصفوفة الأمثل على نطاق واسع بيثون يستخدم نومبي سسيبي لمثل هذه الحسابات سوف محفظة إعادة التوازن في كثير من الأحيان تتطلب مكتبة مصفوفة تجميعها وتحسينها جيدا للقيام بذلك الخروج، حتى لا عنق الزجاجة في التداول نظام إدارة المخاطر هو جزء آخر مهم للغاية من نظام التداول حسابي يمكن أن يأتي المخاطر في أشكال كثيرة زيادة التقلب على الرغم من أن هذا قد ينظر إليه على أنه مرغوب فيه لاستراتيجيات معينة، وزيادة الارتباطات بين فئات الأصول، والتخلف الطرف المقابل، انقطاع الخادم، أحداث البجعة السوداء والأخطاء غير المكتشفة في قانون التداول، على سبيل المثال لا الحصر. مكونات إدارة المخاطر محاولة وتوقع آثار التقلب المفرط والارتباط بين فئات الأصول وتأثيرها اللاحق على رأس المال التجاري غالبا ما يقلل هذا إلى مجموعة من الحسابات الإحصائية مثل مونتي كارلو اختبارات الإجهاد هذا هو مماثل جدا للاحتياجات الحسابية لمحرك تسعير المشتقات وعلى هذا النحو سوف تكون وحدة المعالجة المركزية ملزمة هذه المحاكاة موازية للغاية انظر أدناه، وإلى حد ما، فمن الممكن لرمي الأجهزة في المشكلة. أنظمة التنفيذ. وتتمثل مهمة نظام التنفيذ في تلقي إشارات تجارية مصفاة من بناء المحفظة وإدارة المخاطر مكونات وإرسالها إلى وساطة أو غيرها من وسائل الوصول إلى الأسواق بالنسبة لمعظم استراتيجيات التداول خوارزمية التجزئة وهذا ينطوي على اتصال أبي أو فيكس إلى الوساطة مثل وسطاء التفاعلية الاعتبارات الأساسية عند اتخاذ قرار بشأن لغة تشمل جودة أبي، توفر أرابيك-أرابي-أرابي أفايلابيليتي ل أبي وتكرار التنفيذ والانزلاق المتوقع. نوعية أبي تشير إلى مدى توثيقها بشكل جيد، أي نوع من الأداء يوفر، سواء كان يحتاج إلى برنامج مستقل للوصول إليها أو ما إذا كان يمكن إنشاء بوابة في واجهة بدون واجهة المستخدم الرسومية في حالة الوسطاء التفاعليين، يجب أن تكون أداة ترادر ​​ووركستاتيون قيد التشغيل في بيئة واجهة المستخدم الرسومية من أجل الوصول إلى واجهة برمجة التطبيقات (أبي). كان علي مرة واحدة تثبيت إصدار سطح المكتب أوبونتو على خادم سحابة أمازون للوصول إلى الوسطاء التفاعليين عن بعد، بحتة لهذا السبب. أكثر واجهات برمجة التطبيقات توفر C و أو واجهة جافا وعادة ما يصل إلى المجتمع لتطوير ورا اللغة محددة أبيرس ل C و بيثون و R و إكسيل و ماتلاب لاحظ أنه مع كل البرنامج المساعد إضافية تستخدم خصوصا أبي مغلفات هناك مجال للخلل لزحف إلى النظام اختبار دائما الإضافات من هذا النوع وضمان الحفاظ عليها بنشاط مقياس جدير بالاهتمام هو أن نرى كيف تم إجراء العديد من التحديثات الجديدة إلى كودباس في الأشهر الأخيرة. وتكرار التنفيذ هو من أهمية قصوى في خوارزمية التنفيذ لاحظ أن مئات أوامر قد يتم إرسالها في كل دقيقة، وعلى هذا النحو من الأهمية الحاسمة سوف يتم تكبد الانزلاق من خلال تنفيذ سيئة الأداء وهذا سيكون له تأثير دراماتيكي على الربحية. اللغات المكتوبة بشكل منتظم انظر أدناه مثل C جافا هي عموما الأمثل للتنفيذ ولكن هناك مفاضلة في وقت التطوير والاختبار وسهولة الصيانة ديناميكيا كتابة لغات مثل بايثون و بيرل هي الآن عموما سريعة بما فيه الكفاية دائما التأكد من أن يتم تصميم مكونات بطريقة نمطية انظر أدناه بحيث يمكن تبديلها خارجا كما سكا النظام عملية التطوير والتطوير في الهندسة المعمارية. تمت مناقشة مكونات نظام التداول ومتطلباته من حيث الحجم والحجم، ولكن البنية التحتية للنظام لم يتم تغطيتها بعد. من المحتمل أن يكون هؤلاء الذين يعملون كمتاجر بيع بالتجزئة أو يعملون في صندوق صغير يرتدي الكثير القبعات سيكون من الضروري أن تغطي نموذج ألفا، وإدارة المخاطر والتنفيذ المعلمات، وأيضا التنفيذ النهائي للنظام قبل الخوض في لغات محددة سيتم مناقشة تصميم بنية النظام الأمثل. الانفصال من القلق. واحد من أكثر القرارات الهامة التي يجب اتخاذها في البداية هي كيفية فصل شواغل نظام التداول في تطوير البرمجيات، وهذا يعني أساسا كيفية تقسيم مختلف جوانب النظام التجاري إلى مكونات وحدات منفصلة. من خلال تعريض واجهات في كل من المكونات فمن السهل مبادلة أجزاء من النظام للإصدارات الأخرى التي تساعد الأداء، والموثوقية أو الصيانة، دون تعديل أي رمز التبعية الخارجية هذه هي أفضل الممارسات لمثل هذه الأنظمة للاستراتيجيات في الترددات المنخفضة ينصح بهذه الممارسات بالنسبة لتداول الترددات العالية جدا قد يتعين تجاهل قاعدة البيانات على حساب تعديل النظام للحصول على المزيد من الأداء نظام أكثر اقترانا بإحكام يكون مرغوب فيه. إنشاء خريطة مكون لنظام التداول حسابي يستحق مقالا في حد ذاته ومع ذلك، فإن النهج الأمثل هو التأكد من وجود مكونات منفصلة للمدخلات بيانات السوق التاريخية والحقيقية، وتخزين البيانات، أبي الوصول إلى البيانات، باكتستر ، ومعايير الاستراتيجية، وبناء المحفظة، وإدارة المخاطر ونظم التنفيذ الآلي. على سبيل المثال، إذا كان مخزن البيانات المستخدمة حاليا ضعيفة الأداء، حتى على مستويات كبيرة من التحسين، ويمكن تبديلها مع الحد الأدنى من إعادة الكتابة إلى ابتلاع البيانات أو أبي الوصول إلى البيانات بقدر ما باكتستر والمكونات اللاحقة هي المعنية، لا يوجد فرق. فائدة أخرى من فصل كومبون نتس هو أنه يسمح لمجموعة متنوعة من لغات البرمجة لاستخدامها في النظام العام ليست هناك حاجة إلى أن يقتصر على لغة واحدة إذا كانت طريقة الاتصال للمكونات هي لغة مستقلة وهذا سيكون الحال إذا كانوا التواصل عبر تكب إب ، زيرومق أو بعض بروتوكولات أخرى مستقلة اللغة. وكمثال ملموس، والنظر في حالة نظام باكتستينغ يجري كتابتها في C لعدد أداء الطحن، في حين تتم كتابة مدير محفظة ونظم التنفيذ في بيثون باستخدام سسيبي و IBPy. Performance اعتبارات. الأداء هو اعتبار كبير لمعظم استراتيجيات التداول لاستراتيجيات تردد أعلى هو العامل الأكثر أهمية يغطي الأداء مجموعة واسعة من القضايا، مثل سرعة التنفيذ الخوارزمية، الكمون الشبكة، عرض النطاق الترددي، إو البيانات، التزامن التزامن والقياس كل من هذه المجالات هي تغطيها بشكل فردي الكتب المدرسية الكبيرة، لذلك هذه المادة سوف تخدش فقط سطح كل موضوع الهندسة المعمارية واللغة وسيتم مناقشة خيار العمر الآن من حيث آثارها على الأداء. الحكمة السائدة كما ذكر دونالد نوث واحد من آباء علوم الحاسب الآلي، هو أن التحسين المبكرة هو جذر كل الشر وهذا هو الحال دائما تقريبا - إلا عند بناء خوارزمية التداول عالية التردد بالنسبة لأولئك الذين يرغبون في استراتيجيات التردد المنخفض، نهج مشترك هو بناء نظام في أبسط طريقة ممكنة وتحسين فقط كما تبدأ الاختناقات في الظهور. يتم استخدام أدوات التعيين لتحديد أين الاختناقات تنشأ يمكن إجراء الملامح لجميع العوامل المذكورة أعلاه، إما في بيئة ويندوز أو لينكس مايكروسوفت هناك العديد من نظام التشغيل وأدوات اللغة المتاحة للقيام بذلك، فضلا عن المرافق طرف ثالث سيتم الآن مناقشة اختيار اللغة في سياق الأداء. C، جافا ، بيثون، R و ماتلاب كلها تحتوي على مكتبات عالية الأداء إما كجزء من معيارها أو خارجيا لبنية البيانات الأساسية والعمل الخوارزمية C السفن مع S في حين تحتوي بيثون على نومبي سسيبي المشتركة المهام الرياضية هي التي يمكن العثور عليها في هذه المكتبات ونادرا ما تكون مفيدة لكتابة التنفيذ الجديد. استثناء واحد هو إذا مطلوب بنية الأجهزة مخصصة للغاية وخوارزمية تستخدم على نطاق واسع من ملحقات الملكية مثل مخابئ مخصصة ومع ذلك، في كثير من الأحيان إعادة اختراع نفايات العجلة الوقت الذي يمكن أن تنفق بشكل أفضل تطوير وتحسين أجزاء أخرى من البنية التحتية للتجارة الوقت التنمية ثمين للغاية وخاصة في سياق المطورين الوحيد. الطاقة غالبا ما تكون قضية من نظام التنفيذ كما وعادة ما تقع أدوات البحث على نفس الجهاز بالنسبة لأول مرة، يمكن أن يحدث الكمون في نقاط متعددة على طول مسار التنفيذ يجب استشارة قواعد البيانات الكمون شبكة القرص، يجب أن يتم إنشاء إشارات التشغيل سيست، الكمون الرسائل الكمون، وإشارات التجارة أرسلت نيك الكمون وأوامر معالجتها نظم التبادل الداخلي الكمون. لعمليات تردد أعلى فمن الضروري أن تصبح مألوفة على نحو وثيق مع تحسين النواة وكذلك الأمثل لنقل الشبكة هذا هو منطقة عميقة وهو إلى حد كبير خارج نطاق المادة ولكن إذا كان المطلوب خوارزمية أوفت ثم يكون على بينة من عمق المعرفة المطلوبة. التخزين هو مفيدة جدا في مجموعة أدوات المطور التجاري الكمي يشير التخزين المؤقت إلى مفهوم تخزين البيانات التي يتم الوصول إليها بشكل متكرر بطريقة تسمح بالوصول إلى أداء أعلى على حساب احتمال حدوث ستالينس للبيانات يحدث حالة الاستخدام الشائعة في تطوير الويب عند أخذ البيانات من قاعدة بيانات العلائقية المدعومة بالقرص ووضعها في الذاكرة أي طلبات لاحقة للبيانات لم يكن لديك لضرب قاعدة البيانات وحتى مكاسب الأداء يمكن أن تكون كبيرة. للحالات التجارية التخزين المؤقت يمكن أن تكون مفيدة للغاية على سبيل المثال، الحالة الراهنة للاستراتيجية يمكن تخزين المحفظة في ذاكرة التخزين المؤقت حتى يتم إعادة توازنها، بحيث لا تحتاج القائمة إلى أن تكون مجددة على كل حلقة من التداول خوارزمية جي من المرجح أن تكون وحدة المعالجة المركزية عالية أو القرص إو العملية. ومع ذلك، التخزين المؤقت لا يخلو من القضايا الخاصة بها تجديد بيانات ذاكرة التخزين المؤقت في كل مرة، وذلك بسبب طبيعة فوليلي تخزين ذاكرة التخزين المؤقت، يمكن أن تضع طلبا كبيرا على البنية التحتية قضية أخرى هو الكلب تتراكم حيث أجيال متعددة من نسخة مخبأ جديدة تتم تحت حمولة عالية للغاية، الأمر الذي يؤدي إلى تعطل الفشل. تخصيص الذاكرة الديناميكية هي عملية مكلفة في تنفيذ البرمجيات وبالتالي فمن الضروري لتطبيقات التداول أداء أعلى ليكون على علم جيد كيف يتم تخصيص الذاكرة و ديالوكاتد خلال تدفق البرنامج أحدث معايير اللغة مثل جافا و C و بيثون كل إجراء جمع القمامة التلقائي الذي يشير إلى ديالوكاتيون الذاكرة المخصصة حيوي عندما تخرج الكائنات من نطاق. مجموعة غارباج مفيد للغاية أثناء التنمية كما أنه يقلل والأخطاء والمساعدات القراءة ومع ذلك، فإنه غالبا ما يكون دون الأمثل لبعض استراتيجيات تداول عالية التردد كوستو م جمع القمامة هو المطلوب في كثير من الأحيان لهذه الحالات في جافا، على سبيل المثال، من خلال ضبط جامع القمامة وتكوين كومة الذاكرة المؤقتة، فمن الممكن الحصول على الأداء العالي لاستراتيجيات هفت. ج لا توفر جامع القمامة الأصلي وبالتالي فمن الضروري التعامل مع كل تخصيص الذاكرة ديالوكاتيون كجزء من تنفيذ كائن s في حين يحتمل أن يكون عرضة للخطأ المحتمل أن يؤدي إلى مؤشرات التعلق من المفيد للغاية أن يكون التحكم غرامة الحبيبات لكيفية ظهور الكائنات على كومة لتطبيقات معينة عند اختيار لغة تأكد من دراسة كيفية عمل جمع القمامة وما إذا كان يمكن تعديلها لتحسين حالة استخدام معين. عمليات كثيرة في أنظمة التداول حسابي هي قابلة للتوازي هذا يشير إلى مفهوم تنفيذ عمليات البرمجة متعددة في نفس الوقت، أي في موازاة ما يسمى بحماس الخوارزميات المتوازية تتضمن الخطوات التي يمكن حسابها بشكل مستقل تماما عن الخطوات الأخرى بعض الأوبرا الإحصائية مثل محاكاة مونتي كارلو هي مثال جيد للخوارزميات المتوازية بشكل محرج حيث يمكن حساب كل عملية سحب عشوائي وتشغيل المسار اللاحق دون معرفة مسارات أخرى. الخوارزميات الأخرى تكون متوازية جزئيا فقط محاكيات ديناميات السوائل هي مثال على ذلك، حيث المجال من الحسابات يمكن تقسيمها، ولكن في نهاية المطاف هذه المجالات يجب التواصل مع بعضها البعض، وبالتالي فإن العمليات هي جزئيا متتابعة خوارزميات متوازية تخضع لقانون أمدال s الذي يوفر الحد الأعلى النظري إلى زيادة أداء خوارزمية موازية عندما تخضع لعمليات N منفصلة على سبيل المثال على وحدة المعالجة المركزية الأساسية أو موضوع. أصبح باراليليساتيون أهمية متزايدة كوسيلة للتحسين منذ المعالج على مدار الساعة سرعات قد ركود، كما تحتوي على أحدث المعالجات العديد من النوى التي لإجراء حسابات موازية صعود أجهزة الرسومات الاستهلاكية في الغالب للألعاب الفيديو قد يؤدي إلى تطوير معالجة رسومية أون وحدات معالجة الرسومات التي تحتوي على مئات من النوى للعمليات المتزامنة للغاية مثل هذه الجرافيك هي الآن بأسعار معقولة جدا أطر عالية المستوى، مثل نفيديا ق كودا قد تؤدي إلى اعتماد واسع النطاق في الأوساط الأكاديمية والتمويل. هذه الأجهزة غبو عموما مناسبة فقط للجانب البحثي من في حين أن أجهزة أخرى أكثر تخصصا بما في ذلك صفائف بوابة المجال للبرمجة - فبغاس تستخدم ل U هفت في الوقت الحاضر، معظم اللغات الحديثة تدعم درجة من التزامن تعدد الترابط وهكذا فمن السهل لتحسين باكتستر، لأن جميع الحسابات هي عموما مستقلة عن الآخرين. القياس في هندسة البرمجيات والعمليات يشير إلى قدرة النظام على التعامل مع الأحمال المتزايدة باستمرار في شكل طلبات أكبر، واستخدام المعالج العالي والمزيد من تخصيص الذاكرة في التداول الخوارزمي استراتيجية قادرة على نطاق إذا كان يمكن قبول كميات أكبر من رأس المال ولا تزال تنتج عوائد متسقة التكنولوجيا كومة جداول إذا كان يمكن أن إندور e حجم أكبر من التجارة وزيادة الكمون، دون الاختناقات. بينما يجب أن تصمم النظم على نطاق واسع، فإنه من الصعب في كثير من الأحيان للتنبؤ مسبقا حيث سوف تحدث عنق الزجاجة ريغوروس قطع الأشجار والاختبار والتنميط والرصد سيساعد كثيرا في السماح للنظام لتوسيع نطاق اللغات نفسها غالبا ما يتم وصفها بأنها غير قابلة للتوزيع وهذا عادة ما يكون نتيجة للتضليل، بدلا من الحقيقة الصعبة هو إجمالي كومة التكنولوجيا التي ينبغي التأكد من قابلية التوسع، وليس اللغة بوضوح بعض اللغات لديها أداء أكبر من غيرها في حالات الاستخدام بشكل خاص، ولكن لغة واحدة هي أبدا أفضل من آخر في كل معنى. أحد وسائل إدارة الحجم هو فصل المخاوف، كما ذكر أعلاه من أجل زيادة إدخال القدرة على التعامل مع طفرات في النظام أي التقلب المفاجئ الذي يؤدي إلى مجموعة من الصفقات، فمن المفيد إنشاء بنية الطابور في الرسائل يعني هذا ببساطة وضع نظام طابور الرسائل بين المكونات بحيث يتم تجميع أوامر حتى إذا أس عنصر إرتين غير قادر على معالجة العديد من الطلبات. أكثر من الطلبات التي فقدت يتم الاحتفاظ ببساطة في كومة حتى يتم التعامل مع الرسالة هذا مفيد بشكل خاص لإرسال الصفقات إلى محرك التنفيذ إذا كان المحرك يعاني تحت الكمون الثقيل ثم سيتم نسخ احتياطي ترادس طابور بين مولد إشارة التجارة و أبي التنفيذ سوف يخفف من هذه المشكلة على حساب احتمال انزلاق التجارة A المحترم بشكل جيد وسيط قائمة انتظار مفتوحة المصدر هو رابتمق. هاردوار وأنظمة التشغيل. الأجهزة تشغيل الاستراتيجية الخاصة بك يمكن أن يكون لها تأثير كبير على ربحية خوارزمية الخاص بك هذه ليست قضية تقتصر على التجار عالية التردد إما أن خيارا سيئا في الأجهزة ونظام التشغيل يمكن أن يؤدي إلى تعطل الجهاز أو إعادة التشغيل في لحظة غير مناسبة أكثر وبالتالي فمن الضروري النظر في حيث سيقيم التطبيق الخاص بك الاختيار هو عادة بين آلة سطح المكتب الشخصية، ملقم بعيد، مزود سحابة أو تبادل المشترك الملقم. ديس أجهزة كوب هي بسيطة لتثبيت وإدارة، وخاصة مع أحدث أنظمة التشغيل ودية المستخدم مثل ويندوز 7 8، ماك أوسك وأنظمة سطح المكتب أوبونتو تمتلك بعض العيوب الهامة، ولكن في المقام الأول هو أن إصدارات أنظمة التشغيل المصممة لآلات سطح المكتب من المرجح تتطلب إعادة تمهيد الترقيع وغالبا في أسوأ الأوقات أنها أيضا استخدام ما يصل الموارد أكثر الحسابية بحكم تتطلب واجهة المستخدم الرسومية GUI. Utilising الأجهزة في المنزل أو بيئة المكاتب المحلية يمكن أن يؤدي إلى الاتصال بالإنترنت ومشاكل السلطة الجهوزية المنفعة الرئيسية من نظام سطح المكتب هو أن الحصانية الحاسوبية كبيرة يمكن شراؤها لجزء من تكلفة خادم مخصص عن بعد أو نظام سحابة القائم على سرعة مماثلة. خادم مخصص أو آلة المستندة إلى سحابة، في حين غالبا ما تكون أكثر تكلفة من خيار سطح المكتب، يسمح لمزيد من البنية التحتية التكرار أكثر أهمية، مثل النسخ الاحتياطي للبيانات الآلية، والقدرة على أكثر وضوحا لي ضمان الجهوز والمراقبة عن بعد هم أصعب لإدارة لأنها تتطلب القدرة على استخدام قدرات تسجيل الدخول عن بعد من نظام التشغيل. في ويندوز هذا عموما عن طريق واجهة المستخدم الرسومية بروتوكول سطح المكتب البعيد رديب في النظم القائمة على أونيكس سطر الأوامر الآمنة شل سش يتم استخدام البنية التحتية الخادم القائم على يونيكس هو دائما تقريبا سطر الأوامر على أساس الذي يجعل على الفور أدوات البرمجة القائمة على واجهة المستخدم الرسومية مثل ماتلاب أو إكسيل ليكون غير قابلة للاستخدام. أحد الملقم المشترك، كما يتم استخدام العبارة في أسواق رأس المال، هو ببساطة خادم مخصص الذي يقيم داخل التبادل من أجل الحد من الكمون من خوارزمية التداول وهذا ضروري للغاية لبعض استراتيجيات التداول عالية التردد، والتي تعتمد على الكمون المنخفض من أجل توليد ألفا. الجانب النهائي لاختيار الأجهزة واختيار لغة البرمجة هو استقلالية المنصة هل هناك حاجة لتشغيل الشفرة عبر أنظمة تشغيل مختلفة متعددة هل تم تصميم الكود ليتم تشغيله على نوع معين من بروك الهندسة المعمارية إسور، مثل إنتل x86 x64 أو سيكون من الممكن لتنفيذ على معالجات ريس مثل تلك المصنعة من قبل أرم هذه القضايا سوف تعتمد بشكل كبير على وتيرة ونوع الاستراتيجية التي يجري تنفيذها. المرونة والاختبار. واحد من أفضل الطرق لتخسر الكثير من المال على التداول حسابي هو إنشاء نظام مع عدم المرونة وهذا يشير إلى متانة النظام عند التعرض لأحداث نادرة، مثل الإفلاس الوساطة، التقلبات الزائدة المفاجئة، التوقف على نطاق المنطقة لموفر خادم سحابة أو الحذف العرضي لقاعدة بيانات التداول بأكملها يمكن القضاء على سنوات من الأرباح في غضون ثوان مع بنية سيئة التصميم من الضروري للغاية النظر في قضايا مثل التصحيح، والاختبار، وقطع الأشجار، والنسخ الاحتياطي، وتوافر عالية والرصد والمكونات الأساسية للنظام الخاص بك ومن المرجح أن في أي المعقول المعقول تطبيق التداول الكمي المعقول على الأقل 50 من وقت التطوير سوف تنفق على التصحيح والاختبار و صيانة تقريبا. جميع لغات البرمجة إما السفينة مع المصحح المصاحبة أو تمتلك بدائل طرف ثالث يحظى باحترام كبير في جوهرها، يسمح مصحح الأخطاء تنفيذ برنامج مع إدراج نقاط كسر التعسفي في مسار التعليمات البرمجية، والتي توقف مؤقتا التنفيذ من أجل التحقيق حالة النظام الفائدة الرئيسية من التصحيح هو أنه من الممكن للتحقيق في سلوك التعليمات البرمجية قبل نقطة تحطم معروفة. التصحيح هو عنصر أساسي في مربع الأدوات لتحليل أخطاء البرمجة ومع ذلك، فهي تستخدم على نطاق واسع في اللغات المترجمة such as C or Java, as interpreted languages such as Python are often easier to debug due to fewer LOC and less verbose statements Despite this tendency Python does ship with the pdb which is a sophisticated debugging tool The Microsoft Visual C IDE possesses extensive GUI debugging utilities , while for the command line Linux C programmer, the gdb debugger exists. Testing in software development refers to the process of applying known parameters and results to specific functions, methods and objects within a codebase, in order to simulate behaviour and evaluate multiple code-paths, helping to ensure that a system behaves as it should A more recent paradigm is known as Test Driven Development TDD , where test code is developed against a specified interface with no implementation Prior to the completion of the actual codebase all tests will fail As code is written to fill in the blanks , the tests will eventually all pass, at which point development should cease. TDD requires extensive upfront specification design as well as a healthy degree of discipline in order to carry out successfully In C , Boost provides a unit testing framework In Java, the JUnit library exists to fulfill the same purpose Python also has the unittest module as part of the standard library Many other languages possess unit testing frameworks and often there are multiple options. In a production environment, sophisticated logging is absolutely essential Logging refers to the process of outputting messages, with various degrees of severity, regarding execution behaviour of a system to a flat file or database Logs are a first line of attack when hunting for unexpected program runtime behaviour Unfortunately the shortcomings of a logging system tend only to be discovered after the fact As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed. Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases It is often wise to centralise logging information in order to analyse it at a later date, since it can often lead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns. While logging of a system will provide information about what has transpired in the past, monito ring of an application will provide insight into what is happening right now All aspects of the system should be considered for monitoring System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information. Trading metrics such as abnormal prices volume, sudden rapid drawdowns and account exposure for different sectors markets should also be continuously monitored Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method email, SMS, automated phone call depending upon the severity of the metric. System monitoring is often the domain of the system administrator or operations manager However, as a sole trading developer, these metrics must be established as part of the larger design Many solutions for monitoring exist proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case. Backups and high availab ility should be prime concerns of a trading system Consider the following two questions 1 If an entire production database of market data and trading history was deleted without backups how would the research and execution algorithm be affected 2 If the trading system suffers an outage for an extended period with open positions how would account equity and ongoing profitability be affected The answers to both of these questions are often sobering. It is imperative to put in place a system for backing up data and also for testing the restoration of such data Many individuals do not test a restore strategy If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment. Similarly, high availability needs to be baked in from the start Redundant infrastructure even at additional expense must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such syst ems I won t delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system. Choosing a Language. Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system The next stage is to discuss how programming languages are generally categorised. Type Systems. When choosing a language for a trading stack it is necessary to consider the type system The languages which are of interest for algorithmic trading are either statically - or dynamically-typed A statically-typed language performs checks of the types e g integers, floats, custom classes etc during the compilation process Such languages include C and Java A dynamically-typed language performs the majority of its type-checking at runtime Such languages include Python, Perl and JavaScript. For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors However, type-checking doesn t catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations Dynamic languages i e those that are dynamically-typed can often lead to run-time errors that would otherwise be caught with a compilation-time type-check For this reason, the concept of TDD see above and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone. Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type and thus memory requirements are known at compile-time In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performa nce hit Libraries for dynamic languages, such as NumPy SciPy alleviate this issue due to enforcing a type within arrays. Open Source or Proprietary. One of the biggest choices available to an algorithmic trading developer is whether to use proprietary commercial or open source technologies There are advantages and disadvantages to both approaches It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing maintenance costs. The Microsoft stack including Visual C , Visual C and MathWorks MatLab are two of the larger proprietary choices for developing custom algorithmic trading software Both tools have had significant battle testing in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds. Micr osoft and MathWorks both provide extensive high quality documentation for their products Further, the communities surrounding each tool are very large with active web forums for both The software allows cohesive integration with multiple languages such as C , C and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ MatLab also has many plugins libraries some free, some commercial for nearly any quantitative research domain. There are also drawbacks With either piece of software the costs are not insignificant for a lone trader although Microsoft does provide entry-level version of Visual Studio for free Microsoft tools play well with each other, but integrate less well with external code Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned. MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading The main issue with proprietary products is the lack of availability of the source code This means that if ultra performance is truly required, both of these tools will be far less attractive. Open source tools have been industry grade for sometime Much of the alternative asset space makes extensive use of open-source Linux, MySQL PostgreSQL, Python, R, C and Java in high-performance production roles However, they are far from restricted to this domain Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats. The main benefit of using interpreted languages is the speed of development time Python and R require far fewer lines of code LOC to achieve similar functionality, principally due to the extensive libraries Further, they often allow interactive console based dev elopment, rapidly reducing the iterative development process. Given that time as a developer is extremely valuable, and execution speed often less so unless in the HFT space , it is worth giving extensive consideration to an open source technology stack Python and R possess significant development communities and are extremely well supported, due to their popularity Documentation is excellent and bugs at least for core libraries remain scarce. Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces A typical Linux server such as Ubuntu will often be fully command-line oriented In addition, Python and R can be slow for certain execution tasks There are mechanisms for integrating with C in order to improve execution speeds, but it requires some experience in multi-language programming. While proprietary software is not immune from dependency versioning issues it is far less common to have to deal with incorrect library versions in such environments Open source operating systems such as Linux can be trickier to administer. I will venture my personal opinion here and state that I build all of my trading tools with open source technologies In particular I use Ubuntu, MySQL, Python, C and R The maturity, community size, ability to dig deep if problems occur and lower total cost ownership TCO far outweigh the simplicity of proprietary GUIs and easier installations Having said that, Microsoft Visual Studio especially for C is a fantastic Integrated Development Environment IDE which I would also highly recommend. Batteries Included. The header of this section refers to the out of the box capabilities of the language - what libraries does it contain and how good are they This is where mature languages have an advantage over newer variants C , Java and Python all now possess extensive libraries for network programming, operating system interaction, GUIs, regular expressions regex , iterati on and basic algorithms. C is famed for its Standard Template Library STL which contains a wealth of high performance data structures and algorithms for free Python is known for being able to communicate with nearly any other type of system protocol especially the web , mostly through its own standard library R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code which can be found in portfolio optimisation and derivatives pricing, for instance. Outside of the standard libraries, C makes use of the Boost library, which fills in the missing parts of the standard library In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C 11 spec, including native support for lambda expressions and concurrency. Python has the high performance NumPy SciPy Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research Further, high-p erformance plugins exist for access to the main relational databases, such as MySQL MySQL C , JDBC Java MatLab , MySQLdb MySQL Python and psychopg2 PostgreSQL Python Python can even communicate with R via the RPy plugin. An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API Most APIs natively support C and Java, but some also support C and Python, either directly or with community-provided wrapper code to the C APIs In particular, Interactive Brokers can be connected to via the IBPy plugin If high-performance is required, brokerages will support the FIX protocol. As is now evident, the choice of programming language s for an algorithmic trading system is not straightforward and requires deep thought The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries. The benefit o f a separated architecture is that it allows languages to be plugged in for different aspects of a trading stack, as and when requirements change A trading system is an evolving tool and it is likely that any language choices will evolve along with it. Just Getting Started with Quantitative Trading.

Comments