الرد 165 - الصفحة 17
اقتباس:
المشاركة الأصلية كتبت بواسطة دراغي
لا نريده ان يذهب الى دالة
calculator مع كل تكة سعرية!
ولا نريده ان يبحث تحريك الاشياء مع كل تكة سعرية! ففي الساعة الواحدة قد يكون هناك الاف التكات! واريدك ان تتصور في تأثيرها على سرعة الباك تست!
نريد فقط: مع كل شمعة جديدة - ايا كان الفريم الزمني- يعني مع افتتاح الشمعة فقط - ان يأخذ القرار! -- يعني تكة واحدة فقط لكل شمعة جديدة!
يتم هذا - حسب وجهة نظري- على النحو التالي:
هذه الجزئة من البرنامج, عبارة أساسا عن 3 اسطر برمجية, هي:
1) استدعاء دالة calculator
2)
ObjectMove لـ الهاي
3)
ObjectMove لـ اللو
مع كل تكة سعرية يعيد البرنامج تنفيذ هذه الاسطر الثلاثة
أردنا بهدف تسريع الباكتست,
إنقاص مرات عدد التنفيذ الى تكة لكل شمعة(بدلا من التنفيذ مع كل تكة) وبالتالي اضطرننا لاستخدم الأداة
if (أداة الشرط) لنمنع البرنامج من اعادة التنفيذ مع كل تكة الا في حالة واحدة فقط, إذا نشأ شمعة جديدة.
تعودنا اثناء التداول انه قد يكون هناك 100 تكة في الدقيقة الواحدة وربما 70 تكة وربما 5 تكات(تحدث اخر الليل حيث ضعف التداول)
دون الجملة الشرطية فإن البرنامج سيمر على تلك الاسطر الثلاثة 100 مرة لو كان هناك 100 تكة
ولكن مع هذه الجملة الشرطية سينفذ تلك الاسطر الثلاثة مرة واحدة مع اول في الشمعة الجديدة , وهي اول تكة في تلك الدقيقة, اي مع افتتاح الشمعة. ثم يموت البرنامج حتى نشوء شمعة اخرى جديدة فينفذ في اول تكة في الدقيقة الجديدة ثم يموت البرنامج حتى نشوء الدقيقة الثالثة .... وهكذا
على فريم 5 دقائق: تكة لكل خمس دقائق, هي اول تكة في شمعة الخمس دقائق الجديدة
على فريم 15 دقيقة: تكة لكل 15 دقيقة. يعني ان الاسطر البرمجية الثلاثة السابقة, سيمر عليها البرنامج مرة واحدة لكل 15 دقيقة.
على فريم 1 ساعة, فإن البرنامج سينفذ مرة واحدة كل ساعة,
على فريم 4 ساعات, فغن البرنامج سينفذ تلك الاسطر الثلاثة ويحدثها كل 4 ساعات.
وهكذا.
والآن:
ll if ( New_Time != Time[0] ) ll ماذا تعنى؟ و =! ماهي وظيفتها؟ وهل يوجد غيرها؟