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

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

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

    نعم أخي أنا فاهم عليك أن قصدك المزاح فقط .

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

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

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

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

    في هذا الدرس سنقوم بإذن الله بشرح المؤشرات المبيتة والداخلية والاستفادة منها وقراءة قيمها على أي شمعة على الشارت.

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

    المؤشرات المبيتة كلها عبارة عن وظائف تبدأ بالحرف i مثل iMA لمؤشر الموفينغ أفريج و iRSI لمؤشر RSI وهكذا.

    لكل وظيفة مؤشر هناك عدة مدخلات ( بارامترات ) يجب أن نتكبها بشكل صحيح حتى تعطينا الوظيفة القراءة الصحيحة.

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

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

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

    وهي أيضا توفر علينا الوقت والجهد وتصحيح الأخطاء وكبر حجم الكود.

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

    فمثلا مؤشر الانفجار السعري يعتمد على مؤشرين هما البولنغر باند والماكد.

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

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


    كما قلنا فإن أي مؤشر هو عبارة عن وظيفة Function داخلية وفرتها لنا لغة MQL4 .

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


    نبدأ أولا مع مؤشر معروف وبسيط وهو المتوسط المتحرك Moving Average

    اسم الوظيفة هو iMA ولها البارامترات التالية:

    كود PHP:
    double iMA(string symbolint timefra meint periodint ma_shiftint ma_methodint applied_priceint shift
    شرح البارامترات المطلوبة لعمل هذه الوظيفة:

    - اسم الزوج Symbol: وهو قيمة نصية ولدينا ثلاثة احتمالات لكتابة اسم الزوج وهي:


    1- أن نكتبه بشكل مباشر مثل "GBPUSD" بأحرف كبيرة وهذه الحالة تكون عندما يكون المؤشر الذي نصممه يعمل فقط مع هذا الزوج وليس مع الزوج الذي وضع المؤشر عليه.

    ففي بعض الحالات قد نضطر لمعرفة قيمة المتوسط المتحرك لزوج محدد وليس للزوج المحدد على الشارت.

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

    2- أن نضع الثابت NULL والذي يعني أننا نريد حساب المتوسط للزوج الموجود على الشارت مهما كان نوعه.

    3- أن نضع المتحول ()Symbol وهو متحول داخلي يعطينا اسم الزوج الحالي الموجود على الشارت.

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

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


    - نوع الفريم المستخدم timefra me: وهو قيمة رقمية تحدد لوظيفة نوع الفريم المستخدم وله أيضا عدة حالات:

    1- صفر ( 0 ) وهذا يعني أننا نريد حساب المتوسط المتحرك للفريم الحالي الموجود على الشارت.

    2- رقم 1 وهذا يعني أننا نريد حساب المتوسط المتحرك لفريم الدقيقة بغض النظر عن الفريم الحالي.

    3- رقم 5 وهذا يعني أننا نريد حساب المتوسط المتحرك لفريم الخمس دقائق بغض النظر عن الفريم الحالي.

    4- رقم 15 للربع ساعة و 30 للنصف ساعة و 60 للساعة و 240 للأربع ساعات و 1440 لليوم و 10080 للاسبوع و 43200 للشهر.

    5- أن نكتب بدلا من الأرقام السابقة ثوابت تدل عليها ولها نفس التأثير ولكن تكون أوضح للقراءة والتعديل على الكود وهي:

    كود PHP:
    PERIOD_M1   1   1 minute.
    PERIOD_M5   5   5 minutes.
    PERIOD_M15  15   15 minutes.
    PERIOD_M30   30   30 minutes.
    PERIOD_H1     60   1 hour.
    PERIOD_H4     240  4 hour.
    PERIOD_D1     1440   Daily.
    PERIOD_W1     10080  Weekly.
    PERIOD_MN1   43200    Monthly
    ويجب كتابتها بأحرف كبيرة كما هي مكتوبة بالجدول السابق تماما.


    - الفترة period : وهي قيمة رقمية تحدد الفترة المستخدمة لحساب المتوسط هل هي 14 أو 20 وهكذا.


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

    - إزاحة المتوسط ma_shift : وهي قيمة رقمية سالبة أو موجبة تقوم بإزاحة المتوسط إلى اليمين أو اليسار بمقدار محدد من الشموع.

    وهذه الخاصية أيضا تجدها في خصائص المؤشر في برنامج التداول نفسه.

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

    - طريقة حساب قيم المتوسط ma_method : وهي قيمة رقمية يمكن كتابتها كأرقام 0 - 1 - 2 - 3 حيث:

    1- الرقم صفر للمتوسط البسيط Simple .
    2- الرقم واحد للمتوسط الأسي Exponential.
    3- الرقم اثنان للمتوسط المنعم Smoothed.
    4- الرقم ثلاثة للمتوسط الموزون Weighted.

    يمكن أيضا كتابة ثوابت خاصة حسب الجدول المرفق:

    كود PHP:
    MODE_SMA      0      Simple moving average,
    MODE_EMA      1      Exponential moving average,
    MODE_SMMA   2      Smoothed moving average,
    MODE_LWMA   3       Linear weighted moving average
    يمكنك كتابة رقم مجرد أو اسم الثابت ويفضل طبعا كتابة الثابت لسهولة قراءة الكود وتعديله.

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


    - السعر الذي سيطبق عليه حساب المتوسط applied_price : وهو قيمة رقمية تحدد نوع السعر الذي سيطبق عليه حساب المتوسط. هل هو سعر الإغلاق أو الفتح أو الأعلى وهكذا.

    وهو له القيم التالية:

    كود PHP:
    PRICE_CLOSE          0         Close price.
    PRICE_OPEN             1        Open price.
    PRICE_HIGH              2        High price.
    PRICE_LOW               3        Low price.
    PRICE_MEDIAN         4        Median price, (high+low)/2.
    PRICE_TYPICAL       5         Typical price
    , (high+low+close)/3.
    PRICE_WEIGHTED   6        Weighted close price
    , (high+low+close+close)/4. 
    يمكن طبعا كتابة رقم أو اسم الثابت والأسعار فوق واضحة طبعا.


    - رقم الشمعة shift : وهو قيمة رقمية تحدد رقم الشمعة على الشارت الذي سنحسب لها المتوسط المتحرك.


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

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


    أمثلة توضيحية:

    كود PHP:
    double myMA;
    myMA=iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,0); 
    المثال السابق يحسب لنا قيمة المتوسط المتحرك البسيط بفترة 14 للزوج الحالي والفريم الحالي المستخدم على الشارت.

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


    كود PHP:
    double myMA;
    myMA=iMA(NULL,PERIOD_M30,30,0,MODE_EMA,PRICE_HIGH,5); 
    المثال السابق يحسب لنا قيمة المتوسط الأسي بفترة 30 للزوج الحالي وللفريم نصف ساعة على سعر الهاي.

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

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

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

    شرح بعض الوظائف الأخرى للمؤشرات القياسية المبيتة

    مؤشر البولنغر باند:


    اسم وظيفته هي iBands ولها الصيغة التالية:

    كود PHP:
    double iBandsstring symbolint timef rameint periodint deviationint bands_shiftint 
    applied_price
    int modeint shift
    البارامترات الثلاثة الأولى شرحت بالسابق وهي لها نفس الاستخدام.

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


    البارامتر bands_shift وهو قيمة رقمية تمثل انزياح المؤشر عن السعر وهي أيضا مشروحة سابقا.

    السعر المطبق أيضا شرحت سابقا.

    البارامتر mode له قيمتان فقط تحددان نوع القيمة المقروؤة هل هي للخط العلوي للبولنغر أم الخط السفلي والقيمتان هما:

    MODE_UPPER 1 Upper line.
    MODE_LOWER 2 Lower line.


    فإذا أردنا قراءة قيمة الخط العلوي نضع 1 أو MODE_UPPER ونضع 2 أو MODE_LOWER إذا أردنا قراءة قيمة الخط السفلي.

    الخط المتوسط لا يتم قرائته مباشرة من خلال هذه الوظيفة لأنه ببساطة هو متوسط متحرك بسيط له نفس الفترة.

    ونقرأ قيمته من من الوظيفة iMA المشروحة سابقا.

    مؤشر ADX واسم وظيفته iADX

    وله الصيغة التالية:

    كود PHP:
    double iADXstring symbolint time*****, int periodint applied_priceint modeint shift
    كل البارامترات السابقة مشروحة ولها نفس المعنى
    ولكن الفرق هي في قيم البارامتر mode حيث تأخذ القيم التالية:


    MODE_MAIN 0 Base indicator line.
    MODE_PLUSDI 1 +DI indicator line.
    MODE_MINUSDI 2 -DI indicator line.


    حيث مؤشر ADX له ثلاثة خطوط : الخط الرئيسي والخط الموجب والخط السالب ولكل مؤشر نريد قراءة قيمته نضع القيمة المناسبة في المتحول mode

    هذه هي الفكرة الرئيسية من وظائف المؤشرات القياسية المبيتة في اللغة نفسها.

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

    تقنيات مختلفة مفيدة مع المؤشرات:

    - غالبا يتم إخراج بعض قيم المتحولات كخصائص يستطيع المستخدم تغييرها من خارج كود المؤشر.


    أي متحول نريد جعله خاصية خارجية نضع قبل أمر تعريفه التعبير extern ( اختصار external خارجي ).

    فمثلا المتحول

    كود PHP:
    double MyNum=6
    لن يستطيع المستخدم تغيير قيمة هذا المتحول من خارج الكود.
    بينما إذا أردنا إتاحة إمكانية تغيير قيمة هذا المتحول من خلال خصائص المؤشر فإننا نكتب الكود على الشكل التالي:


    كود PHP:
    extern double MyNum=6
    والآن يستطيع المستخدم تغيير قيمة هذا المتحول خارجيا.
    يستفاد من هذه الميزة بشكل عام جعل المؤشر مرن مع احتياجات المستخدم.


    كما أنه يجب الموازنة بين المرونة وبين كثرة الخصائص الخارجية التي قد تربك المستخدم أحيانا

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

    - تسريع عمل المؤشر .

    من الطبيعي أن نقوم بحساب قيم المؤشر لكل الشمعات الموجودة على الشارت عند تغير السعر اللحظي.

    وذلك عبر حلقة تمر على كل الشمعات .

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

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

    وذلك بالاستعانة بالوظيفة IndicatorCounted والتي تعطينا عدد الشمعات التي حسبنا عليها المؤشر.

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

    والكود هو التالي:

    كود PHP:
    int    limiticounted_bars IndicatorCounted();
    //  إذا لم يكن هناك شمعات جديدة اخرج دون حساب
       
    if(counted_bars 0
           return(-
    1);
    //  إذا كان هناك شمعات جديدة احسب مقدار الشموع الجديدة فقط
       
    if(counted_bars 0
           
    counted_bars--;
       
    limit Bars counted_bars;
    //  الحلقة تكون من عدد الشموع الجديدة المكونة وحتى الشمعة الحالية رقم صفر
       
    for(limit 1>= 0i--)
       {
        
    ///  حساب المؤشر
       

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


    يتم هذا الأمر بواسطة الوظيفة IndicatorShortName وتوضع هذه الوظيفة في الوظيفة init.
    ويتم وضع الاسم وقيم الخصائص في مدخلات هذه الوظيفة.

    مثال:

    كود PHP:
    IndicatorShortName("Indicator Name :  Period= " MyPeriod ); 
    حيث من المفروض أن تكون MyPeriod خاصية معرفة ولها قيمة.
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  4. #79
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,959

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

    جزاك الله كل خير
    توقيع العضو
    مبرمج MT4 , MT5

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

  5. #80
    الصورة الرمزية ماجد كو
    ماجد كو غير متواجد حالياً مـتداول مـميـز
    تاريخ التسجيل
    Sep 2004
    المشاركات
    2,010

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

    جزاك الله خيرا وعوضك اجرا وزاد من رزقك ان شاء الله

  6. #81
    الصورة الرمزية nas211
    nas211 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2007
    المشاركات
    45

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

    اشكر لك فكرك الراقي

    و انا من اشد المتابعين لك

    والله يوفقك

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

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

    شكرا لجميع الإخوة المتابعين

    هل يوجد أي استفسارات أو نقاط غير مفهومة حتى الآن ؟؟

    وذلك قبل أن نكمل بشكل أعمق .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  8. #83
    الصورة الرمزية shadoon2
    shadoon2 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2006
    الإقامة
    أوكرانيا
    المشاركات
    156

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

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

    هل يوجد أي استفسارات أو نقاط غير مفهومة حتى الآن ؟؟

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

  9. #84
    الصورة الرمزية shadoon2
    shadoon2 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2006
    الإقامة
    أوكرانيا
    المشاركات
    156

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

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

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

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

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

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

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

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

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

    وبما أني أريد أن يظهر المؤشر على نافذة منفصلة قررت أن أستفيد من مؤشر البولنغر بطريقة أخرى.

    وهي أن أرسم الانتفاخ والتضيق على شكل خط واحد ( هو الخط الأصفر طبعا ).

    هذا الخط هو بكل بساطة عبارة عن الفرق بين الخط العلوي للبولنغر وبين الخط السفلي له.

    بمعنى أني حسبت الخط الأصفر بطرح القيمة الدنيا للباند من القيمة العليا.

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

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

    فكرت في إضافة مؤشر آخر وكان اختياري هو الماكد لمعرفة الاتجاه الحالي.

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

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

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

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

    فكلما زادت الحساسية زادت المخاطرة والعكس صحيح.

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

    طبعا في البداية هي فكرة تم تطويرها على مراحل.

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

    لا يمكن أن تنجز مؤشر جديد من المرة الأولى بل تأتي التطويرات متلاحقة ومتتابعة.

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

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

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

    و هبوط هذه الخطوط مرة أخرى تحته هي نهاية الانفجار.


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

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


    والآن نأتي للكود مع الشرح.

    القسم الأول:

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                       Waddah_Attar_Explosion.mq4 |
    //|                              Copyright © 2006, Eng. Waddah Attar |
    //|                                          [email protected] |
    //+------------------------------------------------------------------+
    #property  copyright "Copyright © 2006, Eng. Waddah Attar"
    #property  link      "[email protected]"
    //----
    #property  indicator_separate_window
    #property  indicator_buffers 4
    #property  indicator_color1  Green
    #property  indicator_color2  Red
    #property  indicator_color3  Sienna
    #property  indicator_color4  Blue
    #property  indicator_minimum 0.0 
    وهو واضح جدا جدا حيث أننا نحتاج لأربعة خطوط وحددنا ألوان كل خط.

    وبما أن عملنا هو في القسم الموجب فقط فقد حددنا المجال الأدنى للمؤشر بصفر.



    القسم الثاني:

    كود PHP:
    extern int  Sensetive 150;
    extern int  DeadZonePip 30;
    extern int  ExplosionPower 15;
    extern int  TrendPower 15;
    extern bool AlertWindow true;
    extern int  AlertCount 500;
    extern bool AlertLong true;
    extern bool AlertShort true;
    extern bool AlertExitLong true;
    extern bool AlertExitShort true
    هذه هي خصائص المؤشر العامة الحساسية ومقدار المجال الميت.

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


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

    وقوة الميل هي نسبة الزيادة لعمود الماكد الأخير عن الخط الذي يسبقه.

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

    لأنه أحيانا تتحقق شروط الانفجار ولكن بقوة ضعيفة ولذلك وضعنا ما يشبه الفلتر على القوة.

    ويستطيع المستخدم تغيير هذه القيم حسب درجة مخاطرته التي يريدها.

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

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

    القسم الثالث:

    كود PHP:
    double   ind_buffer1[];
    double   ind_buffer2[];
    double   ind_buffer3[];
    double   ind_buffer4[];
    //----
    int LastTime1 1;
    int LastTime2 1;
    int LastTime3 1;
    int LastTime4 1;
    int Status 0PrevStatus = -1;
    double baskbbid
    تعريف المصفوفات وبعض المتحولات التي ستلزمنا في عمل نظام التنبيهات.


    القسم الرابع:


    كود PHP:
    int init()
      {
       
    SetIndexStyle(0DRAW_HISTOGRAMSTYLE_SOLID2);
       
    SetIndexStyle(1DRAW_HISTOGRAMSTYLE_SOLID2);
       
    SetIndexStyle(2DRAW_LINESTYLE_SOLID2);
       
    SetIndexStyle(3DRAW_LINESTYLE_DOT1);
    //----   
       
    SetIndexBuffer(0ind_buffer1);
       
    SetIndexBuffer(1ind_buffer2);
       
    SetIndexBuffer(2ind_buffer3);
       
    SetIndexBuffer(3ind_buffer4);
    //----   
       
    IndicatorShortName("Waddah Attar Explosion: [S(" Sensetive 
                          
    ") - DZ(" DeadZonePip ") - EP(" ExplosionPower 
                          
    ") - TP(" TrendPower ")]");
       
    Comment("copyright [email protected]");
       return(
    0);
      } 
    وضعنا في الوظيفة init تعريف الخصائص الرسومية لخطوط المؤشر وربطنا المصفوفات بذاكرتها الرسومية.

    كذلك جعلنا المؤشر يظهر اسم المؤشر والخصائص التي اختارها المستخدم.



    القسم الخامس:

    كود PHP:
    int start()
      {
    // تعريف متحولات لوضع قيم مؤشرات الماكد والبولنغر وقوة كل منهما
       
    double Trend1Trend2Explo1Explo2Dead;
       
    double pwrtpwre;
    // حساب عدد الشمعات الجديدة فقط
       
    int    limiticounted_bars IndicatorCounted();
    //----
       
    if(counted_bars 0
           return(-
    1);
    //----
       
    if(counted_bars 0
           
    counted_bars--;
       
    limit Bars counted_bars;
    //  بدء الحلقة الرئيسية لحساب قيم خطوط المؤشر
       
    for(limit 1>= 0i--)
         {
    //  حساب قيمة الفرق بين الماكد للشمعة الحالية والشمعة التي تسبقها مباشرة وضرب الناتج في الحساسية لتكبير الإشارة
           
    Trend1 = (iMACD(NULL020409PRICE_CLOSEMODE_MAINi) - 
                     
    iMACD(NULL020409PRICE_CLOSEMODE_MAIN1))*Sensetive;

    // نفس الحساب السابق ولكن للشمعة التي تسبقها
           
    Trend2 = (iMACD(NULL020409PRICE_CLOSEMODE_MAIN2) - 
                     
    iMACD(NULL020409PRICE_CLOSEMODE_MAIN3))*Sensetive;
     
    // حساب الفرق بين خطي البولنغر للشمعة الحالية
           
    Explo1 = (iBands(NULL02020PRICE_CLOSEMODE_UPPERi) - 
                     
    iBands(NULL02020PRICE_CLOSEMODE_LOWERi));
    // حساب نفس الفرق السابق ولكن للشمعة السابقة
           
    Explo2 = (iBands(NULL02020PRICE_CLOSEMODE_UPPER1) - 
                     
    iBands(NULL02020PRICE_CLOSEMODE_LOWER1));
     
    // حساب قيمة المنطقة الميتة
           
    Dead Point DeadZonePip;
    // تصفير قيم المصفوفات
           
    ind_buffer1[i] = 0;
           
    ind_buffer2[i] = 0;
           
    ind_buffer3[i] = 0;
           
    ind_buffer4[i] = 0;

    // رسم خطوط خضراء في حال كان اتجاه الماكد لأعلى
           
    if(Trend1 >= 0)
               
    ind_buffer1[i] = Trend1;
    // رسم خطوط خضراء في حال كان الاتجاه لأسفل
           
    if(Trend1 0)
               
    ind_buffer2[i] = (-1*Trend1);
    // رسم خط البولنغر
           
    ind_buffer3[i] = Explo1;
    // رسم الخط المنقط الأبيض للمنطقة الميتة
           
    ind_buffer4[i] = Dead
    والشرح في نفس الكود.
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

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

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

    القسم السادس:

    وهو الجزء الخاص بنظام التنبيهات Alerts
    يعمل هذا النظام على تنبيه المستخدم في حال بدء انفجار سعري وفق الشروط التي حددها في خصائص المؤشر.


    والشرح في الكود

    كود PHP:
    // التأكد أننا في الشمعة رقم صفر والأخيرة حتى يعمل نظام التنبيهات
           
    if(== 0)
             {
    // في حال تحققت الشروط التالية يجب التنبيه:
    // قيمة الترند الحالي أكبر من الصفر
    // قيمة الترند الحالي أكبر من قيمة الانفجار
    // قيمة الترند الحالي أكبر من المنطقة الميتة
    // قيمة الانفجار أكبر من المنطقة الميتة
    // الانفجار الحالي أكبر من الانفجار السابق
    // الترند الحالي أكبر من السابق
    // لم يتجاوز عدد مرات التنبيه
    // المستخدم يريد تنبيه انفجارات الشراء
    // السعر تغير حتى لا ينبهه بدون تغير في السعر
               
    if(Trend1 && Trend1 Explo1 && Trend1 Dead && 
                  
    Explo1 Dead && Explo1 Explo2 && Trend1 Trend2 && 
                  
    LastTime1 AlertCount && AlertLong == true && Ask != bask)
                 {
    // حساب قوة الترند وقوة الانفجار
                   
    pwrt 100*(Trend1 Trend2) / Trend1;
                   
    pwre 100*(Explo1 Explo2) / Explo1;
                   
    bask Ask;
    // قوة الانفجار أكبر من القوة المحددة وكذلك قوة الترند
                   
    if(pwre >= ExplosionPower && pwrt >= TrendPower)
                     {
    // تفعيل التنبيه في حال كان المستخدم يريد تفعيل التنبيه بشكل عام
                       
    if(AlertWindow == true)
                         {
    // إعطاء المستخدم معلومات عن الوضع الحالي للانفجار السعري
                           
    Alert(LastTime1"- "Symbol(), " - BUY "" ("
                                 
    DoubleToStr(baskDigits) , ") Trend PWR " 
                                 
    DoubleToStr(pwrt,0), " - Exp PWR "DoubleToStr(pwre0));
                         }
    // حتى في حال لم يكن المستخدم يفعل نظام التنبيه أظهر له المعلومات عن طريق الطباعة
                       
    else
                         {
                           Print(
    LastTime1"- "Symbol(), " - BUY "" ("
                                 
    DoubleToStr(baskDigits), ") Trend PWR "
                                 
    DoubleToStr(pwrt0), " - Exp PWR "DoubleToStr(pwre0));
                         }
                       
    LastTime1++;
                     }
                   
    Status 1;
                 }
    // نفس الشرح السابق لتنبيه المستخدم عن صفقات البيع
               
    if(Trend1 && MathAbs(Trend1) > Explo1 && MathAbs(Trend1) > Dead && 
                  
    Explo1 Dead && Explo1 Explo2 && MathAbs(Trend1) > MathAbs(Trend2) && 
                  
    LastTime2 AlertCount && AlertShort == true && Bid != bbid)
                 {
                   
    pwrt 100*(MathAbs(Trend1) - MathAbs(Trend2)) / MathAbs(Trend1);
                   
    pwre 100*(Explo1 Explo2) / Explo1;
                   
    bbid Bid;
                   if(
    pwre >= ExplosionPower && pwrt >= TrendPower)
                     {
                       if(
    AlertWindow == true)
                         {
                           
    Alert(LastTime2"- "Symbol(), " - SELL "" ("
                                 
    DoubleToStr(bbidDigits), ") Trend PWR "
                                 
    DoubleToStr(pwrt,0), " - Exp PWR "DoubleToStr(pwre0));
                         }
                       else
                         {
                           Print(
    LastTime2"- "Symbol(), " - SELL "" ("
                                 
    DoubleToStr(bbidDigits), ") Trend PWR " 
                                 
    DoubleToStr(pwrt0), " - Exp PWR "DoubleToStr(pwre0));
                         }
                       
    LastTime2++;
                     }
                   
    Status 2;
                 }
    // تنبيه المستخدم للخروج من الشراء
               
    if(Trend1 && Trend1 Explo1 && Trend1 Trend2 && Trend2 Explo2 && 
                  
    Trend1 Dead && Explo1 Dead && LastTime3 <= AlertCount && 
                  
    AlertExitLong == true && Bid != bbid)
                 {
                   
    bbid Bid;
                   if(
    AlertWindow == true)
                     {
                       
    Alert(LastTime3"- "Symbol(), " - Exit BUY "" "
                             
    DoubleToStr(bbidDigits));
                     }
                   else
                     {
                       Print(
    LastTime3"- "Symbol(), " - Exit BUY "" "
                             
    DoubleToStr(bbidDigits));
                     }
                   
    Status 3;
                   
    LastTime3++;
                 }
    // تنبيه المستخدم للخروج من البيع
               
    if(Trend1 && MathAbs(Trend1) < Explo1 && 
                  
    MathAbs(Trend1) < MathAbs(Trend2) && MathAbs(Trend2) > Explo2 && 
                  
    Trend1 Dead && Explo1 Dead && LastTime4 <= AlertCount && 
                  
    AlertExitShort == true && Ask != bask)
                 {
                   
    bask Ask;
                   if(
    AlertWindow == true)
                     {
                       
    Alert(LastTime4"- "Symbol(), " - Exit SELL "" "
                             
    DoubleToStr(baskDigits));
                     }
                   else
                     {
                       Print(
    LastTime4"- "Symbol(), " - Exit SELL "" "
                             
    DoubleToStr(baskDigits));
                     }
                   
    Status 4;
                   
    LastTime4++;
                 }
               
    PrevStatus Status;
             }
    // تصفير العدادت في حال تغيرت حالة الصفقات
           
    if(Status != PrevStatus)
             {
               
    LastTime1 1;
               
    LastTime2 1;
               
    LastTime3 1;
               
    LastTime4 1;
             }
         }
       return(
    0);
      }
    //+------------------------------------------------------------------+ 
    أرجو أن تمخمخوا كثيرا في هذا الكود

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


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

  12. #87
    الصورة الرمزية بدر هادي
    بدر هادي غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2007
    المشاركات
    156

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

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

  13. #88
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,959

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

    جزاك الله كل خير
    توقيع العضو
    مبرمج MT4 , MT5

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

  14. #89
    الصورة الرمزية aazerar
    aazerar غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2007
    الإقامة
    المغرب
    المشاركات
    574

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

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

  15. #90
    الصورة الرمزية Al-Mosuli
    Al-Mosuli غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2007
    المشاركات
    245

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


    ما شاء الله مجهود كبير واكثر من رائع
    طريقة منظمة في الشرح
    الله يعطيك الف عافية
    تسجيل حضور ومتابعة وانشالله نتعلم لغة البرمجة على يديك
    تحياتي

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

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

  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