لماذا قمت بتعريفه zz لن تفرق طبعا ويمكنك تعريفه بأي إسم آخر
الكود السابق ربما به بعض التعقيد سوف أشرح الفكره ببساطه
أولا سوف أقوم بالبحث عن آخر قمه وقاع للزيجزاج لذلك سوف استخدم الحلقه for
كود PHP:
for(int i=start;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
الآن الزيجزاج يأخذ قيمتين 0 في حال لم تكن هناك قمه أو قاع متكونه على الشمعه
أو سعر القمه أو القاع في حال كان هناك قمة أو قاع متكونه
لذلك سوف أضع الشرط
كود PHP:
if(zz!=0){
return(zz);
}
فيصبح الكود في النهاية
كود PHP:
double ZigZag(){
for(int i=0;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zz!=0){
return(zz);
}
}
الكود السابق سوف يعود بقيمة آخر قمه أو قاع للزيجزاج لكن لنفرض مثلا أني أريد القمه قبل الأخيره أو القاع قبل الأخير أو أريد مثلا القمه رقم 5 .... إلخ
فلن أستخدم هذا الشرط مباشرة
كود PHP:
if(zz!=0){
return(zz);
}
لكن سوف أضع شرط بحيث يحسب لي عدد القمم والقيعان التي مرت ثم عند رقم القمه أو القاع التي أريدها أتوقف
لذلك وضعت هذا الشرط
معناه عندما يجد أول قمه أو قاع تصبح قيمة N=1 ثم وجد قمه أو قاع أخرى تصبح N=2 ثم قمه أو قاع أخرى تصبح N=3
ثم اريد التوقف الآن عند القمه رقم 3 مثلا سأضع الشرط
كود PHP:
if(N==shift)return(zz);
حيث shift هي رقم القمه أو القاع التي اريدها سواء 3 أو 1 أو 2 أو مهما كانت
معنى
كود PHP:
ZigZag(i,1)>ZigZag(i,2)
أي أن قيمة الزيجزاج الأول أكبر من قيمه الزيجزاج الثانيه وهذا يعني أن رقم 1 هي القمه ورقم 2 هي القاع
هذا الكود معقد قليلا نظرا لإني أستخدمه في المؤشر لكن في الإكسبرت سوف يكون الكود أبسط من ذلك