صفحة 287 من 689 الأولىالأولى ... 187237277281282283284285286287288289290291292293297337387 ... الأخيرةالأخيرة
النتائج 4,291 إلى 4,305 من 10335
  1. #4291
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,864

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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

    السلام عليكم و رحمة الله
    كنت أريد داله تقوم بحساب اللوت تلقائيا بناءا على متغير خارجي مثلا لكل ١٠٠ دولار أضع ١٠ سنت ‏
    Extern double Per_100_usd=0.01 ;
    وبالتالي تحسب الداله الرصيد إذا كان ٢٠٠ دولار تجعل اللوت ٢٠ سنت و إذا كان ١١٠٠ دولار تحسب اللوت ٠,١١ أي دولار و١٠ سنت .. و هكذا بحيث يعاود الحساب كل زياده في الرصيد بمقدار ١٠٠ دولار ..
    و اريد أن أضع شرطا بحيث لا يتم فتح صفقه في اول ساعتين او اربع ساعات من إفتتاح السوق مباشرة يوم الاحد او الاثنين على حسب المنصه .
    وجزاكم الله كل خير .
    وعليكم السلام ورحمة الله وبركاته
    سوف تقوم بقسمة رأس المال على المبلغ الذي تريده فمثلا هنا تريده كل 100 دولار بالتالي سيكون
    كود PHP:
    int Percent=AccountBalance()/100
    لاحظ أني إستخدم في تعريف المتغير عدد صحيح لأني أريد حساب الأرقام الصحيحة فقط وليس العشرية
    ثم سيكون حجم اللوت للصفقة هو
    كود PHP:
    double Lot=Percent*Per_100_usd
    بالنسبة لفتح الصفقة يوم الإفتتاح بعد ساعة معينه سوف تضع الشرط
    كود PHP:
      if(DayOfWeek()=1&&TimeCurrent()-iTime(Symbol(),1440,0)<3600*WaitingHours)return; 
    الرقم 1 يعني يوم الإثنين 0 يعني يوم الأحد
    هذا الشرط معناه إذا كان الفرق بين التوقيت الحالي و توقيت إفتتاح شمعة يوم الإثنين أقل من عدد ساعات معينه
    في المتغير WaitingHours فلن يكمل الإكسبرت عمله
    طبعا تضع الشرط في بداية كود الإكسبرت
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة Mr. Nothing مشاهدة المشاركة
    إذا كان بدي الاكسبيرت يفتح الصفقة ضمن مسافة لا تبعد أكثر من 20 نقطة عن سعر معين
    هل هذا الكود صحيح

    كود:
    double trigger=1.3500
    كود:
    Trigger-Ask <20
    خطأ
    التصحيح
    كود PHP:
    MathAbs(Trigger-Ask)<20*Point
    لماذا إستخدمت الداله MathAbs
    حتى إذا كان السعر مثلا Trigger أقل من سعر الاسك بالتالي النتيجة ستكون 20 نقطة لكن بالسالب فبدلا من أن أضيف شرطين مره الرقم بالسالب ومره بالموجب قمت بإستخدام الداله فهي تقوم بتحويل القيمه السالبه مباشرة إلى القيمه الموجبه
    والرقم 20 يحول إلى قيمة النقطه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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

    أريد اكسبيرت خاص بإدارة الصفقاتـ منفصل عن باقي عشرة اكسبيرتات ، يعمل كالتالي :
    لنفترض رأسمال 1000 دولار
    عند تحقق اكويتي 1100 دولار (يعني ربح 100 دولار ) يتم إغلاق جميع الصفقات المفعلة والمعلقة على جميع العملات مع تغيير الماجيك نمبر لكل عملة بإضافة رقم 1، ويتم تغيير هدف الاكويتي القديم بالهدف الجديد بإضافة 100 دولار يعني يصبح الهدف الجديد 1200 دولار... وهكذا...
    الاكسبيرت بالمرفقات أرجو التصحيح
    وجزاكم الله خيرا
    وعليكم السلام ورحمة الله وبركاته
    إضافة الشروط صحيحه ما هو الخطأ الذي ظهر لك ؟
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  4. #4294
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

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

  5. #4295
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    وعليكم السلام ورحمة الله وبركاته
    إضافة الشروط صحيحه ما هو الخطأ الذي ظهر لك ؟
    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    جزاك الله خيرا أستاذي العزيز
    فقط أريد التأكد من صحة الشروط
    جاري التجربة ديمو وإذا وجد خطأ ما سأطرحه هنا لمعالجته...
    شكرا جزيلا
    بعد التجربة ديمو لم يعمل الاغلاق الكلي للصفقات والأوامر المعلقة وبذلك قمت بتعديل مفصل لدوال الاغلاق للصفقات المفعلة وللصفقات المعلقة

    وتمت التجربة مرة أخرى واشتغل الاغلاق كما يجب لكن لم تعمل جزئية الماجيك نمبر للاكسبيرتات حيث استمرت في المضاعفات ولم تبدأ باللوت الأساسي
    ثم قمت بتعديل الماجيك نمبر حيث جعلتها موحدة بالاكسبيرتات باسم MagicNo عوض MagicNo1;MagicNo2 .... والماجيك نمبر الرئيسي MagicNo_EA
    كود PHP:
    extern double MagicNo_EA=1;
    int MagicNo;

    int start()
    {

    MagicNo=MagicNo+MagicNo_EA;

    double acc=AccountEquity();  
        if(
    Win_Stop&&(acc >=NewEquity)) 
        { 
         
    CloseDeleteAll();
         
    CloseDeleteAllCurrent();
         
    CloseDeleteAllNonPending();
         
    CloseDeleteAllCurrentNonPending();

         
    MagicNo_EA=MagicNo_EA+1
         
    NewEquity=NewEquity+USDProfit;
        }         
        
    Comment(NewEquity);  

    وتمت التجربة ديمو مرة أخرى وحدث نفس الشي بعد الاغلاق الكلي لم تلغى المضاعفات وهذا دليل على أن الماجيك نمبر للاكسبيرتات لم يتغير !!! مع العلم أن دالة المضاعفات بالاكسبيرتات معرفة بالماجيك نمبر
    كود PHP:
    if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo
    وبالنسبة لهدف الاكويتي يعمل جيدا ويتغير عند كل إغلاق كلي

    أرجو مراجعة الاكسبيرت (بالمرفقات)

    ولك الشكر الجزيل أستاذي الكريم
    الملفات المرفقة الملفات المرفقة
    آخر تعديل بواسطة kira-h ، 30-08-2013 الساعة 07:09 PM
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    بعد التجربة ديمو لم يعمل الاغلاق الكلي للصفقات والأوامر المعلقة وبذلك قمت بتعديل مفصل لدوال الاغلاق للصفقات المفعلة وللصفقات المعلقة

    وتمت التجربة مرة أخرى واشتغل الاغلاق كما يجب لكن لم تعمل جزئية الماجيك نمبر للاكسبيرتات حيث استمرت في المضاعفات ولم تبدأ باللوت الأساسي
    ثم قمت بتعديل الماجيك نمبر حيث جعلتها موحدة بالاكسبيرتات باسم MagicNo عوض MagicNo1;MagicNo2 .... والماجيك نمبر الرئيسي MagicNo_EA
    كود PHP:
    extern double MagicNo_EA=1;
    int MagicNo;

    int start()
    {

    MagicNo=MagicNo+MagicNo_EA;

    double acc=AccountEquity();  
        if(
    Win_Stop&&(acc >=NewEquity)) 
        { 
         
    CloseDeleteAll();
         
    CloseDeleteAllCurrent();
         
    CloseDeleteAllNonPending();
         
    CloseDeleteAllCurrentNonPending();

         
    MagicNo_EA=MagicNo_EA+1
         
    NewEquity=NewEquity+USDProfit;
        }         
        
    Comment(NewEquity);  

    وتمت التجربة ديمو مرة أخرى وحدث نفس الشي بعد الاغلاق الكلي لم تلغى المضاعفات وهذا دليل على أن الماجيك نمبر للاكسبيرتات لم يتغير !!! مع العلم أن دالة المضاعفات بالاكسبيرتات معرفة بالماجيك نمبر
    كود PHP:
    if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo
    وبالنسبة لهدف الاكويتي يعمل جيدا ويتغير عند كل إغلاق كلي

    أرجو مراجعة الاكسبيرت (بالمرفقات)

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

  7. #4297
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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







    السلام عليكم
    الطريقه السابقه لم تفي بالغرض ...
    أنا فكرت بعمل داله تحفظ و تعود بالسعر الذي يكون الفرق بينه و بين آخر مستوى دخول عدد نقاط أحددها خارجيا LastOrderOpenPrice

    كود:
     double D(){ 
      for(int i=OrdersTotal()-1; i>=0; i--){ 
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){ 
      
      double D= MathAbs(Bid-LastOrderOpenPrice() ) ;
       return(D ); 
      } 
     } 
     return(0); 
    }
    ثم قمت بتعريف متغير يقوم بحساب الفرق بين السعر الحالي و قمة الداله السابقة
    كود PHP:
    double d=MathAbs(Close[0]-D() ); 
    ووضعت ف الشروط
    كود PHP:
    if ( d>=LastOrderDef *point 
    ومسحت هذا الشرط
    كود PHP:
    && Time0!=Time[0
    حتى لو تحققت الشروط في نفس الشمعه يقوم بفتح الصفقات .. فما الخطأ لأن بعد هذه الخطوات لا يقوم الإكسبيرت بفتح الصفقه بعد الإبتعاد عن المستوى الأخير بعدد النقاط كما أريد ...
    و جزاكم الله خيرا .

    أستاذ أسامه لو تكرمت لي سؤال آخر بخلاف الذي في الإقتباس .. و أعتذر لأني أتعبتك معي .. في ميزان حسناتك إن شاء الله ..

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

    فقمت بتعريف خمس دوال كل داله تعود بسعر الافتتاح للصفقه رقم 1 و أخرى تعود بسعر الافتتاح للصفقه رقم2 حتى الصفقه خمسه .. و كذلك خمس دوال أخرى لتعود بحجم اللوت لكل صفقه ...

    كود PHP:


    double  openprice1
    ()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==1) {double openprice1 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice1);
    }

    /////////////////
    double  openprice2()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==2) {double openprice2 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice2);
    }

    ////////////////////
    double  openprice3()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice3);
    }
    //////////////////////
    double  openprice4()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==4) {double openprice4 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice4);
    }
    //////////////////////
    double  openprice5()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==5) {double openprice5 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice5);
    }
    //////////////////
    //+++++++++++++++
    /////////////////

    double  lot1()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==1) {double lot1 =OrderLots() ;}
          
          }
      }
      return( 
    lot1);
    }

    /////////////////

    double  lot2()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==2) {double lot2 =OrderLots() ;}
          
          }
      }
      return( 
    lot2);
    }

    /////////////////

    double  lot3()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==3) {double lot3 =OrderLots() ;}
          
          }
      }
      return( 
    lot3);
    }

    /////////////////

    double  lot4()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==4) {double lot4 =OrderLots() ;}
          
          }
      }
      return( 
    lot4);
    }

    /////////////////

    double  lot5()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==5) {double lot5 =OrderLots() ;}
          
          }
      }
      return( 
    lot5);
    }

    ///////////////////// 
    ثم قمت بتعريف متغير لحساب المعادله : حاصل جمع(كل عقد مضروب في نقطة الدخول ) مقسوما على مجموع العقود ( أي أقوم بضرب كل لوت في سعر افتتاح الصفقه الخاصه به ثم أجمعهم مع بعضهم و أقوم بقسمة الناتج على مجموع اللوتات للصفقات جميعها ).. و يقوم بحساب المعادله في حالة كانت الصفقات مساويه ل5 صفقات ..
    كود PHP:

     
    if( orderstotal()>=5)
         {
         
    double equi =(  (lot1()*openprice1() )+(lot2()*openprice2() )+(lot3()*openprice3() )+(lot4()*openprice4() ) +(lot5()*openprice5() )  ) / ( lot1()+lot2()+lot3()+lot4()+lot5() ) ;
        
         } 
    و لكن يعطيني خطأ في الجورنال بأن ناتج القسمه زيرو zero divide ..
    فما الأخطاء بالأكواد أو الفكره بارك الله فيك ..
    و جزاك الله كل خير .
    آخر تعديل بواسطة dentist_hussein ، 31-08-2013 الساعة 07:47 AM
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  8. #4298
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    هل تريد تغير الماجيك نمبر للإكسبرتات الأخرى التي تعمل و تفتح الصفقات ؟ أم لهذا الإكسبرت
    لأنه طبيعي بهذا الشكل لن يتغير الماجيك نمبر للإكسبرتات الأخرى لأن لكل إكسبرت المتغيرات الخاصه به
    تمام أستاذي
    أريد عند تحقق هدف الاكويتي يتم تغيير ماجيك نمبر للاكسبيرتات الأخرى لكي تبدأ باللوت الأساسي (لأنها اكسبيرتات مضاعفات )
    إذن هل يجب دمج كود اكسبيرت إدارة الصفقات مع باقي الاكسبيرتات ؟ يعني كل اكسبيرت يكون فيه إغلاق كلي وتغيير الماجيك نمبر الخاص به.. ؟
    آخر تعديل بواسطة kira-h ، 31-08-2013 الساعة 03:28 PM
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    تمام أستاذي
    أريد عند تحقق هدف الاكويتي يتم تغيير ماجيك نمبر للاكسبيرتات الأخرى لكي تبدأ باللوت الأساسي (لأنها اكسبيرتات مضاعفات )
    إذن هل يجب دمج كود اكسبيرت إدارة الصفقات مع باقي الاكسبيرتات ؟ يعني كل اكسبيرت يكون فيه إغلاق كلي وتغيير الماجيك نمبر الخاص به.. ؟
    يوجد حل أسهل و إستخدام الداله GlobalVariableSet لتغيير الماجيك نمبر ثم يمكن لاحقا أن تستدعي الإكسبرتات الأخرى القيم بالداله GlobalVariableGet
    مثلا ستقوم بتعديل كود هذا الإكسبرت إلى
    كود PHP:
    static int Num
        if(
    Win_Stop&&(acc >=NewEquity)) 
        { 
         
    CloseDeleteAll();
         
    CloseDeleteAllCurrent();
         
    CloseDeleteAllNonPending();
         
    CloseDeleteAllCurrentNonPending();
         
    NewEquity=NewEquity+USDProfit;
         
    Num++;
         
    GlobalVariableSet("AddedNumber",Num);
        } 
    بالتالي في كل مره سيغلق الصفقات سوف يزيد قيمة الرقم Num
    ثم في الإكسبرتات الأخرى سوف يقوم قيمة الماجيك نمبر لكل واحد
    كود PHP:
    newMagicNumber=MagicNumber+GlobalVariableGet("AddedNumber"); 
    أو طبعا حسب المتغيرات الذي قمت بوضعها حيث MagicNumber هو الماجيك نمبر الأصلي
    و newMagicNumber هو الماجيك نمبر الجديد الذي ستستخدمه مع الصفقات
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  10. #4300
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    يوجد حل أسهل و إستخدام الداله GlobalVariableSet لتغيير الماجيك نمبر ثم يمكن لاحقا أن تستدعي الإكسبرتات الأخرى القيم بالداله GlobalVariableGet
    مثلا ستقوم بتعديل كود هذا الإكسبرت إلى
    كود PHP:
    static int Num
        if(
    Win_Stop&&(acc >=NewEquity)) 
        { 
         
    CloseDeleteAll();
         
    CloseDeleteAllCurrent();
         
    CloseDeleteAllNonPending();
         
    CloseDeleteAllCurrentNonPending();
         
    NewEquity=NewEquity+USDProfit;
         
    Num++;
         
    GlobalVariableSet("AddedNumber",Num);
        } 
    بالتالي في كل مره سيغلق الصفقات سوف يزيد قيمة الرقم Num
    ثم في الإكسبرتات الأخرى سوف يقوم قيمة الماجيك نمبر لكل واحد
    كود PHP:
    newMagicNumber=MagicNumber+GlobalVariableGet("AddedNumber"); 
    أو طبعا حسب المتغيرات الذي قمت بوضعها حيث MagicNumber هو الماجيك نمبر الأصلي
    و newMagicNumber هو الماجيك نمبر الجديد الذي ستستخدمه مع الصفقات
    بارك الله فيك حبيبي اسامة وجزاك الله خير
    الله يوفقك في الدنيا والآخرة
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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


    أستاذ أسامه لو تكرمت لي سؤال آخر بخلاف الذي في الإقتباس .. و أعتذر لأني أتعبتك معي .. في ميزان حسناتك إن شاء الله ..

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

    فقمت بتعريف خمس دوال كل داله تعود بسعر الافتتاح للصفقه رقم 1 و أخرى تعود بسعر الافتتاح للصفقه رقم2 حتى الصفقه خمسه .. و كذلك خمس دوال أخرى لتعود بحجم اللوت لكل صفقه ...

    كود PHP:


    double  openprice1
    ()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==1) {double openprice1 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice1);
    }

    /////////////////
    double  openprice2()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==2) {double openprice2 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice2);
    }

    ////////////////////
    double  openprice3()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice3);
    }
    //////////////////////
    double  openprice4()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==4) {double openprice4 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice4);
    }
    //////////////////////
    double  openprice5()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==5) {double openprice5 =OrderOpenPrice() ;}
          
          }
      }
      return( 
    openprice5);
    }
    //////////////////
    //+++++++++++++++
    /////////////////

    double  lot1()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==1) {double lot1 =OrderLots() ;}
          
          }
      }
      return( 
    lot1);
    }

    /////////////////

    double  lot2()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==2) {double lot2 =OrderLots() ;}
          
          }
      }
      return( 
    lot2);
    }

    /////////////////

    double  lot3()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==3) {double lot3 =OrderLots() ;}
          
          }
      }
      return( 
    lot3);
    }

    /////////////////

    double  lot4()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==4) {double lot4 =OrderLots() ;}
          
          }
      }
      return( 
    lot4);
    }

    /////////////////

    double  lot5()
    {
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
             if (
    orderstotal()==5) {double lot5 =OrderLots() ;}
          
          }
      }
      return( 
    lot5);
    }

    ///////////////////// 
    ثم قمت بتعريف متغير لحساب المعادله : حاصل جمع(كل عقد مضروب في نقطة الدخول ) مقسوما على مجموع العقود ( أي أقوم بضرب كل لوت في سعر افتتاح الصفقه الخاصه به ثم أجمعهم مع بعضهم و أقوم بقسمة الناتج على مجموع اللوتات للصفقات جميعها ).. و يقوم بحساب المعادله في حالة كانت الصفقات مساويه ل5 صفقات ..
    كود PHP:

     
    if( orderstotal()>=5)
         {
         
    double equi =(  (lot1()*openprice1() )+(lot2()*openprice2() )+(lot3()*openprice3() )+(lot4()*openprice4() ) +(lot5()*openprice5() )  ) / ( lot1()+lot2()+lot3()+lot4()+lot5() ) ;
        
         } 
    و لكن يعطيني خطأ في الجورنال بأن ناتج القسمه زيرو zero divide ..
    فما الأخطاء بالأكواد أو الفكره بارك الله فيك ..
    و جزاك الله كل خير .
    أولا لديك أخطاء في إستدعاء حجم لوت و سعر كل صفقة معينه
    أنت وضعت الشرط
    كود PHP:
    if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;} 
    وهذا يعني إذا كان عدد الصفقات يساوي 3 وليس أن هذه الصفقة رقم 3
    فالصحيح هو كمثال
    كود PHP:
    double  openprice3()
    {
     
    int OrderNumber;
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
           
    OrderNumber++;
             if (
    OrderNumber==3) {
             
    double openprice3 =OrderOpenPrice() ;
             return( 
    openprice3);
            }
          }
      }
      return( 
    0);

    ثانيا بالنسبه للفكره لا تحتاج لعمل خمس دوال لحساب الصفقات ويكفي دالة واحده ستحسب مجموع كل سعر مضروب في حجم اللوت
    وتحسب نقطة التعادل مباشرة
    مثال هذه دالة قمت بعمله و إستخدامها في إكسبرتاتي سابقا
    كود PHP:
    double BreakPoint(int type)
    {
     
    double Price;double Lots;
     for(
    int i=0;i<=OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       
    Price+=OrderOpenPrice()*OrderLots();
       
    Lots+=OrderLots();
      }
     }

    if(
    Lots!=0) return(Price/Lots);

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

  12. #4302
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    أولا لديك أخطاء في إستدعاء حجم لوت و سعر كل صفقة معينه
    أنت وضعت الشرط
    كود PHP:
    if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;} 
    وهذا يعني إذا كان عدد الصفقات يساوي 3 وليس أن هذه الصفقة رقم 3
    فالصحيح هو كمثال
    كود PHP:
    double  openprice3()
    {
     
    int OrderNumber;
      for (
    int i =0;i<OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
          {
           
    OrderNumber++;
             if (
    OrderNumber==3) {
             
    double openprice3 =OrderOpenPrice() ;
             return( 
    openprice3);
            }
          }
      }
      return( 
    0);

    ثانيا بالنسبه للفكره لا تحتاج لعمل خمس دوال لحساب الصفقات ويكفي دالة واحده ستحسب مجموع كل سعر مضروب في حجم اللوت
    وتحسب نقطة التعادل مباشرة
    مثال هذه دالة قمت بعمله و إستخدامها في إكسبرتاتي سابقا
    كود PHP:
    double BreakPoint(int type)
    {
     
    double Price;double Lots;
     for(
    int i=0;i<=OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       
    Price+=OrderOpenPrice()*OrderLots();
       
    Lots+=OrderLots();
      }
     }

    if(
    Lots!=0) return(Price/Lots);

    بالنسبه للسؤال الأول فأرجو أن تشرحه مره أخرى

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

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







    السلام عليكم
    الطريقه السابقه لم تفي بالغرض ...
    أنا فكرت بعمل داله تحفظ و تعود بالسعر الذي يكون الفرق بينه و بين آخر مستوى دخول عدد نقاط أحددها خارجيا LastOrderOpenPrice

    كود:
     double D(){ 
      for(int i=OrdersTotal()-1; i>=0; i--){ 
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){ 
      
      double D= MathAbs(Bid-LastOrderOpenPrice() ) ;
       return(D ); 
      } 
     } 
     return(0); 
    }
    ثم قمت بتعريف متغير يقوم بحساب الفرق بين السعر الحالي و قمة الداله السابقة
    كود PHP:
    double d=MathAbs(Close[0]-D() ); 
    ووضعت ف الشروط
    كود PHP:
    if ( d>=LastOrderDef *point 
    ومسحت هذا الشرط
    كود PHP:
    && Time0!=Time[0
    حتى لو تحققت الشروط في نفس الشمعه يقوم بفتح الصفقات .. فما الخطأ لأن بعد هذه الخطوات لا يقوم الإكسبيرت بفتح الصفقه بعد الإبتعاد عن المستوى الأخير بعدد النقاط كما أريد ...
    و جزاكم الله خيرا .
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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



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

    طيب بما أن سعر فتح آخر صفقة هو بمجرد لمس مستوى معين بالتالي لا يوجد داعي لمعرفة سعر المستوى لكن يمكن أن نحدد سعر آخر صفقة تم فتحها سيكون أسهل بما أنهم من نفس النقطه
    وستضع الشرط فقط
    فلا داعي لعمل أي داله جديده ويكفي أن تستخدم الداله LastOrderOpenPrice
    كود PHP:
    if(MathAbs(Bid-LastOrderOpenPrice())>LastOrderDef*point 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  14. #4304
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    طيب بما أن سعر فتح آخر صفقة هو بمجرد لمس مستوى معين بالتالي لا يوجد داعي لمعرفة سعر المستوى لكن يمكن أن نحدد سعر آخر صفقة تم فتحها سيكون أسهل بما أنهم من نفس النقطه
    وستضع الشرط فقط
    فلا داعي لعمل أي داله جديده ويكفي أن تستخدم الداله LastOrderOpenPrice
    كود PHP:
    if(MathAbs(Bid-LastOrderOpenPrice())>LastOrderDef*point 

    تمام أستاذ أسامه
    لكن هكذا كما ذكرت حضرتك سيحسب الفرق بين سعر البيد الحالي و سعر دخول آخر صفقه لحظة دخول الصفقه التاليه أي مع تحقق الشروط .. ولو كان الشرط مثلا إعادة لمس نفس المستوى المساوي لنقطة دخول آخر صفقه .. وقتها سيحسب الفرق بين البيد و سعر دخول آخر صفقه و البيد الآن قريب أو مساوى لسعر دخول آخر صفقه .. فأعتقد أنه لن يتحقق الشرط كما أريد .. لذلك كنت قد فكرت سابقا بداله تحفظ السعر أو الفرق عندما يصبح الفرق كما أريده ..
    .. وأيضا واجهتني مشكله بالنسبه للشروط
    كود PHP:
    if ( orderstotal()<&& Time0!=Time[0] && d>=LastOrderDef *point 
    فكنت أريد أن يتم فتح صفقه إذا تحققت الشروط في نفس الشمعة دون أن تغلق و في نفس الوقت لا يتم فتح الخمس صفقات دفعه واحده في حالة حذف الشرط
    كود PHP:
    Time0!=Time[0
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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


    تمام أستاذ أسامه
    لكن هكذا كما ذكرت حضرتك سيحسب الفرق بين سعر البيد الحالي و سعر دخول آخر صفقه لحظة دخول الصفقه التاليه أي مع تحقق الشروط .. ولو كان الشرط مثلا إعادة لمس نفس المستوى المساوي لنقطة دخول آخر صفقه .. وقتها سيحسب الفرق بين البيد و سعر دخول آخر صفقه و البيد الآن قريب أو مساوى لسعر دخول آخر صفقه .. فأعتقد أنه لن يتحقق الشرط كما أريد .. لذلك كنت قد فكرت سابقا بداله تحفظ السعر أو الفرق عندما يصبح الفرق كما أريده ..
    .. وأيضا واجهتني مشكله بالنسبه للشروط
    كود PHP:
    if ( orderstotal()<&& Time0!=Time[0] && d>=LastOrderDef *point 
    فكنت أريد أن يتم فتح صفقه إذا تحققت الشروط في نفس الشمعة دون أن تغلق و في نفس الوقت لا يتم فتح الخمس صفقات دفعه واحده في حالة حذف الشرط
    كود PHP:
    Time0!=Time[0
    طيب الأفضل الآن أن تضيف مستويات المؤشر التي تقوم بالدخول منها إلى الإكسبرت
    ما هو المؤشر الذي تستخدمه ؟

    بالنسبه للخطأ لديك في الكود السابق الذي قمت بعمله
    الداله
    كود PHP:
    D() 
    سوف تعود بقيمة الفرق بالنقاط فعندما إستخدمتها في الكود
    كود PHP:
    double d=MathAbs(Close[0]-D() ); 
    فمثلا سيكون القيمه رقم مثل 1.4033
    فعندما وضعت الشرط
    كود PHP:
    if ( d>=LastOrderDef *point 
    سيكون شرط خاطئ كأنك تقول 1.4033 أكبر من مثلا 0.0050 أو حسب قيمة المتغير الذي وضعته
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

  1. موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
    By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 11
    آخر مشاركة: 15-12-2023, 02:03 PM
  2. عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
    By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملات
    مشاركات: 280
    آخر مشاركة: 27-08-2009, 10:30 PM

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


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