سؤال برمجي للاخ مستر دولار
النتائج 1 إلى 10 من 10
  1. #1
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي سؤال برمجي للاخ مستر دولار

    اخي مستر دولار لقد برمجت اكسبيرت بسيط للتعلم وهو يعتمد على مؤشر واحد فقط (signal line ) واريد هذا الاكسبيرت
    1-ان يعمل على كل العملات او على عملات مختارة من عندي بنفس الوقت
    2-تكون كل الصفقات على نفس الحساب
    3-ان يفتح عدد معين من الصفقات لكل عملة مثلا صفقة واحدة او اثنتين على الكيبل ومثله على اليورو دولار
    4- و اخيرا اخي ما الوضع لو كانت شروط الدخول مختلفة من عملة لاخرى (لكن باستخدام نفس المؤشر المستخدم في الاكسبيرت) يعني مثلا period هي 15 للكيبل ولكنها 20 لليورو دولار ، فهل هنا يلزمني ان اضع الاكسبيرت على كل شارت عملة اريدها ؟
    اخي مستر دولار مرفق الاكسبيرت - ان شاء الله يكون قد المقام

    جزاكم الله خيرا
    الملفات المرفقة الملفات المرفقة

  2. #2
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي رد: سؤال برمجي للاخ مستر دولار

    اقتباس المشاركة الأصلية كتبت بواسطة ABU-NOOR مشاهدة المشاركة
    اخي مستر دولار لقد برمجت اكسبيرت بسيط للتعلم وهو يعتمد على مؤشر واحد فقط (signal line ) واريد هذا الاكسبيرت
    1-ان يعمل على كل العملات او على عملات مختارة من عندي بنفس الوقت
    2-تكون كل الصفقات على نفس الحساب
    3-ان يفتح عدد معين من الصفقات لكل عملة مثلا صفقة واحدة او اثنتين على الكيبل ومثله على اليورو دولار
    4- و اخيرا اخي ما الوضع لو كانت شروط الدخول مختلفة من عملة لاخرى (لكن باستخدام نفس المؤشر المستخدم في الاكسبيرت) يعني مثلا period هي 15 للكيبل ولكنها 20 لليورو دولار ، فهل هنا يلزمني ان اضع الاكسبيرت على كل شارت عملة اريدها ؟
    اخي مستر دولار مرفق الاكسبيرت - ان شاء الله يكون قد المقام

    جزاكم الله خيرا
    1 _ هنا أكثر من طريقة لتنفيذ طلبك الأول وسيعتمد الحل على فكرة الإكسبرت فالحل الأسهل هو أن تضع الإكسبرت على شارت العمله التي تريد العمل عليها وبالتالي سيعمل الإكسبرت على هذه العمله ثم قم بضبط إعدادات الإكسبرت حسب ما تريد وطبعا لا تنسى تغيير الماجيك نمبر في كل مرة تضع الإكسبرت على الشارت على عمله مختلفه
    الحل الآخر هو من الكود نفسه هذا في حال أردت مثلا عند تحقق أحد الشروط أن يفتح الإكسبرت أكثر من صفقة على أكثر من زوج في وقت واحد كمثال راجع هذا الإكسبرت
    http://forum.arabictrader.com/t108035.html#post1876897
    لكن أعتقد أن هذا ليس ما تريده حسب فهمي لسؤالك

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

    3_ إذا كنت تقصد فتح صفقتين مثلا عند تحقق الشروط في نفس الوقت في هذه الحاله يمكنك تكرار الأمر OrderSend مره أخرى في حال مثلا أردته أن يفتح صفقتين وليس صفقه واحده أو يمكنك إستخدام الحلقه for على سبيل المثال :
    كود PHP:
     for(int i=0;i<MaxOrders;i++){
       
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage*Q,0,0,"amj-single",Magic,0,Green);
         if(
    ticket>0)
         {
           
    OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),0,Green);//للعمل على بروكر ECN 
        
    }
       } 
    حيث المتغير MaxOrders ستضعه في المتغيرات الخارجيه للإكسبرت وتقوم بتحديده بنفسك

    أما إذا كنت تقصد أن لا يزيد عدد الصفقات المفتوحه على نفس الزوج ككل عن عدد معين تقوم بتحديده في هذه الحاله يمكنك عمل داله تعود بعدد الصفقات المفتوحه كمثال:
    كود PHP:
    int orderscnt(){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    ثم تضع من ضمن شروط الدخول في الصفقه
    كود PHP:
    if(orderscnt()<MaxOrders
    بالتالي لن يفتح الإكسبرت صفقات أكثر من العدد الذي قمت بتحديده

    4_ بالتأكيد يجب أن تضع الإكسبرت على شارت كل عمله تريد أن يعمل الإكسبرت عليه وقم بتغيير الإعدادات حسب ما تريد في كل مره

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

  3. #3
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي رد: سؤال برمجي للاخ مستر دولار

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

    بارك الله بك وبعلمك




  4. #4
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي رد: سؤال برمجي للاخ مستر دولار

    اخي مستر دولار السلام عليكم
    الاكسبيرت الان يفتح عدد الصفقات المحددة له وعلى العملات المطلوبة ايضا بحيث اضعه على شارت العملة المطلوبة فيقوم بفتح الصفقة لكن ظهرت مشكلة انه لا ينفذ شروط ما بعد فتح الصفقة مثل شروط الاغلاق و التريلنغ ستوب وهذه المشكلة لم تكن سابقا . اي من السطر
    كود PHP:
     //now we have to handle opening positions 
    حاولت مرارا ان اجد الحل لكن للاسف لم استطع فالرجاء الاطلاع على الاكسبيرت المرفق بعد اضافة الدالة التي تحدد عدد الاوردرات المفتوحة - التي اخذتها من مشاركتك السابقة جزاك الله خيرا -

    بارك الله فيك ووفقك لكل خير
    الملفات المرفقة الملفات المرفقة

  5. #5
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي رد: سؤال برمجي للاخ مستر دولار

    اقتباس المشاركة الأصلية كتبت بواسطة ABU-NOOR مشاهدة المشاركة
    اخي مستر دولار السلام عليكم
    الاكسبيرت الان يفتح عدد الصفقات المحددة له وعلى العملات المطلوبة ايضا بحيث اضعه على شارت العملة المطلوبة فيقوم بفتح الصفقة لكن ظهرت مشكلة انه لا ينفذ شروط ما بعد فتح الصفقة مثل شروط الاغلاق و التريلنغ ستوب وهذه المشكلة لم تكن سابقا . اي من السطر
    كود PHP:
     //now we have to handle opening positions 
    حاولت مرارا ان اجد الحل لكن للاسف لم استطع فالرجاء الاطلاع على الاكسبيرت المرفق بعد اضافة الدالة التي تحدد عدد الاوردرات المفتوحة - التي اخذتها من مشاركتك السابقة جزاك الله خيرا -

    بارك الله فيك ووفقك لكل خير
    الخطأ عندك في هذا السطر
    كود PHP:
     for (cnt=0;cnt<total;cnt++) 
    حيث أنك قمت بتعريف المتغير total لكن لم تعطه أي قيمه بالتالي قيمته 0 لذلك عندما تقارن الحلقه cnt<total
    فلن يكون الشرط صحيح بالتالي لن ينفذ جسد الحلقه
    لذلك قم بجعله بالشكل الآتي
    كود PHP:
     for (cnt=0;cnt<OrdersTotal();cnt++) 
    أو قم بإعطاء المتغير total قيمة
    كود PHP:
      total=OrdersTotal(); 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  6. #6
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي رد: سؤال برمجي للاخ مستر دولار

    الاكسبيرت يشتغل تمام الان
    جزاك الله كل خير اخي مستر دولار على مجهودك معنا

  7. #7
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي رد: سؤال برمجي للاخ مستر دولار

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

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

    جزاك الله كل خير اخي و بارك الله فيك
    آخر تعديل بواسطة ABU-NOOR ، 20-10-2010 الساعة 04:20 PM

  8. #8
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي رد: سؤال برمجي للاخ مستر دولار

    اقتباس المشاركة الأصلية كتبت بواسطة ABU-NOOR مشاهدة المشاركة
    السلام عليكم اخي مستر دولار ملاحظتان على نفس الاكسبيرت لو سمحت :
    1- كنت فاتح صفقة بيع يدوي على الكيبل ثم تحققت شروط شراء حسب الاكسبيرت فاغلق صفقة البيع اليدوية التي لا تخص الاكسبيرت وفتح صفقة شراء رغم وجود الكود الذي يجعله يتعرف على صفقاته فقط ؟

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

    جزاك الله كل خير اخي و بارك الله فيك
    حسب الكود الذي إستخدمته
    كود PHP:
     for (cnt=0;cnt<OrdersTotal();cnt++)
       {
    //7
       
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
       if (
    OrderType()<=OP_SELL && OrderSymbol()==Symbol())
       {
    //8
         
    if (OrderType()==OP_BUY// long postion is opened
         
    {//9
           // should be closed?
           
    if (SignalLineDn==2147483647&&SignalLineUp_3==2147483647)
           {
    //10
           
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//close position
           
    return (0); 
           }
    //10
            //check for trailing stop 
             
    if (TS>0)
             {
    //11
                
    if (Bid-OrderOpenPrice()>=point*TS)
                {
    //12
                 
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
                return(
    0);
                }
    //12
             
    }//11
           
    }//9
               
    else //short position is opened
              // should be closed
              
    if (SignalLineUp==2147483647&&SignalLineDn_3==2147483647)
              {
    //13
              
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);//close position
              
    return (0); 
              }
    //13
                
    if (TS>0)
                {
    //14
                   
    if (OrderOpenPrice()-Ask>=point*TS)
                   {
    //15
                   
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Silver);
                  return(
    0); 
                   }
    //15
                
    }//14
             
    }//8
        
    }//7 
    فأنت لم تضع شرط أن يكون الماجيك نمبر للصفقه هو نفسه الماجيك نمبر للإكسبرت حتى يتحقق الإكسبرت أولا من أن الصفقه التي يريد إغلاقها هي الصفقه التي قام بفتحها سابقا وهذا هو سبب الخطأ عندك

    بالنسبة حتى تمنع الإكسبرت من فتح صفقه أخرى في نفس الشمعة راجع الإكسبرت المرفق وراجع هذا الجزء
    كود PHP:
    Time0!=Time[0
    بالنسبه للسؤال الثالث فيمكنك وضع داله تقوم بمعرفة آخر صفقه تم إغلاقها هل حققت الهدف أم لا فإذا لم تحقق الهدف وأغلقت على خساره وما زالت الشروط صحيحه يتم الدخول مره أخرى جرب عمل الداله السابقه وأخبرني بالنتيجه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  9. #9
    تاريخ التسجيل
    Nov 2006
    المشاركات
    426

    افتراضي رد: سؤال برمجي للاخ مستر دولار

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

    كود PHP:
    داله تعود بعدد الصفقات المفتوحه
      int orderscnt
    ()
      {
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++)
       {
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
           if(
    OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
           {
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    اعتقد ان المشكلة يمكن في تحديد العدد الاقصى للعقود المفتوحة


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

    بارك الله فيك

  10. #10
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي رد: سؤال برمجي للاخ مستر دولار

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

    كود PHP:
    داله تعود بعدد الصفقات المفتوحه
      int orderscnt
    ()
      {
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++)
       {
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
           if(
    OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
           {
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    اعتقد ان المشكلة يمكن في تحديد العدد الاقصى للعقود المفتوحة


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

    بارك الله فيك
    يا أخي الكريم هل قرأت ردي السابق جيدا وراجعت الكود الذي وضعته لك
    لا علاقة لكود حساب عدد الصفقات الحاليه بإغلاق صفقة ليست للإكسبرت
    راجع مشاركتي السابقه سوف تجد الآتي
    كود PHP:
    if (OrderType()<=OP_SELL && OrderSymbol()==Symbol()) 
    يجب أن تجعلها بهذا الشكل
    كود PHP:
    if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber
    عندها ستحل المشكلة

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