Thursday 15 February 2018

بسيط المتوسط المتحرك فبا التعليمات البرمجية


جدول متوسط ​​المتداول أدناه سننظر إلى برنامج في إكسيل فبا يقوم بإنشاء جدول متوسط ​​المتداول. وضع زر أمر في ورقة العمل وإضافة سطر التعليمات البرمجية التالي: رانج (كوت. كوت 3).Value وركشيت فونكتيون. راندبيتوين (0، 100) يدخل سطر التعليمات البرمجية هذا رقم عشوائي بين 0 و 100 في الخلية B3. نريد إكسيل فبا لاتخاذ قيمة الأسهم الجديدة ووضعه في المركز الأول من الجدول المتوسط ​​المتداول. يجب أن تتحرك جميع القيم الأخرى لأسفل مكان واحد ويجب حذف القيمة الأخيرة. إنشاء حدث تغيير ورقة العمل. سيتم تنفيذ التعليمات البرمجية المضافة إلى حدث تغيير ورقة العمل بواسطة إكسيل فبا عند تغيير خلية على ورقة عمل. انقر نقرا مزدوجا فوق الورقة 1 (الورقة 1) في مستكشف المشروع. 3. اختر ورقة عمل من القائمة المنسدلة لليسار. اختر تغيير من القائمة المنسدلة المناسبة. إضافة خطوط التعليمات البرمجية التالية إلى حدث تغيير ورقة العمل: 4. أعلن متغير يسمى نيوفالو من نوع عدد صحيح ونطاقين (فيرستفورفالويس و لاستفورفالويس). خافت نوفالو كما صحيح. فيرستفورفالويس كمجال، لاستفورفالويس كمجال 5. حدث تغيير ورقة العمل يستمع إلى كافة التغييرات على الورقة 1. نريد فقط إكسيل فبا أن تفعل شيئا إذا تغير شيء في الخلية B3. ولتحقيق ذلك، قم بإضافة سطر التعليمات البرمجية التالي: إذا كان الهدف. إذا كنت تريد أن تقوم بتهيئة القيمة الجديدة مع قيمة الخلية B3، فيرستفورفالويس مع المدى (كوتد: D6quot) و لاستفورفالويس مع المدى (كوتد 4: D7quot). نيوفالو رانج (كوتاد 3quot).Value تعيين فيرستفورفالويس المدى (كوتد 3: D6quot) تعيين لاستفورفالويس المدى (كوتد 4: D7quot) 7. الآن يأتي خدعة بسيطة. نريد تحديث جدول المتوسط ​​المتداول. يمكنك تحقيق ذلك عن طريق استبدال القيم الأربع الأخيرة مع القيم الأربع الأولى للجدول ووضع قيمة الأسهم الجديدة في الموضع الأول. lastfourvalues. Value firstfourvalues. Value رانج (cutD3quot).Value نوفالو 8. لا تنسى إغلاق بيان إف. 9. أخيرا، أدخل الصيغة أفيراج (D3: D7) في الخلية D8. 10. اختبار البرنامج من خلال النقر على زر الأمر. أريد لحساب المتوسط ​​المتحرك لآخر، ويقول 20، أرقام العمود. والمشكلة هي أن بعض خلايا العمود قد تكون فارغة، وينبغي تجاهلها. مثال: المتوسط ​​المتحرك للثلاثة الأخيرة سيكون (155167201) 3. حاول إيف تنفيذ هذا باستخدام المتوسط، تعويض، مؤشر، ولكن أنا ببساطة لا أعرف كيف. إم مألوفة قليلا مع وحدات الماكرو، لذلك هذا الحل سوف تعمل بشكل جيد: موفينغافيراج (A13) شكرا لأية نصائح أو حلول سأل 12 مارس 11 في 15:36 أدخل هذا مع كونترولشيفتنتر لجعلها صيغة صفيف. سيجد هذا أحدث ثلاث قيم. إذا كنت تريد أكثر أو أقل، تغيير حالتين من 3 في الصيغة إلى ما تريد. يقوم هذا الجزء بإرجاع 4 أعلى رقم صف لكل الخلايا التي لها قيمة أو 5 في المثال الخاص بك لأن الصفوف 6 و 8 و 9 هي الصفوف الأولى إلى الثالثة الأعلى مع قيمة. يعود هذا الجزء 9 ترو أو فالس استنادا إلى ما إذا كان رقم الصف أكبر من 4 أكبر. هذا يضاعف القيم في A1: A9 من قبل تلك 9 أو فالس. يتم تحويل ترويس إلى 1 و فالس إلى الصفر. هذا يترك دالة سوم مثل هذا لأن جميع القيم أعلاه 155 لا تفي بمعيار رقم الصف، والحصول على مضروبة صفر. لقد كتبت نصا قصيرا في فبا. هوبيفول يفعل ما تريد. هنا أنت: 1) لقد وضعت الحد إلى 360 الخلايا. وهذا يعني أن البرنامج النصي لن يبحث عن أكثر من 360 خلية. إذا كنت ترغب في تغييره ثم تغيير القيمة الأولية للعداد. 2) البرنامج النصي لا يعود متوسط ​​مدور. تغيير الصف الأخير إلى موفينغافيراج جولة (كدل (تمب ط)، 2) 3) استخدام هو تماما مثل أردت، حتى مجرد اكتب موفينغايفيراج (a13) في الخلية. أي تعليقات هي موضع ترحيب. هنا هو رمز التي ينبغي أن تكون مفيدة لأولئك الذين يستخدمون التحليل الفني في التداول وتريد لاختبار الاستراتيجيات في إكسيل. وهو يحسب المتوسط ​​المتحرك البسيط والمرجح خطيا والأسي. وعلاوة على ذلك سوف أقدم وشرح الخطوات لإنشاء شكل ورمز فبا. إدراج نموذج مستخدم 8211 الاسم: مافورم إضافة أربع تسميات من أدوات التحكم 8211 كابتيونس كما في شاشة الطباعة أعلاه إضافة مربع تحرير وسرد لاختيار نوع المتوسط ​​المتحرك. كان اسمه كومبوتيبما إضافة اثنين من عناصر التحكم ريفيديت لنطاق الإدخال ونطاق الإخراج. إضافة مربع نص لفصل فترة المتوسط ​​المتحرك إضافة زرين: الاسم: الزر إرسال، تسمية توضيحية: إرسال واسم: الزر إلغاء، تسمية توضيحية: إلغاء لإنشاء القائمة المنسدلة لاختيار نوع ما وتحميل نموذج المستخدم، وحدة نمطية جديدة سيتم إدراجها مع التعليمات البرمجية أدناه. عناصر سومبوكس التي سيتم تعبئتها عن طريق تحريك أنواع المتوسطات وسيتم تحميل نموذج المستخدم. الخيار إكسليسيت سوب لودمافورم () مع مافورمبوتيبما. RowSource. AddItem بسيطة. AddItem المرجح. AddItem نهاية أسية مع MAForm. Show إند سوب أدناه هو رمز يعزى إلى زر إرسال. بريفات سوب بوتونزوبيتكليك () ديم إنبوترانج، أوتبوترانج أس رانج سيحتوي إنبوترانج على سلسلة السعر المستخدمة لحساب ماس و أوتبوترانج سيتم ملؤها بقيم المتوسطات المتحركة. ديم إنبوتبيريود أس إنتيجر يتم الإعلان عن فترة المتوسط ​​المتحرك. ديم إنبوتادريس، أوتبوتادريس أس سترينغ يتم تحديد نطاقات الإدخال والإخراج كسلسلة. إذا كومبوتيبا. فالو لتغ الأسية و كومبوتيبما. قيمة لتغ بسيطة و كومبوتيبما. قيمة لتغ صحيح صحيح ثم مسغبوكس يرجى تحديد نوع المتوسط ​​المتحرك من القائمة. RefInputRange. SetFocus إنهاء سوب يقوم هذا الجزء من الإجراء بفرض القيود الأولى المتعلقة بالبيانات المقدمة. إذا لم يكن نوع المتوسط ​​المتحرك متضمنا في القائمة المنسدلة، فلن يستمر الإجراء إلى الخطوة التالية وسيطلب من المستخدم تحديده مرة أخرى. إلزيف RefInputRange. Value ثم مسغبوكس الرجاء تحديد نطاق الإدخال. RefInputRange. SetFocus خروج سوب إلزيف RefOutputRange. Value ثم مسغبوكس الرجاء تحديد نطاق الإخراج. RefOutputRange. SetFocus خروج سوب إلزيف RefInputPeriod. Value ثم مسغبوكس الرجاء تحديد فترة المتوسط ​​المتحرك. RefInputPeriod. SetFocus خروج سوب إلزيف ليس إسنوميريك (RefInputPeriod. Value) ثم مسغبوكس يجب أن يكون متوسط ​​الفترة المتحركة رقم. RefInputPeriod. SetFocus إنهاء نهاية فرعية إذا تم إنشاء قيود أخرى. يجب ألا يكون نطاق الإدخال ومدى الإخراج ومدخل الإدخال فارغا. أيضا، يجب أن تكون فترة المتوسط ​​المتحرك رقما. إنبوتادريس RefInputRange. Value تعيين الإدخالرانج المدى (إنبوتادريس) أوتبوتادريس RefOutputRange. Value تعيين الإخراج المدى المدى (أوتبوتادريس) إنبوتبيريود RefInputPeriod. Value وسيطات الإدخال والإخراج نطاقات المدى سيتم إدخال أدادريس و أوتبوتادريس المعلنة كسلاسل. إذا inputRange. Columns. Count لتغت 1 ثم مسغبوكس نطاق الإدخال يمكن أن يكون عمود واحد فقط. RefInputRange. SetFocus إنهاء سوب يجب أن يحتوي إنبوترانج عمود واحد فقط. إلزيف inputRange. Rows. Count ltgt outputRange. Rows. Count ثم مسغبوكس مجموعة الإخراج لديها عدد مختلف من الصفوف من نطاق الإدخال. RefInputRange. SetFocus إنهاء إنهاء نهاية إذا كان يجب أن يكون الإدخال و أوتبوترانج عدد متساو من الصفوف. ديم روكونت أس عدد صحيح روكونت inputRange. Rows. Count ديم كروو أس عدد صحيح ريديم إنبوتاراي (1 إلى روكونت) ل كرو 1 إلى روكونت إنبوتاراي (كرو) inputRange. Cells (كرو، 1).Value يتم الإعلان التالي كرو إنبوتاراي كمصفوفة وعناصر it8217s تتوافق مع القيم من كل صف من نطاق الإدخال. إذا إنبوتبيريود غ روكونت ثم مسغبوكس عدد الملاحظات المحددة أمبير روكونت أمبير والفترة هي أمبير إنبوتبيريود أمبير. يجب أن يحتوي نطاق الإدخال على كمية أعلى أو متساوية من العناصر مقارنة بالفترة المحددة. RefInputRange. SetFocus خروج نهاية فرعية إذا تم إضافة تقييد آخر 8211 يجب أن يكون نطاق الإدخال كمية أعلى أو متساوية من العناصر من الفترة. إذا إنبوتبيريود لوت 0 ثم مسغبوكس يجب أن يكون متوسط ​​الفترة المتحركة أعلى من 0. RefInputPeriod. SetFocus إنهاء نهاية فرعية إذا كان يجب أن تكون فترة المتوسط ​​المتحرك أعلى من الصفر. ريديم أوتبوتاراي (إنبوتبيريود تو روكونت) كمتغير أيضا يتم تحديد أبعاد صفيف الإخراج. الحد الأدنى للمصفوفة هو قيمة إنبوتبيريود والحد الأعلى هو قيمة روكونت (عدد العناصر في إنترانترانج). تحت جزء من الإجراء حساب المتوسط ​​المتحرك البسيط، إذا كان الاختيار ل كومبوتيبما بسيط. سما ----------------------------------------- إذا compoTypeMA. Value بسيطة ثم خافت أنا ، j أس إنتيغر ديم تيمب أس دوبل فور i إنبوتبيريود إلى روكونت تيمب 0 بالنسبة j (i - (إنبوتبيريود - 1)) i i تيمب تيمب إنبوتاراي (j) نيكست j أوتبوتاراي (i) تيمب إنبوتبيريود outputRange. Cells (i، 1) (0، 1). القيمة سما (أمب إنبوتبيريود أمب) في الأساس، يحسب الإجراء المتوسط ​​المتحرك للأرقام x الأخيرة (x يساوي إنبوتبيريود)، بدءا من عنصر و إنبوتاراي يساوي إنبوتبيريود. في ما يلي مثال مبسط يوضح كل خطوة من خطوات الإجراء. في هذا المثال، هناك أربعة أرقام (no01، no02، no03 و no04) من الصف 1 إلى الصف 4 ومتوسط ​​الفترة المتحركة هو 3. بعد حساب كل متوسط ​​متحرك جديد، فإن كل خلية من أوتبوترانج تأخذ القيمة من الناتج. وبعد حساب كل المتوسطات المتحركة، في الخلية فوق المخرجاتتم إدراج عنوان يحتوي على نوع المتوسط ​​المتحرك والفترة. سيحسب هذا الجزء التالي المتوسط ​​المتحرك الأسي. إما ------------------------------------------ إلسيف compoTypeMA. Value أسوننتيال ثم ديم ألفا كما ألفا مزدوج 2 (إنبوتبيريود 1) ل j 1 إلى إنبوتبيريود تيمب تيمب إنبوتاراي (j) التالي j أوتبوتاراي (إنبوتبيريود) تيمب إنبوتبيريود أولا يتم تحديد قيمة ألفا. لأنه في الحساب، وتستند قيمة إما إما على إما السابق، أول واحد سيكون المتوسط ​​المتحرك البسيط. (i - 1) ألفا (إنبوتاراي (i) - أوتبوتاراي (i - 1)) نيكست i انطلاقا من المتوسط ​​المتحرك الثاني، سيتم حسابها استنادا إلى الصيغة أعلاه: السابق إما زائد ألفا مضروبا في الفرق بين العدد الحالي من المدخلات وقيمة إما السابقة. (i، 1).الخارج الناتج (1،) i outputRange. Cells (0، 1). القيمة إما (أمب إنبوتبيريود أمب) تماما مثل رمز سما، سيتم ملء الإخراج و فإن الخلية فوق المخرجات ستمثل نوع وفترة المتوسط ​​المتحرك. وفيما يلي رمز لحساب المتوسط ​​المتحرك المرجح. وما ------------------------------------------ إلسيف compoTypeMA. Value مرجح ثم ديم temp2 كما هو صحيح بالنسبة إلى i إنبوتبيريود إلى روكونت تيمب 0 temp2 0 ل j (i - (إنبوتبيريود - 1)) إلى i تيمب إنبوتاراي (j) (j - i إنبوتبيريود) temp2 temp2 (j - i إنبوتبيريود) نيكست j أوتبوتاراي (i (1، 1).الموضة (أمب إنبوتبيريود أمب) إند إذا كان الجدول التالي يحتوي على خطوات لحساب كل متغير يستخدم ل (1، 1). حساب وما. تماما كما في المثال السابق، في هذا واحد هناك للأرقام في إنبوترانج. وفترة الإدخال هي 3. وفيما يلي رمز النهائي من الإجراء، الذي تفريغ نموذج المستخدم. إلغاء تحميل مافورم إند سوب الإجراء أدناه هو الزر إلغاء. وسوف تضاف في نفس الوحدة. بريفات سوب بوتونكانسلكليك () إلغاء تحميل مافورم إند سوب

No comments:

Post a Comment