المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : دوال التشارت في لغة mql4 (مستوى متقدم)



دراغي
09-05-2017, 06:19 AM
بسم الله الرحمن الرحيم--
هذا كورس متقدم جدا للضليعين في لغة البرمجة MQL4 المستخدمة على نطاق واسع في صناعة برامج التداول الالي والمؤشرات الخ,

انظر للتشارت اسفل, عبارة عن محورين:
محور السينات (الزمن TIME)
و
محور الصادات(السعر PRICE)
https://charts.mql5.com/14/963/euraud-m1-house-of-borse.png

ولأي مقرر شامل لهذه اللغة البرمجية المتطورة, فإنه يعبر عنها بجدول المحتويات أسفل:

http://store6.up-00.com/2017-05/14943001960741.png

دراغي
09-05-2017, 06:49 AM
كم عدد دوال التشارت؟؟
الصورة أسفل تبين عددها:

http://store6.up-00.com/2017-05/14943015630031.png

دراغي
09-05-2017, 01:02 PM
قلنا التشارت محور سينات X وهو يعبر عن الزمن
ومحور صادات Y يعبر عن السعر
وبالتالي اذا اردت مثلا ان ترسم اي شيء وليكن خط عمودي على التشارت, لابد تخبر البرنامج بالمكان الذي يتم عنده الرسم الزوج المرتب (س, ص)

الكورس مطور وانت سلفا تعرف دالة رسم خط عمودي, كما في الصورة:
http://store6.up-00.com/2017-05/149432396852541.png

دراغي
09-05-2017, 01:04 PM
ودائما لأنه في اصل البرنامج الرسم عند الشمعة رقم 5 , سيرسم عند هذه المشعة شيء اسمه "yyy15xxx" وهو اسم لخط عمودي vline
v اختصار vertical وتعني عمودي و line تعني خط

دراغي
09-05-2017, 01:07 PM
وبالتالي لافائدة وحتى لو سحبت الخط بالقوة الى شمعة اخرى تريدها انت, فإنه سيعود خلال اجزاء من الثانية الى الشمعة رقم 5
وبالتالي نحن نحتاج الى بعض دوال التشارت, بحيث نرسم هذا الخط على اي مكان في التشارات بضغطة ماوس.

فقط بضغطة رز البرنامج يكتشف الزوج المرتب (س و ص) -- النقطة التي ضغطت عليها بالماوس--ثم يرسم الخط العمودي هناك ويحتفظ به حتى تضغط في مكان اخر فينقله للمكان الاخر,

هذا المثال البسيط مدخل لفهم دوال التشارت,

دراغي
09-05-2017, 01:12 PM
وبناء عليه نحن بحاجة لدالة اضافية اسمها دالة: احداث التشارات OnChartEvenet لتعمل مع دالة Ontimer الأصلية

انظر للصورة:

http://store6.up-00.com/2017-05/149432456875091.png

دراغي
09-05-2017, 01:18 PM
فأصبحت الدالة جزء من البرنامج السابق, ومن خلالها وحدها فقط ممكن التعامل مع خصائص التشارت والاشياء المرسومة عليه.
لغة انجليزية: object=شيء
خصائص = property

أسفل دالة فارغة لم نكتب فيها اي شيء
http://store6.up-00.com/2017-05/149432483034221.png

دراغي
09-05-2017, 01:22 PM
وكما ترى يوجد فيها 4 متغيرات وهي
id من نوع من نوع int يعني عدد صحيح
lparam من نوع من نوع long يعني قيمتها عدد صحيح طويل
dparam من نوع double يعني قيمتها عدد عشري
sparam من نوع string يعني قيمتها "نص"

دراغي
09-05-2017, 01:28 PM
والآن بعد هذا التمهيد, أرجو أن تميز بين شيئين:
1) خصائص التشارت نفسه, مثل الزوومنق للتشارات, طوله وعرضه بالبكسل الخ
) خصائص الاشياء التي نضعها على التشارت(يعني ليس خصائص التشارت نفسه) مثل إضافة خط عمودي على التشارت او اضفة ترند او مستطيل.

إذن هناك:
خصائص التشارت
خصائص "الأشياء"

مثال: تلوين الخط العمودي باللون الاحمر من خصائص "الشيء" بينما خلفية التشارت السوداء, من خصائص التشارت

رغم ان الخاصية هنا نفسها هي "اللون"

فهناك التشارت وهناك "الشيء"
امثلة على "الشيء" : الخط العمودي الذي رسمنها

فالخط العمودي عبارة عن "شيء" رسمناه على "التشارت"

دراغي
09-05-2017, 01:43 PM
أول متغير هو id

OnChartEvent دالة تتألف من 4 متغيرات كما ذكرنا,
أول متغير هو id وقلنا أنه من نوع int وهي اختصار integer وتعني عدد صحيح,
فأنت لديك 12 ولدا, لهم اسماء وهي: محمد و وليد وخالد الخ, او بالإمكان تقول رقم 1 وتعني محمد ورقم 2 وتعني وليد, ورقم وتعني خالد الخ,

كم ابناء هذه الدالة في لغة mql4 ؟؟
ج: لها 12 من الابناء, مرقمين من 0 الى 11 ---- 0 و1 و 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9 و 10 و 11

فبإمكانك استخدام اسم الابن او استخدام رقم الابن برمجيا, فالأمر سيان.

دراغي
09-05-2017, 01:52 PM
كما ترى اسفل اسماء توابع الدالة OnChartEvent
وكل تابع له وظيفة محددة, وقد تفهم انت شيئا من الوظيفة الخاصة بكل دالة بمجرد قراءة الاسم

مثلا التابع الثاني CHARTEVENT_MOUSE_MOVE ربما من كلمة ماوس تفهم ان لها علاقة بحركة الماوس على التشارت,

http://store6.up-00.com/2017-05/149432697476131.png

وربما بشوية ذكاء منك وقبل أي شرح تميز بين
CHARTEVENT_CLICK
و
CHARTEVENT_OBJECT_CLICK

قد تفهم ان الاولى الضغط على اي مكان في التشارت
بينما الثانية خاصة بالضغط على شيء يوجد على التشارت.
object = شيء

دراغي
09-05-2017, 01:59 PM
إذن المتغير id يقبل 12 قيمة مختلفة, انظر للصورة في الرد السابق
كل قيمة لها غاية محددة,

تخيل رسمت مربع على التشارت--إذن "انا رسمت شيء"
هذا الشيء سيكون وظيفته لو ضغطت عليه هو "اغلاق الصفقات المفتوحة على اليورو دولار" مثلاً,
أنت حددت شيء وأنت كمبرمج ومتداول حددت هدف هذا الشيء, وهذا الهدف يتحقق بحاجة اسمها "الضغط على الشيء" وبالانجليزي "OBJECT_CLICK"

إذن استخدم الابن CHARTEVENT_OBJECT_CLICK

فانت برمجيا رسمت شيء وجعلت هدفه برمجيا اغلاق اي صفقة مفتوحة على اليورو دولار, وأنه لن يغلق هذه الصفقات الا اذا ضغطت على هذا الشيء الذي هو شكل مربع, وقد سميته انت برمجيا YYY15XXX او سميته تسمية توضح هدفه, مثلا سميته CLOSE_EURUSD


لغة انجليزية:
click ; يعني "اضغط على"

دراغي
09-05-2017, 02:16 PM
ثاني متغير هو lparam وهو خاص بقيمة س على محور السينات--يعني قيمة الزمن
وثالث متغير هو: dparam وهو خا بقيمة ص على محور الصادات, يعني قيمة السعر

فكل ابن من الابناء 12 اعلاه اذا لزم الأمر معه قيمتين lparam و dparam

بعضها لايلزم, حيث لاتحتاج هذه القيم

دراغي
09-05-2017, 02:16 PM
فأنت مثلا اذا ضغطت بالماوس على التشارت, فإنه سيعطيك قيمتين قيمة السعر والزمن في تلك النقطة,
يعني قيمة x و قيمة y

دراغي
09-05-2017, 02:20 PM
ورابع متغير هو: sparam وهو خاص باسم الشيء الذي ضغطت عليه اذا كان الابن يتعامل مع الاشياء
او قد يكون الماسك لحركة الماوس,
حسب الابن يكون معناه, كما سنبين,