Thursday 14 December 2017

بسيط الحركة من المتوسط - خوارزمية جافا


تنفيذ متوسط ​​متحرك بسيط في جافا في عدة مناسبات أراد إيف حساب مقاييس بسيطة في تطبيقات جافا، على سبيل المثال عدد الزيارات في الساعة، أو أخطاء طوال فترة زمنية. في حين أن حساب مقاييس بسيطة ليس صعبا بشكل رهيب، إلا أن عمله الإضافي ومعرفه ينفقان ذلك الوقت على نطاق المشكلة. فوجئت بعدم العثور على أي حلول مقبولة على نطاق واسع للمقاييس في جافا. لم أجد المقاييس ولكن يبدو قليلا معقدة جدا وغير موثقة بشكل جيد - كل ما أردت حقا هو لحساب المتوسط ​​المتحرك. فكرت في المشكلة بعض أكثر وقررت أنها ليست مشكلة صعبة. هيريس الحل الخاص بي يعمل هذا من خلال إنشاء مجموعة من حجم التحديث تحديث النافذة، ثم مؤشر ترابط العد إلى الفهرس التالي في الصفيف على تردد التحديث. العد للفاصل هو ببساطة أري - arrayi1، وهو أحدث عدد ناقص أقدم عدد. لمدة 10 دقيقة الفاصلة، أقدم العد (i1) هو بالضبط 10 دقيقة من العمر. لإضافة المتوسط ​​المتحرك إلى التعليمات البرمجية لدينا أولا تحتاج جيدا عداد، وذلك باستخدام أتوميكلونغ. يجب زيادة هذا العداد استنادا إلى الأحداث التي تهتم بها في الحوسبة (مثل طلبات بوست لخدمة ريست). نحن بحاجة إلى توفير التنفيذ مع الوصول إلى العداد والتي يتم إنجازها من خلال واجهة جيتكونت. هنا إل إنشاء متوسط ​​متحرك مع نافذة 5 دقائق يتم تحديث كل ثانية. وللحصول على المتوسط ​​الحالي نحن ببساطة استدعاء الأسلوب جيتايفيراج: تفصيل التنفيذ الرئيسي هو كيف يتم تحديد حجم الصفيف: عن طريق قسمة النافذة عن طريق تكرار التحديث. لذلك نافذة كبيرة مع تكرار التحديث المتكررة يمكن أن تستهلك قدرا كبيرا من الذاكرة. في هذا المثال حجم صفيف هو معقول 300. ومع ذلك، إذا أنشأنا المتوسط ​​المتحرك 24 ساعة مع فاصل زمني 1 ثانية سيكون حجم 86400 تردد التحديث أكثر معقولية لفترة 24 ساعة قد يكون كل 5 دقائق (حجم صفيف من 288 ). وهناك اعتبار آخر لاختيار النافذة وتردد التحديث هو أن النافذة يجب أن تكون قابلة للتجزئة حسب التردد. على سبيل المثال نافذة 2 دقيقة مع تردد التحديث 6 ثانية على ما يرام، ولكن تردد التحديث 7 ثانية ليست، لأنه لا قسمة من قبل 120. يتم طرح إليغالارجومنتكسيبتيون إذا كان تردد تحديث معامل نافذة ليست صفر. يتطلب هذا التنفيذ مؤشر ترابط واحد لكل متوسط ​​متحرك، وهو ليس فعالا جدا. الحل الأفضل هو مشاركة مؤشر الترابط عبر العديد من المتوسطات. تحديث . إيف تحديث التعليمات البرمجية لمشاركة موضوع هنا. وأخيرا، ثيريس مشكلة حالة أولية: ليس لدينا بيانات حتى الآن للنافذة بأكملها. على سبيل المثال إذا كان لديك نافذة 5 دقائق و 15 ثانية فقط من البيانات. يرجع هذا التنفيذ نول حتى يكون لدينا 5 دقائق من البيانات. وثمة نهج آخر هو تقدير المتوسط. لنفترض أن لدينا عد 10 في 30 ثانية، ثم يمكننا تقدير المتوسط ​​كما 40 في 2 دقيقة. ومع ذلك هناك خطر حدوث خطأ كبير من خلال استقراء البيانات غير مكتملة. على سبيل المثال، إذا كان لدينا انفجار من 20 زيارة في 2 ثانية، ويد يكون تقدير 1200 في 2 دقيقة، والتي في جميع الاحتمالات هو طريق قبالة. متوسط ​​المتحرك بسيط - سما كسر أسفل بسيط المتوسط ​​المتحرك - سما متوسط ​​متحرك بسيط للتخصيص في أنه يمكن حسابها لعدد مختلف من الفترات الزمنية وذلك ببساطة عن طريق إضافة سعر إغلاق الضمان لعدد من الفترات الزمنية ثم قسمة هذا المجموع على عدد الفترات الزمنية التي تعطي متوسط ​​سعر الورقة الأمنية فترة زمنية. متوسط ​​متحرك بسيط يزيل التقلب، ويجعل من الأسهل لعرض اتجاه السعر للأمن. إذا ارتفع المتوسط ​​المتحرك البسيط، فهذا يعني أن سعر الأمن آخذ في الازدياد. إذا كان يشير لأسفل فهذا يعني أن سعر الأمن آخذ في التناقص. وكلما زاد الإطار الزمني للمتوسط ​​المتحرك، كلما كان المتوسط ​​المتحرك البسيط أكثر سلاسة. والمتوسط ​​المتحرك القصير الأجل أكثر تقلبا، ولكن قراءته أقرب إلى بيانات المصدر. الأهمية التحليلية تعد المتوسطات المتحركة أداة تحليلية مهمة تستخدم لتحديد الاتجاهات الحالية للأسعار وإمكانية إحداث تغيير في اتجاه ثابت. أبسط شكل من أشكال استخدام المتوسط ​​المتحرك البسيط في التحليل هو استخدامه لتحديد بسرعة إذا كان الأمن في اتجاه صاعد أو اتجاه هبوطي. أداة تحليلية شعبية أخرى، وإن كانت أكثر تعقيدا، هي مقارنة زوج من المتوسطات المتحركة البسيطة التي تغطي كل منها أطر زمنية مختلفة. وإذا كان المتوسط ​​المتحرك البسيط على المدى القصير أعلى من المتوسط ​​الأطول أجلا، فمن المتوقع حدوث اتجاه صعودي. من ناحية أخرى، فإن المتوسط ​​على المدى الطويل فوق المتوسط ​​الأقصر يشير إلى حركة هبوطية في الاتجاه. أنماط التداول الشائعة اثنين من أنماط التداول الشائعة التي تستخدم المتوسطات المتحركة البسيطة تشمل الصليب الموت والصليب الذهبي. يحدث تقاطع الموت عندما يتقاطع المتوسط ​​المتحرك البسيط لمدة 50 يوم دون المتوسط ​​المتحرك ل 200 يوم. ويعتبر هذا إشارة هبوطية، أن المزيد من الخسائر في المخزن. يحدث العبور الذهبي عندما يكسر المتوسط ​​المتحرك على المدى القصير فوق المتوسط ​​المتحرك على المدى الطويل. عززت من قبل أحجام التداول عالية، وهذا يمكن أن يشير إلى مزيد من المكاسب في store. i تحتاج إلى تتبع آخر 7 أيام عمل ساعات في ملف القراءة حلقة مسطحة. يتم استخدامها لقياس التعب من قوائم العمل. الآن لدي شيء يعمل، ولكن يبدو مطول نوعا ما و إم غير متأكد ما إذا كان هناك نمط أن أكثر وضوحا. حاليا، لدي فئة جافا مع صفيف ثابت لعقد البيانات x أيام الماضية، ثم كما قرأت من خلال الملف، أنا ختم العنصر الأول ونقل 6 أخرى (لمدة أسبوع المتداول) مرة أخرى. تتم معالجة هذه المصفوفة الثابتة في أسلوبها الخاص أي. سؤالي: هل هذا هو نهج تصميم معقول، أو هل هناك شيء واضح بشكل واضح وبسيط للقيام بهذه المهمة شكرا رفاق طلب أغسطس 30 11 في 14:33 شكرا الكثير من الرجال: I39ve حصلت على الرسالة: استخدام كائن على مستوى عال واستغلال الطرق ذات الصلة أو العازلة دائرية. إجابات عظيمة، كل منهم. عندما تفكر في ذلك، كنت دائما بحاجة إلى الوصول إلى مجموعة كاملة حتى تتمكن من التخلص من هذا الإدخال الأول - الذي كنت wasn39t 100 متأكد من بلدي. I39m بالارتياح بأنني hadn39t غاب عن 1 بطانة وكان أساسا على معقول، إن لم يكن كفاءة وتتبع المسار هذا هو ما أحب حول هذا الموقع: ذات جودة عالية، والأجوبة ذات الصلة من الناس الذين يعرفون شت بهم. نداش Pete855217 30 أغسطس 11 في 15:05 لماذا يتم التهيئة الأولية الجري الإجمالي إلى نول ما هو نوعه حيث يتم الإعلان أنه سيكون جيدا إذا وضعت بعض عينات التعليمات البرمجية التي تشبه رمز جافا الفعلي. الانتقال، النقد بلدي سيكون ما يلي: وظيفتك لا أكثر من اللازم. يجب أن تكون الدالة أو الطريقة متماسكة. ومن الأنسب أن يفعلوا شيئا واحدا وشيئا واحدا فقط. والأسوأ من ذلك، ما يحدث في حلقة الخاص بك عندما x 5 يمكنك نسخ تشغيلTotal6 في تشغيل إجمالي 5. ولكن بعد ذلك لديك نسختين من نفس القيمة في موقف 5 و 6. في التصميم الخاص بك، وظيفة موفسوفلز العناصر الموجودة في صفيف الخاص بك بحساب الاشياء يطبع الإجمالي إلى خطأ قياسي إرجاع المجموع فإنه لا أكثر من اللازم. اقتراحي الأول ليس نقل الأشياء في المصفوفة. بدلا من ذلك، تنفيذ المخزن المؤقت دائري واستخدامه بدلا من الصفيف. فإنه سيتم تبسيط التصميم الخاص بك. اقتراحي الثاني هو تقسيم الأمور إلى وظائف متماسكة: لديها بنية بيانات (المخزن المؤقت الدائري) تسمح لك بالإضافة إليها (والتي تسقط أقدم إدخال كلما وصلت إلى قدرتها). إنتيراتور ديك وظيفة التي تحسب المجموع على التكرار (كنت لا تهتم إذا كنت حساب المجموع من مصفوفة، قائمة أو دائري بوفر.) لا يطلق عليه المجموع. استدعاء المبلغ، وهو ما كنت الحوسبة. هذا ما معرف تفعل :) that39s معلومات كبيرة لويس، ولكن تذكر هذه الوظيفة هو جزء صغير من وظائف الطبقة، وسيكون من المبالغة لإضافة الكثير من التعليمات البرمجية لجعلها مثالية. كنت صحيحا من الناحية الفنية، وأنا أفهم رمز بلدي لا 39too much39 ولكن في نفس الوقت أحيانا it39s أفضل أن يخطئ على جانب أصغر، رمز أكثر وضوحا من الذهاب للكمال. نظرا لمهارات جافا، حتى جعل الكود الكاذب الذي تصفه تجميع سيكون لي ضربة ميزانيتي على هذا ()، ولكن شكرا لوصف واضح. نداش Pete855217 31 أغسطس 11 في 02:23 همم، it39s ليس عن الكمال، ولكن عن الممارسات الصناعية المعمول بها التي نعرفها على مدى 3 عقود الماضية. التعليمات البرمجية النظيفة هي دائما واحدة التي يتم تقسيمها. لدينا عقود من الأدلة تشير إلى أن هذا هو الطريق للذهاب في الحالة العامة (من حيث الكفاءة من حيث التكلفة، والحد من العيب، والفهم، وما إلى ذلك). إلا إذا كان رمي بعيدا رمز لنوع لمرة واحدة من الشيء. ليس من المكلف أبدا القيام بذلك عندما يبدأ المرء أي تحليل المشكلة بهذه الطريقة. ترميز 101، وكسر المشكلة ويتبع التعليمات البرمجية، لا مبالغة ولا صعبة) نداش luis. espinal 31 أغسطس 11 في 15:55 مهمتك بسيطة جدا و أبروتش كنت قد اعتمدت هو بالتأكيد جيدة لهذا المنصب. ومع ذلك، إذا كنت ترغب في استخدام تصميم أفضل، يجب التخلص من كل هذا العدد حركة يمكنك استخدام أفضل طابور فيفو والاستفادة من وسائل الدفع والبوب ​​على نحو جيد الطريقة التي رمز لن تعكس أي حركة البيانات، فقط المنطقين الإجراءات من البيانات الجديدة وإزالة البيانات أقدم من 7 أيام. أجابيد أوج 30 11 في 14:49

No comments:

Post a Comment