اعلانات المواقع والشركات

الباوند دولار الاتجاه المتوقع له  
[ 1 من 10 ] [ الكاتب : aljameel ] [ آخر مشاركة : aljameel ] [ عدد الزوار : 1510 ] [ عدد الردود : 79 ]
***** إكسب مليون دولار في عدة شهور *****  
[ 2 من 10 ] [ الكاتب : أبو عبد الله ] [ آخر مشاركة : إسلام1983 ] [ عدد الزوار : 919169 ] [ عدد الردود : 34086 ]
الترند المكسور في سباق "المضاعفات"  
[ 3 من 10 ] [ الكاتب : أبو عبد الله ] [ آخر مشاركة : أبو عبد الله ] [ عدد الزوار : 48483 ] [ عدد الردود : 934 ]
اكسبرت يضاعف راس المال 3 مرات  
[ 4 من 10 ] [ الكاتب : shael alashour ] [ آخر مشاركة : aksa85 ] [ عدد الزوار : 8101 ] [ عدد الردود : 214 ]
الهارمونيك طريقك للمليون بإذن الله  
[ 5 من 10 ] [ الكاتب : ناشيء الفوركس ] [ آخر مشاركة : الزلزال ] [ عدد الزوار : 172557 ] [ عدد الردود : 6650 ]
@@ توصيــــــــــات يوميــــــــــــه على الباونـــد / دولار @@  
[ 6 من 10 ] [ الكاتب : ماجد ،،،، ] [ آخر مشاركة : mu7amd ] [ عدد الزوار : 572632 ] [ عدد الردود : 13299 ]
برنامج MetaStock FX  
[ 7 من 10 ] [ الكاتب : ساحه الفوركس ] [ آخر مشاركة : سمير صيام ] [ عدد الزوار : 11 ] [ عدد الردود : 1 ]
صوتوا لضم مصر  
[ 8 من 10 ] [ الكاتب : mohsen224 ] [ آخر مشاركة : Misho Elmasri ] [ عدد الزوار : 115 ] [ عدد الردود : 12 ]
الـــيـــــورو مـــــع أبـــو الـعــــــــربــي غــيــــــر  
[ 9 من 10 ] [ الكاتب : أبو العربي ] [ آخر مشاركة : إسلام1983 ] [ عدد الزوار : 58 ] [ عدد الردود : 4 ]
اخي طارق حسين  
[ 10 من 10 ] [ الكاتب : حماده يلعب ] [ آخر مشاركة : طارق حسين ] [ عدد الزوار : 78 ] [ عدد الردود : 6 ]

اعلانات منتجات وخدمات المتداول العربي

العودة   منتديات المتداول العربي > مـنـتـديــات الـمـتـداول الـعـربي > منتدى المؤشرات والاكسبيرتات والبرمجة Indicators & Experts Advisors
التسجيل مركز رفع الملفات الأسئلة الشائعة التقويم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
قديم 17-12-2007, 02:18 AM   #46 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية وليد الامور

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

خطوة رائعة جدا ارجو لها الاكتمال و التوفيق
ولكن لى رجا اااااء (ان يغلق الموضوع على الشرح فقط اما اى استفسارات او اسئلة يفرد لها موضوع خاص)
حتى لا يتشتت احد. ولا اية رايكم

التوقيع





وليد الامور غير متواجد حالياً   رد باقتباس
قديم 17-12-2007, 02:41 AM   #47 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية esam 123

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

اليكم اخوتى الاحباب الدرس الثانى للاستاذ وضاح عطار على هيئة ملف وورد

الملفات المرفقة
نوع الملف: rar الدرس الثانى للاستاذ وضاح عطار.rar (18.7 كيلوبايت, المشاهدات 166)
التوقيع

الرزاق هوالله
مناطق دخول لكل العملات والله الموفق (مجموع ارباح التوصيات حتى الان5325 نقطة (يدير التوصيات الاستاذ هشام غنيم محمد و esam 123) (والله الموفق) (بدأت التوصيات فى 9/2/2008 )

esam 123 غير متواجد حالياً   رد باقتباس
قديم 17-12-2007, 11:51 PM   #48 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية wajdyss

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

جزاكم الله كل خير

التوقيع

-------------------------------------------------------------------
المسابقة العالمية للأكسبيرتات
-------------------------------------------------------------------
مؤشراتي My Indicators (متجدد بإذن الله)
-------------------------------------------------------------------
اكسبيرتاتي My expert advisors (متجدد بإذن الله)
-------------------------------------------------------------------

wajdyss غير متواجد حالياً   رد باقتباس
قديم 19-12-2007, 04:42 PM   #49 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

بسم الله الرحمن الرحيم

في هذا الدرس سنتطرق إلى أنواع المعلومات التي يمكن للغة MQL4 أن تتعامل معها.

هذه الأنواع هي:

أولا: المعلومات أو البيانات الرقمية:

والتي بدورها تنقسم إلى قسمين:

-- أرقام صحيحة integer ليس فيها فاصلة عشرية مثل 245 و 900 و -98 و الصفر.

يتم تعريف هذا النوع من المعلومات ( والتي تكون إما متحولا Variable أو وظيفة Function ) عبر الأمر int وهو طبعا اختصار لـ integer.

حدود هذه الأرقام الصحيحة هي من -2147483648 إلى 2147483647 .

أي رقم أكبر من المجال المسموح لن يخزن بشكل صحيح ولن تعرف النتيجة الحاصلة.

أمثلة عن تعريف متحولات أو وظائف يكون نوع البيانات فيها من النوع الصحيح:

كود PHP:
int a;
int b=5;
int a,b=5;
int a,b;
int GetTop(int a,intb)
{
return(
99);

لاحظوا أننا عرفنا عدة متحولات صحيحة بعدة أشكال.

يمكن تعريف عدة متحولات مع إعطائهم قيمة أولية.


يمكن تعريف أكثر من متحول لنفس الأمر مع الفصل بينهما بالفاصلة العادية.

أو يمكن تعريف كل متحول لوحده.

إن تعامل الكمبيوتر مع الأرقام الصحيحة أسرع من تعامله مع الأرقام ذات الفاصلة العشرية.

كما أنه يستهلك موارد ذاكرية أقل.

لذلك يجب على المبرمج أن يحدد نوع البيانات بدقة وإذا كان الأمر يحتاج لمتحولات صحيحة فلا ينبغي أن يستخدم متحولات بفاصلة عشرية كي يخزن بها قيم صحيحة.

مثلا عدد الشموع هو عدد صحيح دائما وأيضا عدد الصفقات المفتوحة مثلا.

بينما الأسعار هي أرقام ذات فاصلة ولا يمكن تخزينها في متحولات صحيحة.

لذلك يجب الانتباه جيدا عند التعامل مع المتحولات وإن عدم إدارة هذا الموضوع بشكل جيد قد يعرض برنامج للإخفاقات أو لا يعمل من أصله.

ولا تعرف ما هي المشكلة من عدم عمله بينما يكون السبب تعريف متحول بشكل خاطيء.

والمصيبة أن اللغة لا تعطيك دائما رسائل خطأ تعلم من خلالها أن هناك مشكلة مع المتحولات.

لنفرض أنك عرفت متحولا صحيحا ووضعت فيه القيمة 0.5
عند محاولتك استخدام أو طباعة هذا المتحول ستجد أن القيمة المخزنة فيه هي صفر وليس 0.5 كما فعلت أنت.

ويحدث هذا الأمر دون أن يحدث خطأ ينبهك. بينما لن يعمل برنامج بشكل صحيح.


-- أرقام مضاعفة double والتي تستخدم لتخزين أرقام صحيحة أو التي تحتوي على فاصلة عشرية مثل ( 0.2589 - 1.2589 - 582 - 0 - (-98.25)).

تستخدم غالبا المتحولات العشرية لتخزين الأسعار أو النسب المئوية وهكذا.

مجال هذا النوع هو من -1.7 × e قوة -308 إلى 1.7 × e قوة 308 .

e هي النسبة الرياضية المعروفة ( يمكن 2.8 ). وهذا يعني مجال واسع جدا جدا.


ثانيا: المعلومات النصية:

والتي تعرف من خلال الأمر string وهي تعني ان المتحول سنخزن فيه أحرفا أو أرقاما.

والأرقام التي نخزنها في المتحول النصي لا يتعام معها الكمبيوتر على أنها أرقام بل يتعامل معها على أساس أنها أحرف.

وهذا يؤدي إلى أن الكمبيوتر لن يستطيع إجراء عمليات حسابية أو مقارنة رقمية بين المتحولات النصية المخزن فيها أرقام.
تستخدم المتحولات النصية غالبا كرسائل للمستخدم أو عرض معلومات على الشارت.


أمثلة:

كود PHP:
string MyName;
string MyName,MyAddress;
string MyName="Ahmad";
 
string GetName(string address)
{
return(
"Ahmad");

يجب وضع القيم النصية داخل علامتي التنصيص المزدوجة " .

ثالثا: المعلومات المنطقية Boolean:


والتي تعرف من خلال الأمر bool . وهذه المتحولات تخزن فقط قيمتين هما صح true أو خطأ false.

يستفاد من هذه المتحولات المنطقية للإشارة إلى نعم أو لا لأي احتمال ممكن.

فأي احتمال مثل هل تريد أن يعمل التنبيه مثلا هو نعم أو لا .
أو هل السعر قريب من المتوسط له بمقدار 10 نقاط هو نعم أو لا .

ولا يوجد إجابة أخرى يعني إما أبيض وإما أسود.

أمثلة:

كود PHP:
bool a=true,b=false;
bool a;
 
bool GetStatus()
{
return(
true);


رابعا: المعلومات أو البيانات الزمنية datetime:

يتم تعريف المتحولات الزمنية بالأمر datetime ويمكنه تخزين تاريخ فقط أو تاريخ وزمن أو زمن فقط في هذا المتحول.

المجال المتاح تخزينه في المتحولات الزمنية هو من Jan 1, 1970 إلى Dec 31, 2037.

يعني في العام 2037 سوف تتوقف كل المؤشرات والاكسبيرتات.

طبعا هذا المجال على مستوى الثواني.

يتم إضافة الحرف D قبل القيمة الزمنيةالتي نريد وضعها في المتحول.

أمثلة:

كود PHP:
datetime expiredate=D'2007.05.01 06:55:23';
datetime dd=D'06:30'
التنسيق الزمني هو: العام(.)الشهر(.)اليوم (مسافة) الساعة(الدقيقة(الثانية

إذا لم تكتب التاريخ فسوف يكون التاريخ الافتراضي هو تاريخ عمل النسخة التنفيذية للمؤشر أو تاريخ التنفيذ.

التوقيع

________________
لا إله إلا الله محمد رسول الله
________________

وضاح عطار غير متواجد حالياً   رد باقتباس
قديم 19-12-2007, 04:44 PM   #50 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

بعد أن تعرفنا على أنواع المتحولات والوظائف هناك موضوع غاية في الأهمية ألا وهو مجالات المتحولات Variable Scope .

ما هو المعنى الفني لمصطلح مجالات المتحولات ؟


ببساطة يمكن القول أن المجال يعني منطقة عمل هذه المتحولات.

ولتبسيط هذا المفهوم نقول:

افترض أن الكتلة البرمجية للبرنامج كلها هي مجال عمل للبرنامج كله.

وافترض أن الكتلة البرمجية لأي وظيفة هي مجال فرعي من المجال الكلي للبرنامج.

وكل كتلة برمجية وظيفية هي مجال فرعي من مجال البرنامج الكلي.

ولاحظ أنه لا يوجد تداخل بين المجالات الفرعية للكتل الوظيفية. وكل هذه المجالات الفرعية هي حتما ضمن المجال الأكبر وهو مجال البرنامج.

الآن لتخيل الموضوع أكثر افترض أن لدينا دائرة كبيرة هي دائرة البرنامج.

وفي داخلها دوائر أصغر منها وموجودة كلها بداخل الكرة الكبيرة ولكن دون تقاطع فيما بين الدوائر الصغيرة.

هذه الدوائر الصغيرة هي الوظائف الموجودة ضمن برنامجنا.

والآن نعود لمفهوم مجالات المتحولات ونقول:

إذا عرفنا المتحول ضمن دائرة مجال البرنامج كله فهذا يعني أننا نستطيع التعامل مع هذا المتحول من كل برنامجنا بما فيه المجالات الفرعية الأصغر للكتل الوظيفية.

ويقصد بالتعامل مع المتحول قراءة قيمته وتغييرها.

أما إذا عرفنا المتحول ضمن دائرة مجال الوظيفة الفرعية فإننا نستطيع التعامل معه فقط من داخل هذا المجال. وهذ المتحول لن يكون معرفا ولن نستطيع التعامل معه من خارج هذه الدائرة.

الآن إذا أردنا لمتحول أن يكون عاما Global لكل برنامجنا فيجب تعريفه Declare في بداية برنامجنا وخارج أي كتلة وظيفية وفعليا يتم كتابته قبل الوظيفة init.

أما إذا كان المتحول خاصا بوظيفة معينة ولا تهمنا قيمته خارج هذه الوظيفة فيجب علينا أن نعرفه داخل الوظيفة نفسها.

وفي هذه الحالة لن يكون له قيمة أو يمكن التعامل معه من خارج هذه الوظيفة.

إذا عرفنا متحول باسم a في المنطقة العامة للبرنامج فنحن لن نستطيع تعريفه بنفس الاسم داخل أي من وظائفنا الأخرى.

أما إذا عرفنا المتحول a في الوظيفة F1 مثلا فنحن نستطيع أيضا أن نعرف متحول آخر بنفس الاسم a في الوظيفة F2 بدون مشاكل.

ويكون المتحول الأول مختلفا عن الآخر.

بمجرد خروج التنفيذ من الكتلة البرمجية للوظيفة فإن أي متحول معرف داخلها لن يكون له أي قيمة وغير معرف خارجها.

ولن يعود له قيمة إلا إذا عدنا مرة أخرى لتنفيذ الوظيفة مرة أخرى.

وهنا يجب التفريق بين حالتين:

إذا أردنا أن نحافظ على قيمة المتحول داخل الوظيفة حتى ولو خرج التنفيذ وعاد لها مرة أخرى فإننا نستخدم التعبير static عند تعريف المتحولات.

أما إذا كنا لا نريد الاحتفاظ بقيمة المتحول عند الخروج ولا يهمنا المحافظة عليها فإننا نعرفه داخل الوظيفة بالطريقة المعتادة.

التوقيع

________________
لا إله إلا الله محمد رسول الله
________________

وضاح عطار غير متواجد حالياً   رد باقتباس
قديم 19-12-2007, 04:54 PM   #51 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

أمثلة توضح المقصود من مجالات المتحولات:

المثال الأول:


كود PHP:

#property indicator_chart_window
// المتحولات التي تعرف هنا عامة في جميع البرنامج
int gNum=5;
double gPrice=1.2587;
int init()
{
// المتحولات التي تعرف من داخل الوظيفة تكون خاصة بها فقط
  
string Name="Waddah Attar";
  
  Print(
Name,gNum);
  return(
0);
}
int deinit()
{
  
datetime ExpirDate=D'2007.05.01';
  Print(
ExpireDate,gPrice);
  return(
0);
}
int start()
{
// لا يمكن تعريف متحول هنا بنفس اسم متحول عام لذلك السطر التالي خطأ
  
int gNum;
// يمكن تعريف متحول هنا بنفس اسم متحول معرف داخل وظيفة أخرى مثل 
  
string Name="Mohammed";
 
  
int A,B;
 
  return(
0);

في المثال السابق عرفنا متحولين عامين هما gNum gPrice

هذين المتحولين نستطيع التعامل معهما من أي جزء من برنامجنا ومن داخل أي وظيفة.


عرفنا متحولات خاصة بالوظيفة init وهذه المتحولات لا يمكن التعامل معها إلا من داخل الوظيفة init نفسها.

وأي محاولة للتعامل معها من خارج هذه الوظيفة سوف يقابل برسالة خطأ قاتلة Fatal Error.

يمكن تعريف متحول في وظيفة بنفس الاسم المعرف بها في وظيفة أخرى.

بهذا المثال نكون قد وضحنا تماما كيفية تعريف المتحولات داخل البرنامج.



بقيت نقطة هامة أخرى وهي المتحولات الستاتيكية static variable

انظروا لهذا المثال أولا:

كود PHP:
int start()
{
  
int a=5;
 
  Print(
a);
  
a=a+1;
 
  return(
0);


المثال السابق يعرف متحولا باسم a ويعطيه قيمة افتراضية هي 5 .
ثم يقوم بطباعته وبعد ذلك يزيد لقيمته واحد .

الآن بمجرد خروج التنفيذ من الوظيفة start ثم العودة لها مرة أخرى فإن قيمة a ستعود لتصبح 5 من جديد.

ولكن لأننا في بعض الحالات نحتاج أن نحافظ على قيمة المتحول المعرف داخل الوظيفة بقيمته حتى ولو خرجنا من الوظيفة فإننا نعرفه على أساس أنه ستاتيك أي نطلب من البرنامج حفظ قيمته عند الخروج من الوظيفة.

وعند الدخول مرة أخرى للوظيفة فإن قيمة المتحول a لن تعود للقيمة الإفتراضية له بل ستأخذ آخر قيمة لها من آخر تنفيذ للوظيفة start

ولكي يصبح مثالنا السابق صحيحا فإن المثال يصبح على الشكل التالي:

كود PHP:
int start()
{
  static 
int a=5;
 
  Print(
a);
  
a=a+1;
 
  return(
0);

الآن أول مرة تنفذ فيها الوظيفة start فإن قيمة المتحول a ستكون 5 .

ثم تصبح 6 بعد زيادة الواحد إليها.


ثم ينتهي تنفيذ الوظيفة ويخرج التنفيذ منها.

عند العودة مرة أخرى إلى تنفيذ الوظيفة start فإن القيمة الأخيرة 6 ستكون في المتحول a ولن يأخذ القيمة الافتراضية 5 .

ثم يزداد واحد ليصبح 7 وهكذا مع كل تنفيذ.

هذه هي فائدة المتحولات الستاتيكية في أنها تحافظ على قيمها عند خروج التنفيذ من الوظيفة التي عرفوا بها.

هذه المفاهيم البرمجية ضرورية جدا للبرمجة فيما بعد وتعطيك آفاقا وأدواتا تساعدك على البرمجة الاحترافية وتحويل أفكارك إلى برامج دون صعوبات تذكر.

أيضا يجب التنويه إلى أن المتحولات العامة تستهلك ذاكرة وموارد أكثر من المتحولات الستاتيكية

بينما المتحولات المحلية Local Variable تستهلك أقل الموارد.

التوقيع

________________
لا إله إلا الله محمد رسول الله
________________

وضاح عطار غير متواجد حالياً   رد باقتباس
قديم 20-12-2007, 12:10 AM   #52 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية wajdyss

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

أخ وضاح

جزاك الله عنا كل خير

التوقيع

-------------------------------------------------------------------
المسابقة العالمية للأكسبيرتات
-------------------------------------------------------------------
مؤشراتي My Indicators (متجدد بإذن الله)
-------------------------------------------------------------------
اكسبيرتاتي My expert advisors (متجدد بإذن الله)
-------------------------------------------------------------------

wajdyss غير متواجد حالياً   رد باقتباس
قديم 22-12-2007, 02:40 AM   #53 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

شكرا لكل المتابعين والمهتمين

ولكن هل من المعقول أنه لا توجد أسئلة على الدروس الماضية حتى الآن ..

التوقيع

________________
لا إله إلا الله محمد رسول الله
________________

وضاح عطار غير متواجد حالياً   رد باقتباس
قديم 22-12-2007, 12:41 PM   #54 (permalink)
معلومات العضو
المتداول العربي

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

جزاك الله كل خير أستاذنا الكريم وضاح
الموضوع هو خوض في بحر بالنسبة لنا فلذلك لا نريد تشتيتك في أسئلة كثيرة هي أساسية وصعبة بالنسبة لنا ولكنها بديهية ولاتحتاج إلى سؤال بالنسبة لك
ولذلك نحاول أن نتابع أكثر وأكثر حتى تكتمل الصورة بالنسبة لنا ثم نستطيع أن نوجه أسئلتنا بدقة ووعي أكثر .
أرجو منك متابعة الشرح والصبر علينا للنهاية ولك منا جزيل الشكروالإمتنان ...أخوك أبو فاضل

shadoon2 غير متواجد حالياً   رد باقتباس
قديم 22-12-2007, 05:12 PM   #55 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

اقتباس:
المشاركة الأصلية كتبت بواسطة shadoon2 مشاهدة المشاركة
جزاك الله كل خير أستاذنا الكريم وضاح
الموضوع هو خوض في بحر بالنسبة لنا فلذلك لا نريد تشتيتك في أسئلة كثيرة هي أساسية وصعبة بالنسبة لنا ولكنها بديهية ولاتحتاج إلى سؤال بالنسبة لك
ولذلك نحاول أن نتابع أكثر وأكثر حتى تكتمل الصورة بالنسبة لنا ثم نستطيع أن نوجه أسئلتنا بدقة ووعي أكثر .
أرجو منك متابعة الشرح والصبر علينا للنهاية ولك منا جزيل الشكروالإمتنان ...أخوك أبو فاضل

أهلا بك أخي العزيز أبو فاضل

بإذن الله سوف أكمل الدورة حتى النهاية ولن أتوقف لأي سبب من الأسباب .

وأنا بانتظار أسئلتكم واستفساراتكم هنا أو في الموضوع المخصص للأسئلة البرمجية

شكرا لكم

التوقيع

________________
لا إله إلا الله محمد رسول الله
________________

وضاح عطار غير متواجد حالياً   رد باقتباس
قديم 23-12-2007, 10:37 PM   #56 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: تعال وتعلم معنا لغة MQL4 حتى الاحتراف

بسم الله الرحمن الرحيم


سنبدأ مع هذا الدرس البدء في بناء مؤشرنا الذي تحدثنا عنه في الدروس السابقة:

الخطوات الفعلية لبناء مؤشر بشكل عام:

- تجهيز خصائص المؤشر من حيث عدد الخطوط المطلوب رسمها ولونه.

- تجهيز المصفوفات التي سنضع فيها القيم الرقمية لقيمة كل خط من المؤشر ولكل شمعة.

لأنه يمكن أن يكون المؤشر عبارة عن خط أو أكثر.

وكل مؤشر يستطيع إظهار حتى ثمانية خطوط في نفس الوقت.

والخط يقصد به طبعا الشيء الذي نريد رسمه على الشارت ولكل شمعة.

فمثلا مؤشر المتوسط المتحرك عبارة عن خط واحد بينما مؤشر البولينغر عبارة عن ثلاثة خطوط.

كل خط من خطوط المؤشر يجب أن يرتبط بمصفوفة نقوم نحن بإنشائها داخل برنامجنا.

- ربط مصفوفة كل خط مع الذاكرة الرسومية الوسيطة Buffer. وهي التي تحول مصفوفتنا وتربطها بمعالج داخلي للغة MQL4 والذي يقوم برسم قيم المصفوفة على الشارت نفسه.

وأي تغيير في قيم هذه المصفوفة سينعكس مباشرة على الشارت.

- إعطاء هذه الذاكرة الرسومية الوسيطة الخصائص الرسومية المناسبة لطريقة رسم الخط.

هذه الخصائص الرسومية هي شكل الخط ولونه وطريقة رسمه.

- آخر خطوة هي ملء المصفوفة بالقيم المناسبة في كل مرة يتغير فيها السعر.



والآن سنبدأ في كتابة الكود البرمجي للمؤشر:

تذكير فقط بمهمة مؤشرنا:

المؤشر سيرسم في نافذة منفصلة خطين عمودين لكل شمعة.
الخط العمودي الأول هو عبارة عن طول الشمعة الحالية.
الخط العمودي الثاني هو عبارة عن طول جسم الشمعة.

الخطوة الأولى:

لنعد إلى الكود الفارغ الذي أنشئناه في الدرس الثاني وهو كالتالي:

كود PHP:
//+------------------------------------------------------------------+
//|                                                Candle Length.mq4 |
//|                               Copyright © 2006, eng waddah attar |
//| 
كود PHP:
http://www.****quotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, eng waddah attar"
#property link      "http://www.****quotes.net"
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
int    counted_bars=IndicatorCounted();
//----
   
//----
   
return(0);
  }
//+------------------------------------------------------------------+ 
- يجب تحديد خصائص ابتدائية للمؤشر من حيث عدد الخطوط الواجب عرضها على الشارت وهي عندنا هنا 2 .

ويتم ذلك بواسطة الأمر property والذي مهمته تحديد خصائص المؤشر.


والأمر الكامل هو:

كود PHP:
#property indicator_buffers 2 

بواسطة الأمر السابق حددنا للمترجم ( Compiler ) أن عدد الخطوط هو اثنان.

وأي أمر في البرنامج تجد أوله هو # فهذا يعني أن هذا الأمر هو موجه للمترجم مباشرة.

- نحدد الآن لون كل خط وذلك بواسطة الأمر property نفسه ولكن مع تغيير اسم الخاصية طبعا.

والأمر الكامل هو:

كود PHP:
#property indicator_color1 Green
#property indicator_color2 Red 

لاحظوا أن