صفحة 1 من 5 12345 الأخيرةالأخيرة
النتائج 1 إلى 15 من 73
  1. #1
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

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

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

    سنبدأ مباشرة كما أبدأ أنا في تصميم أي إكسبرت وهو الداله start ثم بعد ذلك عندما يمر أي كود أريد إضافة متغير خارجي له أقوم بإضافته في الجزء الخاص بالمتغيرات الخارجيه للإكسبرت
    كذلك سنبدأ بشكل بسيط ثم في كل مره نريد زيادة كفاءة الإكسبرت سنقوم بتعديله
    بداية كود إستدعاء مؤشر البارابوليك سار سيكون بالشكل التالي
    كود PHP:
      double sar1=iSAR(NULL,Sar1TF,Step1,Maximum1,1);
          
    double sar2=iSAR(NULL,Sar2TF,Step2,Maximum2,1); 
    حيث Sar1TF و Sar2TF هو التايم فريم الذي سنقوم بتحديده لكل إعداد للمؤشر
    Sar1Step و Sar2Maximum و Sar2Step و Sar2Maximum هي إعدادات المؤشر

    لذلك سنحتاج إلى تعريف هذه المتغيرات في خصائص الإكسبرت الخارجيه لذلك سوف نقوم بتعريفها في الجزء الخاص بالمتغيرات الخارجيه بالشكل التالي
    كود PHP:
     extern string S1=" Parabolic Sar Settings";
     
    extern int Sar1TF=0;
     
    extern double Sar1Step=0.02;
     
    extern double Sar1Maximum=0.2;
     
    extern int Sar2TF=240;
     
    extern double Sar2Step=0.02;
     
    extern double Sar2Maximum=0.2
    إذا لاحظنا أن المتغير Sar1TF قمنا بتعريفه على أنه من نوع int أو عدد صحيح لأنه يأخذ دائما رقم صحيح وهو التايم فريم مثل 1, 5 ,15 ,30 ,60, 240
    أما المتغيرات Sar1Step و Sar1Maximum قمنا بتعريفهم على أنه متغير من نوع double أو عدد عشري لأنه تأخذ أحيانا أرقام عشريه مثل 0.2 أو 0.02
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  2. #2
    الصورة الرمزية forexmen
    forexmen غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Mar 2009
    الإقامة
    مصر
    المشاركات
    1,752

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

  3. #3
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

    نأتي الآن لشرط الدخول في الصفقه سواء بيع أو شراء كما في الصوره التاليه
    اضغط على الصورة لعرض أكبر

الاســـم:	s11.gif
المشاهدات:	190
الحجـــم:	12.0 كيلوبايت
الرقم:	235507

    نقوم بالبيع إذا كان البارابوليك أكبر من الشمعه الحاليه ونقوم بالشراء إذا كان البارابوليك أقل من الشمعه الحاليه
    لذلك سيكون شرط الشراء
    كود PHP:
     if (sar1<Open[1]&&sar2<Open[1]) 
    وشرط البيع
    كود PHP:
    if (sar1>Open[1]&&sar2>Open[1]) 
    بعد ذلك سنحتاج إلى إضافة أمر فتح الصفقه عند تحقق هذه الشروط وإضافة الأستوب لوز والهدف
    بالنسبه للشراء سيكون كالآتي

    كود PHP:
      if (sar1<Open[1]&&sar2<Open[1]){
            if(
    StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
              
                 
              
           } 
    إذا لاحظنا في المتغيرين SL , TP
    قمنا بجعل الهدف وهو TP يساوي السعر الحالي + TakeProfit*قيمة النقطه
    فمثلا السعر الحالي 1.4000 وكان الهدف 30 نقطه فسوف يكون الناتج
    1.4000+30*0.0001 = 1.4000+0.0030= 1.4030 وهو الهدف الذي نريده
    والعكس في حالة البيع
    وقمنا بتعريف المتغيرات TakeProfit و StopLoss في المتغيرات الخارجيه للإكسبرت
    وتعريف المتغيرين SL , TP بداخل الداله ستارت
    وأمر البيع سيكون كالآتي
    كود PHP:
       if (sar1>Open[1]&&sar2>Open[1]){
          
             if(
    StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                 
                 
              
           } 
    وسيكون الهدف في هذه الحال السعر الحالي - TakeProfit*قيمة النقطه
    إذا قمنا بتجربة الإكسبرت الآن فسوف نلاحظ عند فتح صفقه فسوف يظل يفتح صفقات عند تحقق الشروط إلى مالانهاية وحتى لا يبقى مارجن كافي لفتره الصفقه لذلك يجب أن نضيف داله لحساب عدد الصفقات الحاليه بحيث لا يتم الدخول إلا إذا كان عدد الصفقات الحاليه يساوي 0
    وستكون بالشكل الآتي
    كود PHP:
    int orderstotal(){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
             
    cnt++;
           }
         }
        return(
    cnt);
      } 
    كما تحدثنا عن الدوال في الدروس التعليميه وكيفية كتابتها هذه الداله سيتم كتابتها خارج الداله ستارت حيث أنها تعتبر داله مستقله ونقوم بإستدعائها في كل مره نحتاج إليها بدلا من تكرار الكود في كل مره
    في الكود التالي
    كود PHP:
     for(int i =0;i<OrdersTotal();i++){ 
    قمنا بإستخدام الحلقه for نحسب وكان إبتداء الحلقه 0 وإنتهائها OrdersTotal وهذه الكلمه المحجوزه تقوم بحساب عدد الصفقات الحاليه الموجوده
    ثم نقوم بإستخدام الأمر OrderSelect لإختيار الصفقه التي قمنا بتحديدها ومقارنة هل الماجيك نمبر يساوي الماجيك نمبر الذي قمنا بتحديده وهل العمله المستخدمه هي نفس العمله التي قمنا بتحديدها فإذا كان كذلك قم بزيادة 1 إلى قيمة cnt
    كود PHP:
     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
             
    cnt++; 
    ثم نقوم بحفظ هذه القيمه عن طريق الأمر
    كود PHP:
     return(cnt); 

    الآن سنضع في شروط الدخول في صفقة البيع أو الشراء الشرط التالي
    كود PHP:
    if(orderstotal()<1
    بحيث لن يتم الدخول في الصفقه إلا إذا كان عدد الصفقات الحاليه أقل من 1

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

  4. #4
    الصورة الرمزية faisal
    faisal غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2008
    الإقامة
    مصر
    المشاركات
    849

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

  5. #5
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

  6. #6
    الصورة الرمزية coolhero
    coolhero غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    287

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    اخى Mr.dollar
    ارجو شرح هذه الاسطر والخاصه بـ OrderSend ولا اقصد معانى الكلمات ولكن كترتيب
    الاجزاء الملونه بالاحمر الى ماذا ترمز وهل لها علاقه باسم المؤشر المستخدم او اسم الاكسبيرت كذلك PlaySound لماذا اضيفت فقط فى امر البيع ولم تكتب فى امر الشراء

    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);

    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
    PlaySound("Alert.wav");

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

    وارجو المعزر على اسئلتى ولكنى اتابع لأفهم وليس للحصول على الاكسبيرت جاهز
    آخر تعديل بواسطة coolhero ، 15-06-2010 الساعة 11:34 PM

  7. #7
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    اقتباس المشاركة الأصلية كتبت بواسطة coolhero مشاهدة المشاركة
    اخى Mr.dollar
    ارجو شرح هذه الاسطر والخاصه بـ OrderSend ولا اقصد معانى الكلمات ولكن كترتيب
    الاجزاء الملونه بالاحمر الى ماذا ترمز وهل لها علاقه باسم المؤشر المستخدم او اسم الاكسبيرت كذلك PlaySound لماذا اضيفت فقط فى امر البيع ولم تكتب فى امر الشراء

    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);

    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
    PlaySound("Alert.wav");

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

    وارجو المعزر على اسئلتى ولكنى اتابع لأفهم وليس للحصول على الاكسبيرت جاهز
    سوف تجد شرح الأمر OrderSend بالتفصيل في هذه المشاركه
    https://forum.arabictrader.com/t93679.html#post1673127

    بإختصار بالنسبه للرقم 3 فهو Slippage ويمكنك جعله في خصائص الإكسبرت الخارجيه
    بالنسبه ل MR.dollar EA فهو التعليق الذي يتم كتابته بجوار الصفقه
    قم بإضافة أمر
    PlaySound للشراء أيضا
    كتبت شرط البارابوليك سار أن يكون أصغر أو أكبر من إفتتاح الشمعه السابقه لضمان ثبات الإشاره لكن إذا أردت دخول الصفقه بمجرد ظهور الإشاره فسوف تجعل الكود كالتالي
    كود PHP:
    if(Sar1>Open[0
    أي ستقوم بتغيير الرقم 1 أي إفتتاح الشمعه السابقه إلى الرقم 0 أي إفتتاح الشمعه الحاليه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  8. #8
    الصورة الرمزية ،،،TakePoints
    ،،،TakePoints غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2009
    الإقامة
    الكويت
    المشاركات
    4,767

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

  9. #9
    الصورة الرمزية جرير
    جرير غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2009
    الإقامة
    مصر
    المشاركات
    430

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    بارك الله فيك
    شرح اكثر من رائع
    توقيع العضو
    AI Expert

  10. #10
    الصورة الرمزية zyad
    zyad غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    المشاركات
    61

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    مستر دولار والاخوه المشاركين ...من واقع تجربتي للمؤشر سار على الحقيقي استفدت منه بشكل بسيط وجميل عندما اعكس باستمرار نصائحه اي البيع عند اشاره الشراء والعكس على الساعه وبالاعدادات الافتراضيه مع ايقاف خساره عند 155نقطه مع الصبر وعدم القلق واهم شيء هو الخروج بهذه الطريقه من العمليه عند اقتراب الشمعه من نقطه المؤشر بحدود 8-10 نقاط ودون تردد ..تحيه طيبه

  11. #11
    الصورة الرمزية coolhero
    coolhero غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    287

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    سوف تجد شرح الأمر OrderSend بالتفصيل في هذه المشاركه
    https://forum.arabictrader.com/t93679.html#post1673127

    بإختصار بالنسبه للرقم 3 فهو Slippage ويمكنك جعله في خصائص الإكسبرت الخارجيه
    بالنسبه ل MR.dollar EA فهو التعليق الذي يتم كتابته بجوار الصفقه
    قم بإضافة أمر
    PlaySound للشراء أيضا
    كتبت شرط البارابوليك سار أن يكون أصغر أو أكبر من إفتتاح الشمعه السابقه لضمان ثبات الإشاره لكن إذا أردت دخول الصفقه بمجرد ظهور الإشاره فسوف تجعل الكود كالتالي
    كود PHP:
    if(Sar1>Open[0
    أي ستقوم بتغيير الرقم 1 أي إفتتاح الشمعه السابقه إلى الرقم 0 أي إفتتاح الشمعه الحاليه
    بارك الله فيك

  12. #12
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    اقتباس المشاركة الأصلية كتبت بواسطة جرير مشاهدة المشاركة
    بارك الله فيك
    شرح اكثر من رائع
    وبارك الله فيك ووفقك
    اقتباس المشاركة الأصلية كتبت بواسطة ،،،TakePoints مشاهدة المشاركة
    حبيبي استاذ اسامه اخبارك
    اعجبني الموضوع
    سأفيدكم بأمر سري جدا بل هو استراتيجيه
    انا استخدم البارابوليك على الخمس دقائق اضع التشارت لاربع عملات المجنون والكيبل واليورو والفرنك
    اذا ظهرت اشارة البارابوليك مع تشبع الاستوكاستيك وكان الامر هذا متطابق مع الاربع عملات ادخل والاهداف جميله
    جربوها وادعولي
    الحمد لله بخير وجاري التجربه ومبدئيا تبدو جيده جدا ويمكننا أن نضيف هذه الإضافة الجميله في الإكسبرت
    اقتباس المشاركة الأصلية كتبت بواسطة zyad مشاهدة المشاركة
    مستر دولار والاخوه المشاركين ...من واقع تجربتي للمؤشر سار على الحقيقي استفدت منه بشكل بسيط وجميل عندما اعكس باستمرار نصائحه اي البيع عند اشاره الشراء والعكس على الساعه وبالاعدادات الافتراضيه مع ايقاف خساره عند 155نقطه مع الصبر وعدم القلق واهم شيء هو الخروج بهذه الطريقه من العمليه عند اقتراب الشمعه من نقطه المؤشر بحدود 8-10 نقاط ودون تردد ..تحيه طيبه
    غرضنا الأساسي من الموضوع هو تعليمي لذلك بإذن الله سنحاول المرور على جميع الحالات ومختلف الطرق
    وشكرا جدا لردك
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  13. #13
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    دالة إغلاق الصفقات في حال ظهور إشارة عكسيه هذه الدوال سيتم تعريفها خارج الداله ستارت
    كود PHP:
    void CloseBuyOrders()
    {
      for (
    int cnt cnt OrdersTotal() ; cnt++)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY)
          {
            
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
          }
        }
      } 
     }  

    void CloseSellOrders()
    {
     for (
    int cnt cnt OrdersTotal() ; cnt++)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_SELL)
          {
           
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
          }
         }
        }
       } 
    إستخدمنا الأمر void لتعريف هذه الدالة لأننا لا نحتاج أن نقوم بحفظ قيمه معينه من ناتج هذه العمليه بل تقوم فقط بتنفيذ ما بداخلها عند إستدعائها
    بعكس إذا إستخدمنا الأمر int أو double لعمل هذه الداله فنستخدم هذه الكلمات في حال كان هناك ناتج للعمليه تقوم الداله بحفظه وعند إستدعاء الداله تقوم بإستدعاء هذه القيمه تماما كما فعلنا في دالة حساب عدد الصفقات الحاليه

    ثم إستخدمنا أيضا الحلقه for وقمنا للبحث في عدد الصفقات الحاليه ومعرفة هل نوع الصفقه بيع أو شراء
    ثم الأمر OrderClose لإغلاق الصفقه
    كود PHP:
     OrderClose(OrderTicket(),OrderLots(),Ask,3); 
    ويجب ملاحظة أن صفقة البيع تغلق على سعر Ask وصفقة الشراء تغلق على سعر Bid

    ثم بداخل الداله start نقوم بوضع شروط غلق الصفقه بيع أو شراء
    كود PHP:
    if (sar1<Open[1]&&sar2<Open[1]&&CloseOppositeSignal==true )
           {
    CloseSellOrders();}
           
           if (
    sar1>Open[1]&&sar2>Open[1]&&CloseOppositeSignal==true)
         {
    CloseBuyOrders();} 
    طبعا قمنا بتعريف المتغير CloseOppositeSignal على أنه متغير منطقي بحيث يمكن التحكم فيه إذا أردنا إغلاق الصفقه العكسيه أو لا

    يمكن أيضا كتابة الشروط بهذا الشكل
    كود PHP:
    if (sar1<Open[1]&&sar2<Open[1]&&CloseOppositeSignal )
           {
    CloseSellOrders();}
           
           if (
    sar1>Open[1]&&sar2>Open[1]&&CloseOppositeSignal)
         {
    CloseBuyOrders();} 
    سوف تلاحظ في الطريقه الثانيه
    أننا كتبنا CloseOppositeSignal وليس CloseOppositeSignal==true
    وعند كتابة CloseOppositeSignal بدون وضع مقارنه true أو false فهذا يعني كأنك قارنتها بأنها true
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  14. #14
    الصورة الرمزية zyad
    zyad غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    المشاركات
    61

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

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

  15. #15
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار

    اقتباس المشاركة الأصلية كتبت بواسطة zyad مشاهدة المشاركة
    يشرفني مرورك مستر دولار ..فقط احببت محاوله اغناء الموضوع بما لدي ....معكم بأذن الله مع الشكر لكل جهد مبذول
    بارك الله فيك
    -----------------------------
    سنضيف الآن فلتر الوقت
    سنضيف أولا متغيرات خارجيه للتحكم بتوقيت بداية ونهاية عمل الإكسبرت
    كود PHP:
    extern bool  UseTimeFilterfalse;        
     
    extern int  StartHour 7;            
     
    extern int  EndHour 17
    بداخل الداله start
    كود PHP:
      if (UseTimeFilter){
           if(!((
    StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour ||
                   
    TimeHour(TimeCurrent()) < EndHour))){
               
    Comment("Non-Trading Hours!");
               return(
    0);
             }
           } 
    بحيث إذا كان UseTimeFilter=true وكان التوقيت الحالي أقل من بداية العمل أو أكبر من نهاية العمل فسوف يقوم بالرجوع إلى الداله start مره أخرى ولن يكمل عمله وهذا عن طريق الأمر التالي
    كود PHP:
      return(0); 
    ويظل يقارن حتى يكون التوقيت الحالي في وقت عمل الإكسبرت الذي تم تحديده له
    نقوم بكتابة هذه الداله مباشرة بعد الداله start

    إمكانية العمل على بروكر خمس أرقام
    بداية سنقوم بتعريف متغيرين في القسم العلوي للإكسبرت
    كود PHP:
    double point;
     
    int digits
    ثم بداخل الدالة init
    سنقوم بكتابة الكود التالي
    كود PHP:
     if(Digits<4)
       {
          
    point=0.01;
          
    digits=2;
       }
       else
       {
          
    point=0.0001;
          
    digits=4;
       } 
    ومعناه إذا كان Digits<4 فإما سيكون 2 وهو في البروكر العادي مثلا لزوج الدولار ين أو سيكون 3 في حال كان البروكر يعتمد رقم زائد بعد الفاصله فسوف نجعل المتغير point=0.01 و digits=2

    else أي إذا لم يتحقق الشرط السابق أن Digits<4 فهذا يعني أن Digits>=4
    فإما أن يكون عدد الفواصل 4 أرقام أو 5 أرقام كمثال زوج اليورو دولار
    فسوف نجعل point=0.0001 و digits=4
    ثم نقوم بكتابة بدلا من الكلمه المحجوزه Point عند وضع الهدف نكتب بدلا من point وهو المتغير الذي قمنا بتعريفه ونفس الشيء بالنسبه ل Digits نقوم بدلا منه بكتابة digits
    دالة التريلينج ستوب
    كود PHP:
    void MoveTrailingStop()
    {
       
       for(
    int cnt=0;cnt<OrdersTotal();cnt++)
       {
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(
    OrderType()==OP_BUY)
             {
                if(
    TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))  
                {                 
                   if((
    NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
                   {
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                if(
    TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))  
                {                 
                   if((
    NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
                   {
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }

    كما شرحنا سابقا سوف نستخدم أيضا الحلقات للبحث في عدد الصفقات المفتوحه ثم نقارن إذا كان الأستوب أقل من السعر الحالي + التريلينج ستوب الذي تم تحديده نقوم بنقل بتحريك الأستوب إلى السعر الحالي - التريلينج ستوب
    سوف نتكلم عن أهم سطر وهو أمر OrderModify
    كود PHP:
     bool OrderModifyint ticketdouble pricedouble stoplossdouble takeprofitdatetime expirationcolor arrow_color=CLR_NONE
    ticket هو رقم التيكيت للصفقه ويمكنك كتابته OrderTicket() وسوف يعود برقم التيكيت للصفقه التي قمت بإختيارها سابقا بإستخدام الأمر OrderSelect
    price سعر فتح الصفقه ولا يمكن تغييره إذا كان الصفقه أمر مباشر وليس أمر معلق
    stoploss الأستوب لوز الجديد الذي تريد وضعه
    takeprofit الهدف الذي تريد وضعه
    expiration وقت إنتهاء الأمر المعلق وهو خاص بالصفقات المعلقه فقط
    arrow_color لون السهم الذي سيظهر على الشارت

    يمكنك تغيير بعد الأرقام وترك البعض الآخر مثلا تغيير الأستوب لوز وترك الهدف السابق كما هو ولكن إذا لم يكن هناك تغيير في الصفقه فسوف يظهر الإكسبرت خطأ في خانة الجورنال

    ودالة البريك إيفين
    كود PHP:

    void MoveBreakEven
    ()
    {
       
    int cnt,total=OrdersTotal();
       for(
    cnt=0;cnt<total;cnt++)
       {
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(
    OrderType()==OP_BUY)
             {
                if(
    BreakEven>0)
                {
                   if(
    NormalizeDouble((Bid-OrderOpenPrice()),digits)>BreakEven*point)
                   {
                      if(
    NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),digits)<0)
                      {
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+movestopto*point,digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(
    BreakEven>0)
                {
                   if(
    NormalizeDouble((OrderOpenPrice()-Ask),digits)>BreakEven*point)
                   {
                      if(
    NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),digits)<0)
                      {
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-movestopto*point,digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }

    وتقريبا نفس الكود الذي إستخدمناه في التريلينج ستوب مع بعض التغييرات البسيطه

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

صفحة 1 من 5 12345 الأخيرةالأخيرة

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

  1. ورشة تصميم إكسبرت لإستراتيجية القاهرة
    By Sc@lper in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 138
    آخر مشاركة: 21-03-2014, 04:36 PM
  2. إستراتيجية مدهشة جديدة تحتاج لمؤشر أو إكسبرت
    By MYounis in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 11
    آخر مشاركة: 04-07-2008, 02:42 AM
  3. موضوع تعليمي: تحت التجربة
    By صاحب سمو المشاعر in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 3
    آخر مشاركة: 07-12-2007, 04:41 PM

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


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