رد: (20 وردة) مع (الدولار ين)
اقتباس:
المشاركة الأصلية كتبت بواسطة دراغي
جميع الأمور التي تعرضنا لها سيتم التطرق لما لم ننته منه بالتفصيل - وكل شي في وقته المناسب,
الآن نعود للاسطر الأولى في برنامجنا داخل دالة Calculator وهدفنا ايضا تسليط الضوء اكثر من التفصيل المتعمق,
هل تذكرون هذه الاسطر:
ll high3 = iHigh(Symbol(), Period(), iHighest(Symbol(), Period(), MODE_HIGH, 100, 20)); ll
l low3 = iLow( Symbol(), Period(), iLowest (Symbol(), Period(), MODE_LOW, 100, 20)); l
هل بالإمكان كتابتها بشكل مختلف ويعطي نفس النتائج:
تأمل السطرين التالليين:
ll high3 =High[ArrayMaximum(High, 100, 20)]; ll
ll low3=Low[ArrayMinimum(Low, 100, 20)]; ll
انهما نفس الشيء
في برنامجنا السابق HLBT.mq4 اريدك ات تستبدل السطرين الاولين هنا بالسطرين بعده,
طبعا افعل هذا لجميع المتغيرات الاخرى: high2 و low2
فإذا كانت []High وماشابه متغيرات مصفوفات, فإن ()ArrayMaximum وقرينتها الأخرى دوال مصفوفات. وأعتقد اننا أصبحنا نميز بين المتغير وبين الدالة الدالة: اشبه بالالة الحاسبة التي تجري العمليات المتغير: تلك القيم المستخدمة في تلك الدالة لاجراء العمليات. الدالة هي الإطار الأشمل.
من الصورة اعلاه نجد ان: ArrayMaximum بـ ثلاث معطيات. 1) متغير High وهو مصفوفة - وإذا ورد هكذا دون قوسي [] فإنه يعني: اشمل كل قيم High لجميع الشموع بدءا من الشمعة الحالية وحتى آخر شمعة يراها التشارت.
2) المعطى الثاني داخل اقواس
ArrayMaximum هو
عدد الشموع التي نريد ان نبحث عن الهاي بينها (هنا اخترنا هاي) - نضع عدد صحيح وليكن 100 - لتعني ابحث في 100 شمعة
متتالية. (متتالية هي نفسها array) - لاحظ التسمية.
3) اول شمعة نريد البحث منها على يسار الشمعة الحالية ولنفرض قيمتها 20 - انظر أسفل:
ll high3 =High[ArrayMaximum(High, 100, 20)]; ll
هنا يقول: ابحث عن مكان اعلى هاي بداء من الشمعة رقم 20 على يسار الشمعة الحالية وحتى 100 شمعة تالية لها - يعني من الشمعة 20 وحتى الشمعة 119
سيكون جواب
ArrayMaximum هو مكان الهاي (رقم شمعة الهاي) وليس الهاي نفسه. ثم الدالة High بالأحمر اعلاه - يكون الناتج داخل اقواسها [] هو قيمة ArrayMaximum وبالتالي يعطيك الهاي عند هذه القيمة (او المكان) - ومن هنا نفهم لماذا دالة ArrayMaximum عدد صحيح int لان جوابها مكان الشمعة وليس قيمتها.