المتوسط المتحرك المتوسط المرجح للشفرة c


هل من الممكن تنفيذ متوسط ​​متحرك في C دون الحاجة إلى نافذة من العينات وجدت أنه يمكنني تحسين قليلا، عن طريق اختيار حجم النافذة التي هي قوة اثنين للسماح بتغيير قليلا بدلا من تقسيم، ولكن لا تحتاج فإن المخزن المؤقت يكون لطيفا. هل هناك طريقة للتعبير عن نتيجة متوسط ​​متحرك جديد فقط كدالة للنتيجة القديمة والعينة الجديدة حدد مثالا متحركا على سبيل المثال، عبر نافذة مكونة من 4 عينات لتكون: إضافة عينة جديدة ه: يمكن تنفيذ المتوسط ​​المتحرك بشكل متكرر ، ولكن لحساب دقيق للمتوسط ​​المتحرك عليك أن تتذكر أقدم عينة المدخلات في المجموع (أي في المثال الخاص بك). وبالنسبة للمتوسط ​​المتحرك N الذي تحسبه: حيث ين هي إشارة الخرج و شن هي إشارة الدخل. مكافئ. (1) يمكن أن تكون مكتوبة بشكل متكرر كما كنت دائما بحاجة إلى تذكر العينة شن-N من أجل حساب (2). وكما أشار كونراد تيرنر، يمكنك استخدام نافذة أسي طويلة (بلا حدود) بدلا من ذلك، والتي تسمح لك بحساب الإخراج فقط من المخرجات السابقة والإدخال الحالي: ولكن هذا ليس متوسط ​​متحرك (غير مرجح) قياسي ولكن بشكل أضعافا مضاعفة (حيث على الأقل من الناحية النظرية) لا تنسى أبدا أي شيء (الأوزان فقط تحصل على أصغر وأصغر للعينات بعيدة في الماضي). أنا نفذت المتوسط ​​المتحرك دون ذاكرة البند الفردية لبرنامج تتبع غس كتبته. أبدأ مع 1 عينة وتقسيم بنسبة 1 للحصول على متوسط ​​الحالي. ثم قم بإضافة عينة أنوث وتقسيمها 2 إلى المتوسط ​​الحالي. يستمر هذا حتى يصل إلى طول المتوسط. في كل مرة بعد ذلك، أضيف في العينة الجديدة، واحصل على المتوسط ​​وأزل هذا المتوسط ​​من المجموع. أنا لست رياضياتيا ولكن هذا يبدو وكأنه وسيلة جيدة للقيام بذلك. أنا أحسب أنه من شأنه أن يحول المعدة من رجل الرياضيات الحقيقي ولكن، اتضح أنها واحدة من الطرق المقبولة للقيام بذلك. ويعمل بشكل جيد. فقط تذكر أن ارتفاع طول الخاص بك أبطأ هو اتباع ما كنت تريد أن تتبع. وهذا قد لا يهم معظم الوقت ولكن عندما تتبع الأقمار الصناعية، إذا كنت بطيئا، يمكن أن يكون درب بعيدا عن الوضع الفعلي، وسوف تبدو سيئة. هل يمكن أن يكون هناك فجوة بين جلس والنقاط زائدة. اخترت بطول 15 تحديث 6 مرات في الدقيقة الواحدة للحصول على تجانس كافية ولا تحصل بعيدا جدا عن الوضع الفعلي جلس مع نقاط درب ممهدة. أجاب 16 نوفمبر 16 في 23:03 تهيئة العدد الإجمالي 0، count0 (في كل مرة رؤية قيمة جديدة ثم إدخال واحد (سكانف)، واحد إضافة توتالنوفالو، زيادة واحدة (عدد)، واحد معدل الفجوة (توتالكونت) سيكون هذا المتوسط ​​المتحرك أكثر من جميع المدخلات لحساب المتوسط ​​فوق المدخلات الأربعة الأخيرة فقط، يتطلب 4 مدخلات، ربما نسخ كل مدخلات إلى مدخلات قديمة، ثم حساب المتوسط ​​المتحرك الجديد، حيث أن مجموع المدخلات 4، مقسوما على 4 (التحول الصحيح 2 سيكون جيد إذا كانت جميع المدخلات إيجابية لجعل متوسط ​​الحساب أجاب فب 3 15 في 4:06 وهذا في الواقع حساب المتوسط ​​الكلي وليس المتوسط ​​المتحرك. كما يحصل العد أكبر تأثير أي عينة إدخال جديدة تصبح صغيرة تتلاشى نداش هيلمر فبراير 3 15 في 13:53 إجابتك 2017 ستاك إكسهانج، إنسي أحاول حساب المتوسط ​​المتحرك للإشارة، ويتم تحديث قيمة الإشارة (مزدوجة) في أوقات عشوائية، وأتطلع إلى طريقة فعالة لحساب متوسط ​​الوقت المرجح اوفه r نافذة الوقت، في الوقت الحقيقي. أنا يمكن أن تفعل ذلك بلدي، ولكن أكثر تحديا مما اعتقدت. معظم الموارد إيف وجدت عبر الإنترنت بحساب المتوسط ​​المتحرك للإشارة الدورية، ولكن التحديثات الألغام في وقت عشوائي. لا أحد يعرف موارد جيدة لذلك خدعة هو ما يلي: يمكنك الحصول على التحديثات في أوقات عشوائية عن طريق تحديث الفراغ (وقت إنت، قيمة تعويم). ومع ذلك تحتاج أيضا إلى تتبع أيضا عندما يقع التحديث قبالة نافذة الوقت، لذلك قمت بتعيين إنذار الذي دعا في الوقت N الذي يزيل التحديث السابق من يجري النظر من أي وقت مضى مرة أخرى في الحساب. إذا كان هذا يحدث في الوقت الحقيقي يمكنك طلب نظام التشغيل لإجراء مكالمة إلى طريقة باطلة دروبوفولدستوديت (وقت إنت) ليتم استدعاؤها في الوقت N إذا كان هذا هو محاكاة، لا يمكنك الحصول على مساعدة من نظام التشغيل وتحتاج إلى تفعل ذلك يدويا. في محاكاة يمكنك استدعاء الأساليب مع الوقت الموردة كوسيطة (التي لا ترتبط مع الوقت الحقيقي). غير أن الافتراض المعقول هو أن النداءات مضمونة بحيث تكون الوسيطات الزمنية في ازدياد. في هذه الحالة تحتاج إلى الحفاظ على قائمة فرز من القيم الوقت التنبيه، ولكل تحديث وقراءة المكالمة التي تحقق إذا كان الوسيطة الوقت أكبر من رأس قائمة التنبيه. في حين أنه هو أكبر يمكنك القيام التنبيه المتعلقة معالجة (إسقاط قبالة أقدم تحديث)، وإزالة الرأس والتحقق مرة أخرى حتى يتم معالجة جميع أجهزة الإنذار قبل وقت معين. ثم قم بإجراء مكالمة التحديث. لقد افترضت حتى الآن أنه من الواضح ما سوف تفعله لحساب الفعلي، ولكنني سوف وضع فقط في حالة. افترض أن لديك طريقة تعويم القراءة (وقت إنت) التي تستخدم لقراءة القيم. والهدف من ذلك هو جعل هذه المكالمة فعالة قدر الإمكان. لذلك لا تحسب المتوسط ​​المتحرك في كل مرة تسمى طريقة القراءة. بدلا من ذلك كنت تحسب القيمة كما من التحديث الأخير أو التنبيه الأخير، قرص هذه القيمة من قبل بضع عمليات نقطة العائمة لحساب مرور الوقت منذ التحديث الأخير. (ط عدد ثابت من العمليات باستثناء ربما معالجة قائمة من أجهزة الإنذار مكدسة). نأمل أن يكون هذا واضحا - يجب أن يكون هذا خوارزمية بسيطة جدا وفعالة للغاية. مزيد من التحسين. واحدة من المشاكل المتبقية هو إذا كان عدد كبير من التحديثات يحدث في إطار الوقت، ثم هناك فترة طويلة التي لا توجد يقرأ ولا تحديثات، ومن ثم قراءة أو التحديث يأتي على طول. في هذه الحالة، سوف تكون الخوارزمية أعلاه غير فعالة في تحديث القيمة بشكل متزايد لكل من التحديثات التي تتساقط. هذا ليس ضروريا لأننا نهتم فقط التحديث الأخير وراء نافذة الوقت حتى إذا كان هناك وسيلة لسحب بكفاءة من جميع التحديثات القديمة، فإنه من شأنه أن يساعد. للقيام بذلك، يمكننا تعديل الخوارزمية لإجراء بحث ثنائي من التحديثات للعثور على التحديث الأخير قبل نافذة الوقت. إذا كان هناك عدد قليل نسبيا من التحديثات التي تحتاج إلى إسقاط ثم يمكن للمرء أن تحديث بشكل متزايد قيمة لكل تحديث انخفض. ولكن إذا كان هناك العديد من التحديثات التي تحتاج إلى إسقاط ثم واحد يمكن إعادة حساب القيمة من الصفر بعد إسقاط التحديثات القديمة. التذييل على الحوسبة الإضافية: يجب أن أوضح ما أعنيه بالحساب الإضافي أعلاه في الجملة قرص هذه القيمة من خلال بضع عمليات نقطة العائمة لحساب مرور الوقت منذ التحديث الأخير. الحساب الأولي غير التدريجي: ثم يتكرر على ديلاتيفوبديتس من أجل زيادة الوقت: موفينغفيراج (سوم لاستوبديت تيمسينسلاستوبديت) ويندلنغث. الآن إذا كان التحديث واحد بالضبط يقع قبالة النافذة ولكن لا تصل التحديثات الجديدة، وضبط المبلغ على النحو التالي: (لاحظ أنه هو بريفيوديت الذي له الطابع الزمني تعديلها لبدء آخر بداية النافذة). وإذا كان بالضبط تحديث واحد يدخل النافذة ولكن لا توجد تحديثات جديدة تسقط، وضبط المبلغ على النحو التالي: كما ينبغي أن يكون واضحا، وهذا هو رسم تقريبي ولكن نأمل أنه يبين كيف يمكنك الحفاظ على متوسط ​​مثل أنه هو O (1) العمليات في التحديث على أساس الاستهلاك. ولكن لاحظ مزيدا من التحسين في الفقرة السابقة. نلاحظ أيضا قضايا الاستقرار المشار إليها في إجابة قديمة، وهو ما يعني أن أخطاء نقطة العائمة قد تتراكم على عدد كبير من هذه العمليات الإضافية بحيث يكون هناك اختلاف عن نتيجة الحساب الكامل الذي له أهمية كبيرة للتطبيق. إذا كان التقريب على ما يرام و ثيريس الحد الأدنى من الوقت بين العينات، يمكنك محاولة فائقة أخذ العينات. يكون مصفوفة تمثل فترات زمنية متباعدة بالتساوي تكون أقصر من الحد الأدنى، وفي كل مرة يتم تخزين أحدث عينة تم استلامها. وكلما اقصر الفاصل الزمني كلما اقترب المتوسط ​​من القيمة الحقيقية. وينبغي ألا تتجاوز الفترة نصف الحد الأدنى أو أن تكون هناك فرصة لفقدان العينة. أجابيد ديك 15 11 في 18:12 أجاب ديك 15 11 في 22:38 ثانكس فور ذي أنسور. أحد التحسينات التي ستكون هناك حاجة إليها في الواقع كوتاكاشيكوت قيمة المتوسط ​​الكلي لذلك نحن don39t حلقة في كل وقت. أيضا، قد يكون نقطة ثانوية، ولكن لن يكون أكثر كفاءة لاستخدام ديك أو قائمة لتخزين القيمة، لأننا نفترض أن التحديث سيأتي في الترتيب الصحيح. سيكون الإدراج أسرع من الخريطة. نداش آرثر ديك 16 11 في 08:55 نعم، هل يمكن أن ذاكرة التخزين المؤقت قيمة المبلغ. اطرح قيم العينات التي تمحوها، أضف قيم العينات التي تقوم بإدراجها. أيضا، نعم، ديكلتبايرلتسامبل، داتغتغ قد تكون أكثر كفاءة. لقد اخترت خريطة للقراءة، وسهولة استدعاء خريطة :: وبربوند. كما هو الحال دائما، كتابة التعليمات البرمجية الصحيحة أولا، ثم الملف الشخصي وقياس التغييرات الإضافية. نداش روب ديك 16 11 في 15:00 ملاحظة: يبدو أن هذا ليس الطريق إلى الاقتراب من هذا. تركها هنا للإشارة إلى ما هو الخطأ في هذا النهج. تحقق من التعليقات. تحديث - استنادا إلى تعليق أوليس. غير متأكد من عدم الاستقرار الذي يتحدث عنه رغم ذلك. استخدام خريطة فرز مرات وصول ضد القيم. عند وصول قيمة إضافة وقت وصول للخريطة فرزها جنبا إلى جنب مع قيمته وتحديث المتوسط ​​المتحرك. تحذير هذا هو الزائفة رمز: هناك. ليس تماما فليشد خارج ولكن تحصل على هذه الفكرة. أشياء يجب أن نلاحظها. كما قلت أعلاه هو رمز الزائفة. ستحتاج إلى اختيار خريطة مناسبة. لا إزالة أزواج كما كنت إيتيرات من خلال كما سوف تبطل التكرار وسيكون لديك للبدء من جديد. انظر تعليق أوليس أدناه أيضا. أجاب ديك 15 11 في 12:22 هذا don39t العمل: فإنه doesn39t تأخذ بعين الاعتبار ما هي نسبة من نافذة طول كل قيمة موجودة ل. أيضا، هذا النهج من إضافة ومن ثم طرح مستقرة فقط لأنواع عدد صحيح، لا يطفو. نداش أوليفر تشارلزورث 15 ديسمبر 11 في 12:29 أوليكارليزورث - آسف فاتني بعض النقاط الرئيسية في الوصف (مزدوجة والوزن المرجح). وسوف أقوم بتحديث. شكر. نداش دينيس ديك 15 11 في 12:33 الوقت الترجيح مشكلة أخرى بعد. ولكن هذا 39 ليس ما I39m الحديث عنه. كنت أشير إلى حقيقة أنه عندما تدخل قيمة جديدة لأول مرة نافذة الوقت، ومساهمتها في المتوسط ​​هو الحد الأدنى. وتستمر مساهمته في الزيادة حتى تدخل قيمة جديدة. ندش أوليفر تشارلزورث 15 ديسمبر 11 في 12: 35C خوارزمية ل صفر الكمون المتوسط ​​المتحرك الأسي آخر تعديل: 2012-08-13 إيف كانت تحاول تنفيذ خفض التردد المنخفض في ج الذي يأخذ أساسا تيار من الأرقام ويعمد الإخراج ( تصفية حركة التردد العالي)، ومع ذلك فمن المهم تعتبر الأرقام المرجحة الأمامية على الفور كما البيانات هو الوقت الحاسم (هو للسيطرة على قاعدة محاكاة الحركة باستخدام الإخراج من قليلا من برنامج اللعبة). وقد حصلت على العمل المرجح المتوسط ​​المتحرك ألغويثم ولكن يمكن أن تفعل مع شيء أكثر استجابة قليلا في الواجهة الأمامية، ووجدت هذا: - الكود الزائف هناك كما يلي: المدخلات: السعر (نوميرسيريز)، الفترة (نوميريسسيمبل) المتغيرات: (0)، فاغ (0)، لوغ (0) لو كونتيربار لوت 1 ثم يبدأ زليما عامل السعر 2 (الفترة 1) تأخر (الفترة 1) 2 نهاية آخر يبدأ عامل زليما (2Price-بريسلاغ) (1 عامل) ZLEMA1 نهاية إيف ترجمته في إلى C ورمز بلدي هو كما يلي: ومع ذلك، فإنه لا يبدو أن تتصرف تماما كما يتوقع إد. يبدو أن هناك تقريبا ولكن أحيانا أحصل على قيمة أقل قليلا من جميع العناصر في قائمة الانتظار (عندما تكون كلها أعلى). يتم تمرير طابور بلدي وعدد من العناصر فيه كمعلمات، مع أحدثها في الجبهة في جميع الأوقات، كما أنني اجتياز عداد متزايد ابتداء من 0 كما هو مطلوب من قبل وظيفة. أنا لست متأكدا إيف تفسر معنى ZLEMA1 بشكل صحيح كما أنها ليست واضحة في بلده الكود، لذلك إيف يفترض أن يكون آخر المكالمات زليما وأيضا إم افتراض السعر يعني في الواقع السعر 0. ربما إيف حصلت على هذا الخطأ أنا من المفترض أن يكون نسخ زليما الفعلية القيم المحسوبة إلى طابور الأصلي بلدي قبل المكالمة التالية أنا لا تغيير الطابور الأصلي في جميع غير مجرد تحويل جميع القيم واحد إلى النهاية وإدراج أحدث في البداية . الرمز الذي استخدمه للقيام بذلك هو: سيكون ممتنا للغاية إذا كان شخص ما مع فهم أفضل للرياضيات يمكن أن يرجى سانيتي تحقق هذا بالنسبة لي لمعرفة ما إذا كان إيف حصلت على أي شيء خطأ قليلا شكرا جزيلا مقدما إذا كنت تستطيع مساعدة أولا شكرا للجميع المدخلات الخاصة بك، محل تقدير كبير هذا المنطقي أعتقد، لذلك أفترض ثم أفضل ما يمكن أن نأمل هو مجرد المتوسط ​​المتحرك الأسي، قبول سيكون هناك تأخر قليلا ولكن هذا سوف يكون الحد الأدنى من قبل الأوزان الأمامية أثقل من تعطى في الوزن المرجح المتوسط ​​المتحرك لدي هذه الخوارزمية أيضا، ولكن مشكلة مماثلة في أن القيم لا تبدو صحيحة تماما (إلا إذا كانت هذه هي طبيعة الصيغة). على سبيل المثال، يقول مصفوفة يحتوي على 16 قيم، كل 0.4775 - الإخراج هو 0.4983، ولكن إد يتوقع أن يكون 0.4775 هل هذا يبدو الحق لك. المتوسط ​​المتحرك الأسي. (فلوت فلس، إنت نومفالس، إنت كيرنتسامبل) عامل تعويم ثابت 0 تعويم ثابت لاستيما 0 فلوت إما إذا (كيرنتسامبل لوت 1) إما vals0 عامل 2.0 ((فلوت) نومفالس) 1.0) إيما إما (vals0) - عامل) لاستيما) لاستيما إما عودة إما العكس، في بعض الأحيان الإخراج هو أقل من كل واحد من المدخلات، حتى لو كانت جميع أعلى. ويسمى بنفس الطريقة كما زليما (.) أعلاه، مع عداد متزايد. الصيغة و بسيودوكود لهذا واحد هي هنا: - autotradingstrategy. wordpress20091130exponential-موفينغ-أفيراج شكرا مرة أخرى، والاعتذار عن سوء فهم بلدي لبعض الأساسيات :( مع أطيب التحيات، كريس J أما عن رمز أنا نشرت، أنت الحق حول حجم صفيف يجب أن تكون ثابتة بسهولة، أما بالنسبة لأسئلتك: 1) ثابت مرشح يمثل قطع التردد. لقد استخدمت معالجة الإشارات الرقمية (دسب) لهذه التقنية. en. wikipedia. orgwi kiLow - باس سفيلتر هو تفسير بسيط. تريد قسم تحقيق الوقت المنفصل. في حالتي A هو أرسي-كونستانت التي يتحدثون عنها. وبالتالي فإن التردد الذي يقطع هو فوق 1 (2piA). إذا لم يكن لديك فهم نظرية التردد المجال، قد يكون هذا معقدا. في قضيتك، كلما قمت بإجراء A، وانخفاض التردد أن هذا المرشح سوف تسمح، وهذا يعني أنه سيتم تسهيل منحنى أكثر وأكثر. كلما كنت جعله، والمزيد من الضوضاء التي يسمح بها في النظام. تذكر يجب أن يكون أكبر من أو يساوي 1 لتكون فعالة. أنا أعيد إرفاق زلس مرة أخرى، وهذه المرة دون تغيير راند () الأرقام. ضبط ثابت ومشاهدة كيف كوتسموثسكوت (أو مرشحات) من الاختلافات عالية التردد. 2) النقطة الأخيرة من مجموعة الإدخالات لها أحدث قيمة. 3) ينطبق الشيء نفسه على مجموعة الإخراج. آخر قيمة هي الأحدث. 5) نومفالس هو تعسفي. يمكنك إضافة باستمرار إلى مجموعة المدخلات والمخرجات عدة مرات كما تود وأنه لن تأثير فلتر. على وجه الخصوص، كنت 49 نقطة. ولكن يمكنني بسهولة حذف آخر 20 و 29 النواتج الأولى ستبقى هي نفسها. لا تعتمد الوظيفة على عدد النقاط التي يتم استخدامها. وأود أن أذكر أنني وضعت هذه الوظيفة لتحويل لمرة واحدة. إذا كنت تريد أن تفعل تحويل للقيمة التالية على الطاير يمكنك محاولة شيء أبسط (كما تعلق). مرة أخرى أنا صدئ على ج. آمل أن يكون هذا هو الصحيح. الشيء الوحيد الذي سوف تحتاج إلى العرض هو المدخلات وتصفية ثابتة. اعلمني اذا كان هذا مفيدا لك.

Comments

Popular posts from this blog

فوائد طريقة المتوسط المتحرك

تعريف قاموس الفوركس

الميزانية العمومية خيارات رأس المال المدفوع