صفحة 8 من 16 الأولىالأولى ... 234567891011121314 ... الأخيرةالأخيرة
النتائج 106 إلى 120 من 237
  1. #106
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

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

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

    الكائنات الرسومية هي ( مع أسمائها البرمجية ) :

    - الخط العمودي OBJ_VLINE:
    وهو عبارة عن خط عمودي على كامل الشارت له خصائص مثل اللون والسماكة وطريقة رسم الخط هل هو منقط أو متصل وهكذا.

    وهو يحتاج فقط إلى معرفة الزمن الذي سيرسم عليه الخط العمودي.

    - الخط الأفقي OBJ_HLINE:
    وهو عبارة عن خط أفقي يرسم على كامل الشارت وله مثل خصائص الخط العمودي أعلاه.

    وهو يحتاج فقط إلى السعر الذي سيرسم عليه الخط الأفقي.

    - الخط المائل OBJ_TREND:
    وهو خط الترند المعروف ويتم تحديده بنقطتين فقط. بحيث يكون لكل نقطة زمن وسعر.

    وله أيضا نفس الخصائص الرسومية السابقة.

    كما أن له أيضا خاصية جديدة هي Ray والتي تأخذ قيمتين هما true أو false.

    في حال كانت true فإن خط الترند يرسم حتى يخرج من حدود الشارت.

    في حال كانت false فإن خط الترند يرسم فقط بين النقطتين المحددتين.

    - الخط المائل بزاوية OBJ_TRENDBYANGLE:
    وهو مشابه للترند السابق ولكنه يرسم من نقطة واحدة فقط مع إعطائه زاوية معينة.

    - نسب فيبوناتشي OBJ_FIBO:
    وهي كائن فيبوناتشي المعروفة وترسم بتحديد نقطين فقط. وسيظهر الكائن على الشارت وفق الإعدادات الإفتراضية لمستوياته.

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

    - المستطيل OBJ_RECTANGLE:
    يتم رسم مستطيل على الشارت بتحديد نقطتين فقط بحيث تكون كل نقطة زمن وسعر.

    - المثلث OBJ_TRIANGLE:
    يتم رسم مثلث على الشارت بتحديد ثلاث نقط.

    - القطع الناقص OBJ_ELLIPSE:
    يتم رسمه بتحديد نقطتين فقط.

    - الدائرة OBJ_CYCLES:
    يتم رسمها أيضا بتحديد نقطتين فقط.

    - أسهم أو أشكال أخرى OBJ_ARROW:
    يمكن بواسطة هذا الشكل رسم أسهم لفوق أو لتحت أو إشارات مثل يد لتحت أو يد لفوق أو إشارة صح أو اشارة خطأ أو مستطيل صغير يظهر السعر الحالي.

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

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

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

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


    - مربع نص OBJ_TEXT:
    لرسمه نحتاج فقط إلى نقطة واحدة مكونة من زمن وسعر. حيث دائما الزمن يكون محور X والسعر هو محور Y.



    كل الكائنات الرسومية السابقة تعتمد على نقاط تموضع على الشارت مكونة من زمن X وسعر Y.

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

    هناك نوع أخير لا يتحرك مع الشارت ويبقى ثابتا عليه مهما حركنا الشارت يمينا أو يسارا أو مهما غيرنا نوع الفريم المستخدم وهو:

    - بطاقة نص OBJ_LABEL:
    لرسم هذه البطاقة التي تظهر لنا نصا داخلها بلون وخط محددين فإننا نحتاج إلى تحديد X و Y لها بالبيكسل.

    والبيكسل هو أصغر نقطة ضوئية على الشاشة بالدقة المحددة مثلا 1024 × 768 بيكسل.

    والنقطة صفر × صفر هي النقطة اليسارية العلوية من نافذة الشارت.

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

    وكلما زدنا القيمة بالموجب فإن النقطة تنزل إلى الأسفل وتقترب من اليمين أكثر.

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

    وهو حل جيد لمشكلة Comment التي واجهناها في السابق.

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

    يمكن التمرن الآن على الكائنات الرسومية من خلال برنامج التداول ومعرفة خصائص كل كائن رسومي من خلال برنامج التداول نفسه.

    وسنرى بعد قليل كيف نستطيع جعل مؤشرنا يقوم برسم هذه الكائنات على الشارت آليا وفق آلية معينة

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

  2. #107
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    شرح الوظائف المستخدمة مع الكائنات الرسومية:

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


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

    تستخدم الوظيفة ObjectCreate كالتالي:

    كود PHP:
    bool ObjectCreate(string nameint typeint windowdatetime time1double price1datetime time2=0double price2=0datetime time3=0double price3=0
    البارامتر الأول هو اسم الكائن الرسومي البرمجي والذي من خلاله نستطيع تعديل صفاته الرسومية أو تغيير مكانه أو حتى حذفه.

    وهو كما قلنا يجب ان يكون فريدا أي غير مكرر.


    البارامتر الثاني هو نوع الكائن الرسومي الذي نريد رسمه على الشارت وهو أحد الأنواع المشروحة سابقا.

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

    البارامترات الستة الباقية هو نقاط تمركز وتموضع هذا الكائن على الشارت.

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

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

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

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

    مثال لرسم خط عمودي:

    كود PHP:
    if (ObjectCreate("VerLine1",OBJ_VLINE,0D'2007.07.25 12:30',0))
    {
       ..... 
    نجاح الوظيفة في رسم الخط العمودي
    }
    else
    {
      Print(
    "Cant Draw VLINE");

    الكود السابق يعني ارسم خط عمودي باسم VerLine1 على النافذة الأساسية في التاريخ 2007.07.25 12:30

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



    مثال آخر لرسم الترند المرتكز على نقطتين:

    كود PHP:
    ObjectCreate("Trend1",OBJ_TREND,0,Time[0],Low[0],Time[10],High[9]); 
    الكود السابق يرسم ترند باسم Trend1 على النافذة الأساسية من لو الشمعة الأخيرة إلى هاي الشمعة العاشرة.



    الوظيفة ObjectDelete:


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

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

    فمثلا الكود التالي يحذف الكائن الرسومي الذي اسمه Trend1.

    كود PHP:
    ObjectDelete("Trend1"); 
    وهي تعود بقيمة true في حال نجحت في حذف الكائن أو false في حال فشلت.

    والفشل يكون هنا في حال لم تعثر الوظيفة على كائن بهذا الاسم.



    الوظيفة ObjectsDeleteAll:

    هذه الوظيفة لها ثلاثة استخدامات:

    1- تقوم هذه الوظيفة بحذف كل الكائنات الرسومية الموجودة على الشارت وذلك باستدعائها دون بارامترات مثل:

    كود PHP:
    ObjectsDeleteAll(); 
    - أو حذف كل الكائنات الرسومية من نافذة محددة ( صفر للرئيسية ثم واحد للفرعية وهكذا )

    فمثلا المثال التالي يحذف كل الكائنات الرسومية الموجودة على النافذة الفرعية الأولى:


    كود PHP:
    ObjectsDeleteAll(1); 
    - أو حذف كل الكائنات الرسومية التي لها نوع محدد من النافذة المحددة.

    فمثلا الكود التالي يحذف كل الترندات المرسومة على النافذة الرئيسية للشارت:


    كود PHP:
    ObjectsDeleteAll(0,OBJ_TREND); 
    الوظيفة ObjectFind:

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


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

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

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

    كود PHP:
    int wi=ObjectFind("Trend1");
    if (
    wi==-1)
    {
      Print (
    "الترند غير موجود");
    }
    else
    {
      Print(
    "الترند موجود على النافذة رقم  " ,wi);

    الوظيفة ObjectTotal:

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


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

    الوظيفة ObjectTotal تعطينا عدد الكائنات الرسومية الموجودة على الشارت.

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

    كود PHP:
    Print("عدد كل الكائنات " ObjectTotal());
    Print(
    "عدد الترندات فقط " ObjectTotal(OBJ_TREND)); 
    الوظيفة ObjectType:

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


    فمثلا الكود التالي يعطينا نوع الكائن الرسومي الذي اسمه Line.

    كود PHP:
    Print(ObjectType("Line")); 
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  3. #108
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    بقي شرح بسيط وننتهي من درس الكائنات الرسومية

    الوظيفة ObjectSet :


    هذه الوظيفة تقوم بتغيير مواصفات الكائن الرسومي على الشارت وتستخدم على الشكل التالي:

    كود PHP:
    bool ObjectSetstring nameint indexdouble value
    البارامتر الأول هو اسم الكائن الرسومي الذي نريد تغيير إحدى خصائصه.

    البارامتر الثاني هو رقم الخاصية التي نريد تغيير قيمتها.


    البارامتر الثالث هي القيمة الجديدة للخاصية.

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

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

    كود PHP:
    OBJPROP_PRICE1            1
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_TIME2              2
    لتغيير موقع الكائن الزمني الثاني
    .
    OBJPROP_PRICE2            3
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_TIME3              4
    لتغيير موقع الكائن الزمني الثالث
    .
    OBJPROP_PRICE3            5
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_COLOR            6
    لتغيير لون الكائن الرسومي
    .
    OBJPROP_STYLE             7
    لتغيير طريقة رسم الكائن الرسومي وهي تأخذ إحدى الحالات التالية
    STYLE_SOLIDSTYLE_DASHSTYLE_DOT
    STYLE_DASHDOTSTYLE_DASHDOTDOT 
    OBJPROP_WIDTH             8
    لتغيير عرض وسماكة الخط وتأخذ قيم من 1 إلى 5 
    .
    OBJPROP_BACK              9
    لجعل الخلفية مصبوغة بالكامل أو مجرد حدود فقط
    .
    OBJPROP_RAY               10
    لتغيير خاصية RAY والتي تجعل الترند ممتدا إلى خارج الشارت أو فقط خط بين نقطيتن
    .
    OBJPROP_ANGLE           13 
    لتغيير زاوية رسم الكائن الرسومي أو زاوية الاستدارة
    .
    OBJPROP_ARROWCODE 14
    لتغيير رمز السهم للكائن الرسومي الذي يظهر أشكال محددة أو أسهم
    .
    OBJPROP_TIME*****S 15
    لتغيير خاصية ظهور الكائن على بعض الفريمات فقط وليس كلها
    .OBJPROP_FONTSIZE     100
    لتغيير حجم الفونت للكائنات التي تظهر نصا داخلها
    .
    OBJPROP_CORNER       101
    لتغيير زاوية تموضع كائن البطاقة النصية وهي تأخذ قيم من 0 إلى ثلاثة حيث الصفر هي الزاوية العلوية اليسارية للشارت وهكذا

    OBJPROP_XDISTANCE   102
    لتغيير قيمة المحور X للكائن البطاقة النصية وهذه القيمة بالبيكسل
    .
    OBJPROP_YDISTANCE   103
    لتغيير قيمة المحور Y للكائن البطاقة النصية وهذه القيمة بالبيكسل
    .
    OBJPROP_LEVELCOLOR  201
    لتغيير ألوان مستويات الكائن الرسومي
    .
    OBJPROP_LEVELSTYLE   202
    لتغيير طريقة رسم خطوط المستويات
    .OBJPROP_LEVELWIDTH   203
    لتغيير عرض خطوط المستويات

    أمثلة:

    كود PHP:
    // لتغيير تموضع الكائن الزمني الأول
    ObjectSet("MyTrend"OBJPROP_TIME1Time[0]);
    // لتغيير عرض خط الترند إلى 3
    ObjectSet("MyTrend"OBJPROP_WIDTH3);
    // لجعل الكائن يظهر فقط على الفريم ربع الساعة والساعة
    ObjectSet("MyObject"OBJPROP_TIME*****SOBJ_PERIOD_M15 OBJ_PERIOD_H1); 
    الوظيفة ObjectGet
    وهي تقوم بإعادة قيمة أية خاصية لأي كائن رسومي موجود على الشارت. وهي معاكسة لمهمة الوظيفة السابقة ObjectSet.


    في المصطلحات البرمجية فإن Set دائما تعني تغيير قيمة. و Get تعني الحصول على قيمة.

    فمثلا لو أردنا معرفة عرض خط الترند الذي اسمه MyTrend فإننا نستخدم الكود التالي:

    كود PHP:
    Print(ObjectGet("MyTrend"OBJPROP_WIDTH));
    // النتيجة ستكون 3 
    وهي تستخدم نفس الجدول السابق تماما.

    الوظيفة ObjectSetText:


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

    وهي تقوم بتغيير النص الظاهر عليهما مع تحديد لحجم واسم ولون الخط المستخدم.

    وهي تستخدم على الشكل التالي:

    كود PHP:
    bool ObjectSetTextstring namestring textint font_sizestring font=NULLcolor text_color=CLR_NONE
    وطريقة استخدامها واضحة جدا والمثال التالي يشرح بشكل أفضل:

    كود PHP:
    ObjectSetText("text_object""Hello world!"10"Times New Roman"Green); 
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  4. #109
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    مؤشر Waddah Attar Strong Level بنسخته القديمة مثال جيد عن التعامل مع الكائنات الرسومية .

    والشرح الخاص بها موجود في نص الكود التالي:

    كود PHP:
    #property copyright "Copyright © 2007, Waddah Attar"
    #property link      [email protected]
    //---- 
    #property indicator_chart_window
    #property indicator_buffers 8
    #property indicator_color1 Red
    #property indicator_color2 Green
    #property indicator_color3 Blue
    #property indicator_color4 Red
    #property indicator_color5 Green
    #property indicator_color6 Blue
    #property indicator_color7 Orange
    #property indicator_color8 Orange
    extern bool BackTest=false;
    extern bool DrawMonth=true;
    extern bool DrawWeek=true;
    extern bool DrawDay=true;
    extern bool DrawH4=false;
    //---- buffers
    double P1Buffer[];
    double P2Buffer[];
    double P3Buffer[];
    double P4Buffer[];
    double P5Buffer[];
    double P6Buffer[];
    double P7Buffer[];
    double P8Buffer[];
    //---- 
    int levelPeriod1 PERIOD_D1;
    int levelPeriod2 PERIOD_H4;
    int levelPeriod3 PERIOD_W1;
    int levelPeriod4 PERIOD_MN1;
    bool FixSunday;
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
       
    SetIndexBuffer(0P1Buffer);
       
    SetIndexBuffer(1P2Buffer);
       
    SetIndexBuffer(2P3Buffer);
       
    SetIndexBuffer(3P4Buffer);
       
    SetIndexBuffer(4P5Buffer);
       
    SetIndexBuffer(5P6Buffer);
       
    SetIndexBuffer(6P7Buffer);
       
    SetIndexBuffer(7P8Buffer);
    //---- 
       
    SetIndexStyle(0DRAW_LINESTYLE_SOLID2);
       
    SetIndexStyle(1DRAW_LINESTYLE_SOLID1);
       
    SetIndexStyle(2DRAW_LINESTYLE_SOLID3);
       
    SetIndexStyle(3DRAW_LINESTYLE_SOLID2);
       
    SetIndexStyle(4DRAW_LINESTYLE_SOLID1);
       
    SetIndexStyle(5DRAW_LINESTYLE_SOLID3);
       
    SetIndexStyle(6DRAW_LINESTYLE_SOLID4);
       
    SetIndexStyle(7DRAW_LINESTYLE_SOLID4);
    //---- 
       
    Comment("Strong Level By eng.Waddah Attar ");
       
    FixSunday=false;
       for(
    int i 0<7i++)
         {
           if (
    TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i))==0)
           {
             
    FixSunday=true;
           }
         }
       return(
    0);
      }
    //+------------------------------------------------------------------+
    //| Custor indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
     
    // تنظيف الشارت من الكائنات الرسومية التي ولدها هذا المؤشر وهي عملية ضرورية لمؤشر احترافي
    // والحذف يكون طبعا فقط للكائنات الخاصة به وليس حذف عام
       
    ObjectDelete("level1");
       
    ObjectDelete("txtlevel1");
       
    ObjectDelete("level2");
       
    ObjectDelete("txtlevel2");
       
    ObjectDelete("level3");
       
    ObjectDelete("txtlevel3");
       
    ObjectDelete("level4");
       
    ObjectDelete("txtlevel4");
       
    ObjectDelete("level5");
       
    ObjectDelete("txtlevel5");
       
    ObjectDelete("level6");
       
    ObjectDelete("txtlevel6");
       
    ObjectDelete("level7");
       
    ObjectDelete("txtlevel7");
       
    ObjectDelete("level8");
       
    ObjectDelete("txtlevel8");
    //---- 
       
    Comment("");
       return(
    0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
       if(
    DrawDayDrawPeriod1();
       if(
    DrawH4DrawPeriod2();
       if(
    DrawWeekDrawPeriod3();
       if(
    DrawMonthDrawPeriod4();
       if (
    BackTest==false)
       {
         for(
    int i=1Barsi++)
         {
           
    P1Buffer[i]=P1Buffer[0];
           
    P2Buffer[i]=P2Buffer[0];
           
    P3Buffer[i]=P3Buffer[0];
           
    P4Buffer[i]=P4Buffer[0];
           
    P5Buffer[i]=P5Buffer[0];
           
    P6Buffer[i]=P6Buffer[0];
           
    P7Buffer[i]=P7Buffer[0];
           
    P8Buffer[i]=P8Buffer[0];
         }
       }
       return(
    0);
      }
     
    int DrawPeriod1()
    {
       
    int iiicounted_bars IndicatorCounted();
       
    double c1c2dc;
       
    string TrendType;
    //---- check for possible errors
       
    if(counted_bars 0
           return(-
    1);
    //---- last counted bar will be recounted
       
    if(counted_bars 0
           
    counted_bars--;  
       
    int limit Bars counted_bars;
    //---- 
       
    for(limit 1>= 0i--)
         {
           
    ii iBarShift(Symbol(), levelPeriod1Time[i],true);
           if (
    TimeDayOfWeek(Time[i])==&& FixSunday==true)
           {
             
    ii=ii+1;
           }
           if(
    ii != -1)
             {
               
    c1 iClose(Symbol(), levelPeriod1ii 1);
               
    c2 iClose(Symbol(), levelPeriod1ii 2);
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    c2 iClose(Symbol(), levelPeriod1ii 3);
                 }
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    dc c1;
                 }
               
    //----
               
    P1Buffer[i] = c1-dc;
               
    P4Buffer[i] = c1+dc;
               if (
    P1Buffer[i]<P4Buffer[i])
               {
                 
    TrendType="Day Up                           ";
               }
               else
               {
                 
    TrendType="Day Down                         ";
               }
     
    // عملت وظيفتين تختصر الكثير من كتابة الكود لوضع كائن سعري وكائن نصي
               
    SetPrice("level1"Time[i],P1Buffer[i], Red);
               
    SetText("txtlevel1"TrendTypeTime[i], P1Buffer[i], Red);
     
               
    SetPrice("level4"Time[i],P4Buffer[i], Red);
               
    SetText("txtlevel4"TrendTypeTime[i], P4Buffer[i], Red);
               
    //----
            
    }
         }
    //----
       
    return(0);
    }
    int DrawPeriod2()
    {
       
    int iiicounted_bars IndicatorCounted();
       
    double c1c2dc;
       
    string TrendType;
    //---- check for possible errors
       
    if(counted_bars 0
           return(-
    1);
    //---- last counted bar will be recounted
       
    if(counted_bars 0
           
    counted_bars--;  
       
    int limit Bars counted_bars;
    //---- 
       
    for(limit 1>= 0i--)
         {
           
    ii iBarShift(Symbol(), levelPeriod2Time[i],true);
           if(
    ii != -1)
             {
               
    c1 iClose(Symbol(), levelPeriod2ii 1);
               
    c2 iClose(Symbol(), levelPeriod2ii 2);
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    c2 iClose(Symbol(), levelPeriod2ii 3);
                 }
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    dc c1;
                 }
               
    //----
               
    P2Buffer[i] = c1-dc;
               
    P5Buffer[i] = c1+dc;
               if (
    P2Buffer[i]<P5Buffer[i])
               {
                 
    TrendType="H4 Up                       ";
               }
               else
               {
                 
    TrendType="H4 Down                     ";
               }
               
    SetPrice("level2"Time[i],P2Buffer[i], Green);
               
    SetText("txtlevel2"TrendTypeTime[i], P2Buffer[i], Green);
               
    SetPrice("level5"Time[i],P5Buffer[i], Green);
               
    SetText("txtlevel5"TrendTypeTime[i], P5Buffer[i], Green);
               
    //----
            
    }
         }
    //----
       
    return(0);
    }
    int DrawPeriod3()
    {
       
    int iiicounted_bars IndicatorCounted();
       
    double c1c2dc;
       
    string TrendType;
    //---- check for possible errors
       
    if(counted_bars 0
           return(-
    1);
    //---- last counted bar will be recounted
       
    if(counted_bars 0
           
    counted_bars--;  
       
    int limit Bars counted_bars;
    //---- 
       
    for(limit 1>= 0i--)
         {
           
    ii iBarShift(Symbol(), levelPeriod3Time[i],true);
           if(
    ii != -1)
             {
               
    c1 iClose(Symbol(), levelPeriod3ii 1);
               
    c2 iClose(Symbol(), levelPeriod3ii 2);
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    c2 iClose(Symbol(), levelPeriod3ii 3);
                 }
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    dc c1;
                 }
               
    //----
               
    P3Buffer[i] = c1-dc;
               
    P6Buffer[i] = c1+dc;
               if (
    P3Buffer[i]<P6Buffer[i])
               {
                 
    TrendType="Week Up                           ";
               }
               else
               {
                 
    TrendType="Week Down                         ";
               }
               
    SetPrice("level3"Time[i],P3Buffer[i], Blue);
               
    SetText("txtlevel3"TrendTypeTime[i], P3Buffer[i], Blue);
               
    SetPrice("level6"Time[i],P6Buffer[i], Blue);
               
    SetText("txtlevel6"TrendTypeTime[i], P6Buffer[i], Blue);
               
    //----
            
    }
         }
    //----
       
    return(0);
    }
    int DrawPeriod4()
    {
       
    int iiicounted_bars IndicatorCounted();
       
    double c1c2dc;
       
    string TrendType;
    //---- check for possible errors
       
    if(counted_bars 0
           return(-
    1);
    //---- last counted bar will be recounted
       
    if(counted_bars 0
           
    counted_bars--;  
       
    int limit Bars counted_bars;
    //---- 
       
    for(limit 1>= 0i--)
         {
           
    ii iBarShift(Symbol(), levelPeriod4Time[i],true);
           if(
    ii != -1)
             {
               
    c1 iClose(Symbol(), levelPeriod4ii 1);
               
    c2 iClose(Symbol(), levelPeriod4ii 2);
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    c2 iClose(Symbol(), levelPeriod4ii 3);
                 }
               
    //----
               
    dc c1 c2;
               
    //----
               
    if(dc == 0)
                 {
                   
    dc c1;
                 }
               
    //----
               
    P7Buffer[i] = c1-dc;
               
    P8Buffer[i] = c1+dc;
               if (
    P7Buffer[i]<P8Buffer[i])
               {
                 
    TrendType="Month Up                           ";
               }
               else
               {
                 
    TrendType="Month Down                         ";
               }
               
    SetPrice("level7"Time[i],P7Buffer[i], Orange);
               
    SetText("txtlevel7"TrendTypeTime[i], P7Buffer[i], Orange);
               
    SetPrice("level8"Time[i],P8Buffer[i], Orange);
               
    SetText("txtlevel8"TrendTypeTime[i], P8Buffer[i], Orange);
               
    //----
            
    }
         }
    //----
       
    return(0);
    }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+ 
     
    //  هذه الوظيفة لوضع كائن سعري
    //  نعطيها اسم الكائن والزمن والسعر واللون
    void SetPrice(string namedatetime Tmdouble Prccolor clr)
      {
    //  في حال عدم وجود الكائن فيجب إنشائه للمرة الأولى
       
    if(ObjectFind(name) == -1)
         {
           
    ObjectCreate(nameOBJ_ARROW0TmPrc);
           
    ObjectSet(nameOBJPROP_COLORclr);
           
    ObjectSet(nameOBJPROP_WIDTH1);
           
    ObjectSet(nameOBJPROP_ARROWCODESYMBOL_RIGHTPRICE);
         }
       else
         {
    //  أما في حال وجوده سابقا فيجب تعديل مواصفاته فقط
           
    ObjectSet(nameOBJPROP_TIME1Tm);
           
    ObjectSet(nameOBJPROP_PRICE1Prc);
           
    ObjectSet(nameOBJPROP_COLORclr);
           
    ObjectSet(nameOBJPROP_WIDTH1);
           
    ObjectSet(nameOBJPROP_ARROWCODESYMBOL_RIGHTPRICE);
         } 
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+ 
     
    //  هذه الوظيفة تنشيء كائن نصي باسم محدد ونص محدد وموقع هذا الكائن ولونه
    void SetText(string name,string txt,datetime Tm,double Prc,color clr)
      {
    //  في حال عدم وجوده قم بإنشائه بالمواصفات المحدد
       
    if(ObjectFind(name) == -1)
         {
           
    ObjectCreate(nameOBJ_TEXT0TmPrc);
           
    ObjectSetText(nametxt10"Times New Roman"clr);
           
    ObjectSet(nameOBJPROP_CORNER2);
         }
       else
         {
    //  في حال وجوده غير خصائصه فقط
           
    ObjectSet(nameOBJPROP_TIME1Tm);
           
    ObjectSet(nameOBJPROP_PRICE1Prc);
           
    ObjectSetText(nametxt10"Times New Roman"clr);
           
    ObjectSet(nameOBJPROP_CORNER2);
         } 
      }
    //+------------------------------------------------------------------+ 
    آخر تعديل بواسطة وضاح عطار ، 22-01-2008 الساعة 02:59 AM
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  5. #110
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    جزر الملديف
    المشاركات
    3,000

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

    اخي وضاح

    مجهود رائع وجبار تُشكر عليه

    ولكن هناك خطأ بسيط جدا في الملاحظات (خطأ غير مقصود بالتأكيد)

    اقتباس المشاركة الأصلية كتبت بواسطة وضاح عطار مشاهدة المشاركة

    كود PHP:
    OBJPROP_PRICE1            1
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_TIME2              2
    لتغيير موقع الكائن الزمني الثاني
    .
    OBJPROP_PRICE2            3
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_TIME3              4
    لتغيير موقع الكائن الزمني الثالث
    .
    OBJPROP_PRICE3            5
    لتغيير موقع الكائن السعري الأول

    والصحيح هو


    كود PHP:
    OBJPROP_PRICE1            1
    لتغيير موقع الكائن السعري الأول
    .
    OBJPROP_TIME2              2
    لتغيير موقع الكائن الزمني الثاني
    .
    OBJPROP_PRICE2            3
    لتغيير موقع الكائن السعري الثاني
    .
    OBJPROP_TIME3              4
    لتغيير موقع الكائن الزمني الثالث
    .
    OBJPROP_PRICE3            5
    لتغيير موقع الكائن السعري الثالث

    وأريد ان اسألك عن تغيير موقع الكائن الزمني الاول (ما هو رقمه) لأنه ليس موجود بالاعلى

    تقبل تحياتي

    وشكراً جزيلاً لك لما قدمته وتقدمه لاخوانك

    وجزاك الله عنا كل خير
    آخر تعديل بواسطة wajdyss ، 22-01-2008 الساعة 10:35 PM
    توقيع العضو
    مبرمج MT4 , MT5

    يمكنكم الاستماع للقرآن الكريم 24/7
    https://forum.arabictrader.com/t265331.html

  6. #111
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    أهلا بك أخي وجدي


    نعم ملاحظتك صحيحة والخطأ غير مقصود طبعا .


    الثوابت هي :

    كود PHP:
    OBJPROP_TIME1            0
    OBJPROP_PRICE1            1
    OBJPROP_TIME2              2
    OBJPROP_PRICE2            3
    OBJPROP_TIME3              4
    OBJPROP_PRICE3            5 
    شكرا لك
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  7. #112
    الصورة الرمزية adeel
    adeel غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Dec 2007
    المشاركات
    913

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

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

  8. #113
    الصورة الرمزية shm8378
    shm8378 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2007
    العمر
    46
    المشاركات
    20

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

    جزاك الله عنا خير الثواب

  9. #114
    الصورة الرمزية bay63
    bay63 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2007
    المشاركات
    42

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

    لااله الا الله محمد رسول الله صلى الله و عليه و سلم و على آله و صحبه اجمعين

  10. #115
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    إلى الآن أعتبر أن الدورة السابقة قد غطت معظم اللغة MQL4 وهي كافية جدا لتعلم صناعة المؤشرات بفعالية كبيرة .

    استعدوا الآن لدورة شاملة عن صناعة الاكسبيرتات وتقنياتها المختلفة .

    بالتوفيق إن شاء الله
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  11. #116
    الصورة الرمزية mercury_man
    mercury_man غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jul 2007
    الإقامة
    روسيا - سانت بطرسبورغ
    المشاركات
    1,975

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

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

    استعدوا الآن لدورة شاملة عن صناعة الاكسبيرتات وتقنياتها المختلفة .

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

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

  12. #117
    الصورة الرمزية الماجد
    الماجد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2005
    المشاركات
    158

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

    السلام عليكم

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

    لدي بعض الأسئلة في المؤشرات

    1. بالنسبه للرسومات.. فهل استطيع انا اخبر المؤشر بأن يرسم Trend Line لكل i ويعطي كل ترند اسم جديد خاص به ؟؟
    2. كيف استطيع تحديد أعلى سعر وأدنى سعر خلال اليوم عند تحقق شرط معين وتكون الاشاره حينها ثابته ؟
    مثال للسؤال الثاني :
    عندما يتحرك السعر بعد الافتتاح 100 نقطة ينتظر إغلاق شمعة الساعه بعد تحقق الشرط ثم يقوم برسم خط من النوع DRAW_LINE فوق أعلى سعر ورسم خط آخر عند أدنى سعر بحيث تكون الخطوط على الهاي واللو بغض النظر عن الشرط الأساسي
    يعني لما يتحقق الشرط 100 نقطة يبدأ برسم الخطوط على الهاي واللو ويتابعها لحين اغلاق الشمعه الحالية..
    فقد يتحرك السعر بعد تحقق الشرط 20 نقطه للأعلى وعندها يصبح الفرق بين الهاي واللو 120 نقطه

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

    تحياتي لك
    أخوك عادل الماجد

  13. #118
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    اقتباس المشاركة الأصلية كتبت بواسطة mercury_man مشاهدة المشاركة
    بارك الله فيك اخي الكريم وضاح عطار فعلا دورة كبيرة من مشرف كبير


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

    أهلا بك أخي العزيز وشكرا لك

    هناك موضوع للأسئلة البرمجية مثبت أيضا يمكن لأي شخص طرح سؤاله المحدد هناك

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

    استعدوا للدورة المقبلة إن شاء الله
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  14. #119
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

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

    اقتباس المشاركة الأصلية كتبت بواسطة الماجد مشاهدة المشاركة
    السلام عليكم

    وعليكم السلام

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

    لدي بعض الأسئلة في المؤشرات

    1. بالنسبه للرسومات.. فهل استطيع انا اخبر المؤشر بأن يرسم Trend Line لكل i ويعطي كل ترند اسم جديد خاص به ؟؟

    نعم .. فعندما تريد تسمية الترند يمكنك إضافة المتحول i إلى اسمه لينتج لك اسم فريد للترند .


    2. كيف استطيع تحديد أعلى سعر وأدنى سعر خلال اليوم عند تحقق شرط معين وتكون الاشاره حينها ثابته ؟
    مثال للسؤال الثاني :
    عندما يتحرك السعر بعد الافتتاح 100 نقطة ينتظر إغلاق شمعة الساعه بعد تحقق الشرط ثم يقوم برسم خط من النوع DRAW_LINE فوق أعلى سعر ورسم خط آخر عند أدنى سعر بحيث تكون الخطوط على الهاي واللو بغض النظر عن الشرط الأساسي
    يعني لما يتحقق الشرط 100 نقطة يبدأ برسم الخطوط على الهاي واللو ويتابعها لحين اغلاق الشمعه الحالية..
    فقد يتحرك السعر بعد تحقق الشرط 20 نقطه للأعلى وعندها يصبح الفرق بين الهاي واللو 120 نقطه

    يمكنك استخدام الوظيفة التالية لمعرفة الهاي اليومي :

    كود PHP:
    double h;
     
    h=iHigh("GBPUSD",PERIOD_D1,0); 


    وهناك وظيفة iLow لمعرفة اللو ويمكنك استخدامها بنفس الطريقة .

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

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

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

    تحياتي لك
    أخوك عادل الماجد

    الإجابة في المرفقات
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  15. #120
    الصورة الرمزية الماجد
    الماجد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2005
    المشاركات
    158

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

    الله يعطيك العافيه استاذي

    ولكن في الحقيقه لم تفهم ما اقصده في السؤال الثاني
    سأوضح أكثر :

    أريد من المؤشر ان يرسم لي خط على الهاي وخط على اللو
    وبعد تحقق شرط معين يقوم بتثبيت الخطوط عند الهاي ساعة تحقق الشرط وعند اللو ساعة تحقق الشرط
    مثال :
    شرطنا أن يكون الفرق بين الهاي واللو ( الرينج ) لليوم الحالي أكبر من أو يساوي 100
    فإذا تحقق الشرط يتم وضع الخطوط عند الهاي واللو لليوم الحالي وفي الساعه الحالية
    افتتح اليوم عند 1.9500
    إرتفع السعر إلى 1.9550
    ثم هبط إلى 1.9440
    High - Low = 1.9550 - 1.9440 = 110
    ^^^ << لاحظ هنا تحقق الشرط وهو أن يكون الرينج أكبر من 100
    بعد إغلاق شمعة الساعه يقوم برسم خط على الهاي 1.9550
    ويقوم برسم خط آخر على اللو عند 1.9440
    وتستمر هذه الإشارة مرسومه عند هذين المستويين حتى ولو هبط الزوج أكثر من 1.9440
    وبالطبع مع بدية اليوم الجديد نأخذ الهاي واللو للشمعه الحالية لحين تحقق الشرط ثم ثبات الإشارة

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

    تحياتي لك
    أخوك عادل الماجد

صفحة 8 من 16 الأولىالأولى ... 234567891011121314 ... الأخيرةالأخيرة

المواضيع المتشابهه

  1. للمبتدأين (حلل وتعلم) ضع تحليلاتك وتعلم من اخطائك
    By BahraiN in forum استفسارات وأسئلة المبتدئين
    مشاركات: 248
    آخر مشاركة: 14-05-2012, 10:27 PM
  2. اريد كتاب به مفاتيح طرق الاحتراف
    By عزيز in forum استفسارات وأسئلة المبتدئين
    مشاركات: 13
    آخر مشاركة: 29-08-2006, 03:48 AM

الاوسمة لهذا الموضوع


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17