اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
- تسريع عمل المؤشر . من الطبيعي أن نقوم بحساب قيم المؤشر لكل الشمعات الموجودة على الشارت عند تغير السعر اللحظي.
وذلك عبر حلقة تمر على كل الشمعات . ولكن هذا الأمر قد يستغرق وقتا طويلا إذا كانت الحسابات معقدة جدا وكانت عدد الشمعات على الشارت كبير جدا. ولذلك نستخدم تقنية جديدة لحساب قيم الشمعات الجديدة فقط دون الحاجة إلى إعادة الحساب كل مرة على كل الشمعات. وذلك بالاستعانة بالوظيفة IndicatorCounted والتي تعطينا عدد الشمعات التي حسبنا عليها المؤشر. وباستخدام هذا الكود الحسابي والحلقة المعدلة نحسب فقط عدد الشمعات الجديدة والتي عليها فقط نحسب قيم مؤشرنا عليها. والكود هو التالي: كود PHP: int limit, i, counted_bars = IndicatorCounted(); // إذا لم يكن هناك شمعات جديدة اخرج دون حساب if(counted_bars < 0) return(-1); // إذا كان هناك شمعات جديدة احسب مقدار الشموع الجديدة فقط if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; // الحلقة تكون من عدد الشموع الجديدة المكونة وحتى الشمعة الحالية رقم صفر for(i = limit - 1; i >= 0; i--) { /// حساب المؤشر }
|
سؤال:
IndicatorCounted يرجع لنا عدد الشمعات التي تم رسم المؤشر لها ، فإن رُسم لـ 5 شمعات مثلا سيرجع الرقم 5، وإن لم يرسم شيئا بعد يرجع الرقم 0، فهل يمكن أن يكون بالسالب؟ يعني هو "عدد" والأعداد لا تكون سالبة، فلماذا وضعنا الجمل الشرطية؟ ألا يكفي أن نقول:
limit = Bars - counted_bars ;
ثم الفور لووب التي تنفذ رسم الشمعات فقط؟
شكرا لك