اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4 (https://fx-arabia.com/vb/showthread.php?t=34302)

ابو سمر 05-01-2014 04:27 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة العوامى (المشاركة 648282)


،،،ما هو الكود المطلوب يا ابو سمر ، هل تريد مثلا كود لرسم خط افقى على شمعة الشهرى ، وكيف تريد رسم المستطيل ، هل هناك احداثيات معينة للرسم،،،

انا عملت مؤشر للرينج يجمع اكثر من فريم من الشهرى الى الساعه
وجعلت لكل فريم اعداد من النوع بولين للاختيار بين اظهاره او اخفاءه
واضفت المتغير شيفت لتحديد رقم الشمعه من اعدادات المؤشر
فعند اختيار شمعه ولتكن
رقم 2 على الفريم الشهرى سيكون التاريخ 1/11/2013
عندما اغير الفريم الى اسبوعى او يومى فانا اريد ان يظهر الخط عند تاريخ 1/11/2013
ولكنه يظهر على الشمعه رقم 2 للاسبوعى او اليومى
اما بالنسبه للمستطيل
اريد رسمه على رينج الفتره كامله
فمثلا
عند اختيار الشمعه 3 لفريم اسبوعى
يرسم مستطيل على هذه الفتره لفريم 4 ساعات
وعند اختيار شمعه 3 لفريم يومى
يرسم مستطيل على فترة فريم الساعه





ابو سمر 05-01-2014 04:57 PM

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

http://www.fx-arabia.com/vb/uploaded...1388930250.jpg

GBPJPY 05-01-2014 05:47 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة العوامى (المشاركة 648286)


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

كود:


  double h = iHigh(Symbol(),PERIOD_M5,1);
  double l = iLow(Symbol(),PERIOD_M5,1);
 
  double t = MathAbs(h-l);
 
  Comment(t);


شكرا لك استاذى الكريم

اسلام العوامى 05-01-2014 06:20 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ابو سمر (المشاركة 648298)
انا عملت مؤشر للرينج يجمع اكثر من فريم من الشهرى الى الساعه
وجعلت لكل فريم اعداد من النوع بولين للاختيار بين اظهاره او اخفاءه
واضفت المتغير شيفت لتحديد رقم الشمعه من اعدادات المؤشر
فعند اختيار شمعه ولتكن
رقم 2 على الفريم الشهرى سيكون التاريخ 1/11/2013
عندما اغير الفريم الى اسبوعى او يومى فانا اريد ان يظهر الخط عند تاريخ 1/11/2013
ولكنه يظهر على الشمعه رقم 2 للاسبوعى او اليومى
اما بالنسبه للمستطيل
اريد رسمه على رينج الفتره كامله
فمثلا
عند اختيار الشمعه 3 لفريم اسبوعى
يرسم مستطيل على هذه الفتره لفريم 4 ساعات
وعند اختيار شمعه 3 لفريم يومى
يرسم مستطيل على فترة فريم الساعه





،،،بالنسبة للخطوط فيكون الكود الخاص بها كالتالى،،،

كود:


  for  (i=Bars-1;i>=0;i--) {
 
          int StartCandle=(iBarShift(Symbol(),PERIOD_MN1,Time[i],false)+1);
datetime ff =      iTime(Symbol(),PERIOD_MN1,StartCandle);
     
     
        {           
            ObjectCreate("VLine"+i, OBJ_VLINE, 0,ff, 0);
            ObjectSet("VLine"+i, OBJPROP_STYLE,Style);
            ObjectSet("VLine"+i, OBJPROP_COLOR, Color);
            ObjectSet("VLine"+i, OBJPROP_WIDTH,Width);
        }         
     

  }

،،،اما بالنسبة لرسم المستطيل فيكون مثل الكود التالى ولكن تقوم بعمل متغير وتضعه فى مكان الرقم 3 ،،،

كود:


 datetime  Time1 = iTime(Symbol(),PERIOD_W1,3);
 double    pric1 = iHigh(Symbol(),PERIOD_W1,3);
 datetime  Time2 = iTime(Symbol(),PERIOD_W1,3-1);
 double  pric2 = iLow(Symbol(),PERIOD_W1,3);
   
    ObjectCreate("V"+i, OBJ_RECTANGLE, 0,Time1, pric1,Time2,pric2);
            ObjectSet("V", OBJPROP_STYLE,Style);
            ObjectSet("V", OBJPROP_COLOR, Color);
            ObjectSet("V", OBJPROP_WIDTH,Width);


valantinolala 05-01-2014 06:23 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة العوامى (المشاركة 648241)


،،،وعليكم السلام ورحمة الله وبركاتة،،،

،،،اهلا بك اخى الكريم ، اولا ستحتاج الى وظيفة لمسح الاوامر المعلقة كالتالى،،،

كود:


void Delete(int type){
for(int a=0;a<OrdersTotal();a++){
if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
if(OrderType()==type && OrderMagicNumber()==Magicnumber){
OrderDelete(OrderTicket());
  }
  }
 }


،،،ودالة اخرى لحساب عدد الصفقات المفتوحة حسب النوع،،،

كود:


 int ordercount(int type){
 int x=0;
  for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol() && Magicnumber==OrderMagicNumber()&& OrderType()==type){
        x++;
      }
    }
  }
    return(x);
  }


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

كود:


if(ordercount(OP_BUY)==1){Delete(OP_SELLSTOP);}
if(ordercount(OP_SELL)==1){Delete(OP_BUYSTOP);}



الف شكر لك اخي علي الساعده

اسلام العوامى 05-01-2014 06:33 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

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

http://www.fx-arabia.com/vb/uploaded...1388930250.jpg

،،،يجب ان تعرف الرينج الذى تريد ان تبحث فيه ، وتستخدم الكود التالى،،،

كود:


 int StartCandle=(iBarShift(Symbol(),PERIOD_W1,Time[0],false)+1);
double  high = High[iHighest(Symbol(),PERIOD_W1,MODE_HIGH,30,StartCandle)];
double  low = Low[iLowest(Symbol(),PERIOD_W1,MODE_LOW,30,StartCandle)];


،،،فى هذا المثال قمت بالبحث عن اعلى هاى واقل لو لفترة 30 شمعة على فريم الويكلى تبدأ من الشمعه رقم صفر،،،

GBPJPY 06-01-2014 12:49 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
السلام عليكم استاذى العوامى
طيب انا عايز طريقة التوقيت
بمعنى
فى وقت مثلا 20 دقيقة تحرك السعر 40 نقطة
يتم فتح صفقة بيع ا وشراء
وبعد فتح الصفقة
يتم العمل من جديد
ويحسب التوقيت مع السعر النقاط
ولك الشكر والعرفان

sunegypt 06-01-2014 02:31 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 648243)


،،،وعليكم السلام ورحمة الله وبركاتة،،،

،،،اولا سوف تحتاج الى دالة لمعرفة اكبر ربح موجود،،،

كود:


double MaxProfit()
{
    for(int i = OrdersTotal() - 1; i >= 0; i--)
      {                                                     
      if( OrderSelect(i, SELECT_BY_POS) &&  OrderMagicNumber()== MagicNumber &&  OrderSymbol()== Symbol()  )
        {
        if( iBarShift(NULL,0,OrderOpenTime(),false) > 1 )
            {
            double Max_Profit = MathMax(Max_Profit,OrderProfit() );
            }
        else
            {
            Max_Profit = OrderProfit();
            }
       
        }
        }
        return(Max_Profit);
}

،،،بعد ذلك تحتاج الى دالة تقوم بالمرور على الصفقات واختيار صفقة واحدة ربحها اكبر من او يساوى اعلى ربح وتقوم باغلاقها،،،

كود:


void CloseMaxProfit()
{
  int ticket;
 
  double profit = MaxProfit();
 
 
        for (int i =1 ;i>0;i--) 
 
          {
 
            for (int x = OrdersTotal()-1;x>0;x--)
             
       
                {
 
                OrderSelect(x,SELECT_BY_POS);
 
                if (OrderProfit() >= profit) ticket = OrderTicket();
                     
 
                }
                   
                           
            OrderSelect(ticket,SELECT_BY_TICKET);
 
            if (OrderType() == OP_BUY)
            OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),NULL);
            if (OrderType() == OP_SELL)
            OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),NULL);   
           
                 
          }
     
  }



استاذى الغالى اسلام

اسف والله لانى بتعبك معى كثيرا

لكن الكود المكتوب هنا الان لايغلق اكبر صفقه رابحه .. ولكن يغلق اخر صفقه دائما كلما فتحت .. ( باعتبار ان اخر صفقه هى اكبر صفقه )...

وبالتالى فهو بيصفر الحساب فى اربع ساعات فقط

***** المطلوب *****

عندما يرتد السعر ويفتح صفقه شراء يشوف صفقات البيع الرابحه ويغلق اكبر صفقه رابحه فقط

وعندما يرتد السعر ويفتح صفقه بيع يشوف صفقات الشراء الرابحه ويغلق اكبر صفقه رابحه فقط

.................................................. .......................................

ومطلوب نفس الطلب السابق ولكن لاغلاق اقل صفقه رابحه اخى اسلام ..


يعنى نفس الطلب ولكن على اغلاق اقل لوت حجما رابح ..



أرجوا ان تكون فكرتى وصلتك استاذى الكريم

فأنا اجرب بعض الامور واريد ان اعرف ايهما افضل

وأسف استاذى الغالى على تعبك معنا

ربنا يزيدك من فضله وعلمه

اللهم امين

اسلام العوامى 06-01-2014 04:42 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة GBPJPY (المشاركة 649499)
السلام عليكم استاذى العوامى
طيب انا عايز طريقة التوقيت
بمعنى
فى وقت مثلا 20 دقيقة تحرك السعر 40 نقطة
يتم فتح صفقة بيع ا وشراء
وبعد فتح الصفقة
يتم العمل من جديد
ويحسب التوقيت مع السعر النقاط
ولك الشكر والعرفان

،،،بالنسبة للتوقيت سوف تستخدم امر sleep فى اول ستارت وتضع المدة التى تريدها بالمللى ثانية بمعنى اذا اردت ان يتوقف الاكسبيرت لمدة عشرين دقيقة ثم يعاود العمل تكتب السطر التالى فى اول ستارت،،،

كود:


Sleep(1200000);


اسلام العوامى 06-01-2014 04:44 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sunegypt (المشاركة 649509)
استاذى الغالى اسلام

اسف والله لانى بتعبك معى كثيرا

لكن الكود المكتوب هنا الان لايغلق اكبر صفقه رابحه .. ولكن يغلق اخر صفقه دائما كلما فتحت .. ( باعتبار ان اخر صفقه هى اكبر صفقه )...
هل يقوم باغلاق الصفقة حتى اذا كانت خاسرة؟؟
وبالتالى فهو بيصفر الحساب فى اربع ساعات فقط

***** المطلوب *****

عندما يرتد السعر ويفتح صفقه شراء يشوف صفقات البيع الرابحه ويغلق اكبر صفقه رابحه فقط

وعندما يرتد السعر ويفتح صفقه بيع يشوف صفقات الشراء الرابحه ويغلق اكبر صفقه رابحه فقط

.................................................. .......................................

ومطلوب نفس الطلب السابق ولكن لاغلاق اقل صفقه رابحه اخى اسلام ..


يعنى نفس الطلب ولكن على اغلاق اقل لوت حجما رابح ..



أرجوا ان تكون فكرتى وصلتك استاذى الكريم

فأنا اجرب بعض الامور واريد ان اعرف ايهما افضل

وأسف استاذى الغالى على تعبك معنا

ربنا يزيدك من فضله وعلمه

اللهم امين

،،،هناك استفسار بالاقتباس،،،

sunegypt 07-01-2014 04:10 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
نعم استاذى اسلام ..

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

حضرتك ممكن تجربها بنفسك

منتظر ردك استاذى الكريم

sunegypt 07-01-2014 04:17 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
على فكرة استاذى

انا جربت الكود على اكثر من برنامج وعلى اكثر من زوج

وبالفعل يقوم بذلك فى كل الحالات

اسلام العوامى 07-01-2014 09:32 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sunegypt (المشاركة 649731)
على فكرة استاذى

انا جربت الكود على اكثر من برنامج وعلى اكثر من زوج

وبالفعل يقوم بذلك فى كل الحالات

،،،جرب الوظيفة التالية فقط،،،

كود:


void CloseMaxProfit()
{
  int ticket;
 
  double profit ;
 
 
        for (int i =1 ;i<OrdersTotal();i++) 
 
          {
 
            for (int x = OrdersTotal()-1;x>0;x--)
             
       
                {
 
                OrderSelect(x,SELECT_BY_POS);
 
                if (OrderProfit() >= profit  && OrderProfit()>0) ticket = OrderTicket();
                     
 
                }
                   
                           
            OrderSelect(ticket,SELECT_BY_TICKET);
 
            if (OrderType() == OP_BUY)
            OrderClose(ticket,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),NULL);
            if (OrderType() == OP_SELL)
            OrderClose(ticket,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),NULL);   
           
                 
          }
     
  }


sunegypt 09-01-2014 05:21 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 649749)


،،،جرب الوظيفة التالية فقط،،،

كود:


void CloseMaxProfit()
{
  int ticket;
 
  double profit ;
 
 
        for (int i =1 ;i<OrdersTotal();i++) 
 
          {
 
            for (int x = OrdersTotal()-1;x>0;x--)
             
       
                {
 
                OrderSelect(x,SELECT_BY_POS);
 
                if (OrderProfit() >= profit  && OrderProfit()>0) ticket = OrderTicket();
                     
 
                }
                   
                           
            OrderSelect(ticket,SELECT_BY_TICKET);
 
            if (OrderType() == OP_BUY)
            OrderClose(ticket,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),NULL);
            if (OrderType() == OP_SELL)
            OrderClose(ticket,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),NULL);   
           
                 
          }
     
  }


سلام عليكم استاذى الكريم اسلام

اولا : جزاك الله تعالى خيرا اخى الكريم على تعبك معنا هنا

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

ثانيا : بخصوص الداله هذه ففيها مشكله

الداله تغلق ايضا اخر لوت اذا كان رابح

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

الفكرة انى اريد داله اركبها على اى اكسبيرت فكرتها

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

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

أرجوا ان تكون الفكرة وصلت اليك استاذى الحبيب اسلام

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

الداله فى حاله الاردتداد فقط ينفذ الداله

أرجوا ان تكون الفكرة وضحت استاذى الحبيب

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

منتظر ردك استاذى الكريم

اسلام العوامى 09-01-2014 09:35 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sunegypt (المشاركة 650408)


سلام عليكم استاذى الكريم اسلام

اولا : جزاك الله تعالى خيرا اخى الكريم على تعبك معنا هنا

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

ثانيا : بخصوص الداله هذه ففيها مشكله

الداله تغلق ايضا اخر لوت اذا كان رابح

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

الفكرة انى اريد داله اركبها على اى اكسبيرت فكرتها

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

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

أرجوا ان تكون الفكرة وصلت اليك استاذى الحبيب اسلام

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

الداله فى حاله الاردتداد فقط ينفذ الداله

أرجوا ان تكون الفكرة وضحت استاذى الحبيب

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

منتظر ردك استاذى الكريم

،،،اذا اردت ان تعمل الوظيفة فى حالة الارتداد فقط فيجب ان تقوم باستدعائها فقط فى حالة الارتداد ، بمعنى انت لديك صفقات بيع تقوم بوضع جملة شرطية اذا كان عدد صفقات البيع اكبر من 1 او 2 وصفقات الشراء اكبر من 0 فهذا معناه ان الارتداد حدث وتم فتح صفقة شراء فتقوم باستدعاء الوظيفة وشرط اخر اذا كان عدد صفقات الشراء اكبر من 2 مثلا وعدد صفقات البيع اكبر من 0 فهذا معناه ان الارتداد حدث وتم فتح صفقة بيع تقوم باستدعائها مرة اخرى،،،

كود:


if(orderscnt(OP_BUY)>=2 && orderscnt(OP_SELL)>0){CloseMaxProfit();}
if(orderscnt(OP_SELL)>=2 && orderscnt(OP_BUY)>0){CloseMaxProfit();}

،،،وهذه وظيفة عدد الصفقات حسب النوع،،،

كود:



 int orderscnt(int type){
 int cnt=0;
  for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& OrderType()==type){
        cnt++;
      }
    }
  }
    return(cnt);
  }


sunegypt 09-01-2014 02:13 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
شوف استاذى اسلام

انا كنت اعمل بهذه الداله لاغلاق كل الصفقات الرابحه عندما يرتد السعر
كود:

void }CloseProfitOnly(int type)
{
 for(int i=OrdersTotal()-1;i>=0;i--)
 {
  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
  {
  if(OrderType()==OP_BUY&&OrderProfit()>0)
  {
    OrderClose(OrderTicket(),OrderLots(),Bid,3*Q);
  }
  if(OrderType()==OP_SELL&&OrderProfit()>0)
  {
    OrderClose(OrderTicket(),OrderLots(),Ask,3*Q);
   
   
   
   
  }
  }
 }
}

فأذا وضعت امر الشراء

كود:

OrderSend(Symbol(),OP_Buy,Lot,Ask,3,0,0,"Sunegypt",MagicNumber,0);
كنت اضع تحتها مباشرة

كود:

CloseProfitOnly(OP_Sell);
واذا وضعت امر بيع

كود:

OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Sunegypt",MagicNumber,0);
كنت اضع تحتها مباشرة

كود:

CloseProfitOnly(OP_Buy);
وكان بمجرد ان يفتح صفقه الشراء يغلق صفقات البيع الرابحه مباشرة

واذا فتح صفقه بيع يقوم بأغلاق صفقات الشراء الرابحه فقط مباشرة ايضا

ولكن هذا يسبب بعض الفجوات بين الايكوتى والرصيد الفعلى

فحاولت ان اغلق الصفقه الرابحه الاكبر حجما فقط لعلها تقلل من تلك الفجوة

أرجوا ان تكون فهمت ما أريد استاذى الحبيب اسلام

يعنى لو تم عمل الداله التى تغلق اكبر لوت رابح فقط

فسوف اضع اسم الداله فقط تحت امر الشراء والبيع وفقط


وبجد اسف انى بتقل على حضرتك استاذى الكريم

اسلام العوامى 09-01-2014 02:52 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sunegypt (المشاركة 650472)
شوف استاذى اسلام

انا كنت اعمل بهذه الداله لاغلاق كل الصفقات الرابحه عندما يرتد السعر
كود:

void }CloseProfitOnly(int type)
{
 for(int i=OrdersTotal()-1;i>=0;i--)
 {
  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
  {
  if(OrderType()==OP_BUY&&OrderProfit()>0)
  {
    OrderClose(OrderTicket(),OrderLots(),Bid,3*Q);
  }
  if(OrderType()==OP_SELL&&OrderProfit()>0)
  {
    OrderClose(OrderTicket(),OrderLots(),Ask,3*Q);
   
   
   
   
  }
  }
 }
}

فأذا وضعت امر الشراء

كود:

OrderSend(Symbol(),OP_Buy,Lot,Ask,3,0,0,"Sunegypt",MagicNumber,0);
كنت اضع تحتها مباشرة

كود:

CloseProfitOnly(OP_Sell);
واذا وضعت امر بيع

كود:

OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Sunegypt",MagicNumber,0);
كنت اضع تحتها مباشرة

كود:

CloseProfitOnly(OP_Buy);
وكان بمجرد ان يفتح صفقه الشراء يغلق صفقات البيع الرابحه مباشرة

واذا فتح صفقه بيع يقوم بأغلاق صفقات الشراء الرابحه فقط مباشرة ايضا

ولكن هذا يسبب بعض الفجوات بين الايكوتى والرصيد الفعلى

فحاولت ان اغلق الصفقه الرابحه الاكبر حجما فقط لعلها تقلل من تلك الفجوة

أرجوا ان تكون فهمت ما أريد استاذى الحبيب اسلام

يعنى لو تم عمل الداله التى تغلق اكبر لوت رابح فقط

فسوف اضع اسم الداله فقط تحت امر الشراء والبيع وفقط


وبجد اسف انى بتقل على حضرتك استاذى الكريم

،،،فضلا قم بارفاق الاكسبيرت الذى تريد وضع الكود الجديد به،،،

valantinolala 12-01-2014 08:45 AM

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

"السلام عليكم ورحمه الله وبركاته اخي العوامي"

بعد اذن حضرتك انا عملت اكسيبرت بس ناقص شويه حجات
ممكن تعديل للاكسيبرت ...

فكره الاكسيبرت:

بيعلق صفقه شراء او بيع بناءا علي اخر شمعه ساعه لوصاعده شراء ولو هابطه بيع
وسعرفتح الصفقه بيكون علي الشكل التالي
0.9000
0.9010
0.9020
0.9030
يعني لو السعر الحالي
0.9057
واخر شمعه صاعده
يعلق صفقتين شراء بسعر
0.9050
و 0.9060
ولو السعر الحالي 0.9026
واخر شمعه ساعه هابطه
يعلق صفقتين بيع
بسعر
0.9020
و
0.9030
الهدف 10 والاستوب
10
وفي حاله ضرب الاستوب بيدخل بلوت ( 0.01 ثم 0.02و0.03و0.04و0.05و0.06و0.07و0.08............الخ) عكس اخر صفقه
وبهدف10 وستوب
10
وفي حاله اخر صفقه رابحه يبدأ من جديد باول لوت للاكسيبرت بدون اي مضاعفه..

ولك جزيل الشكر ...



http://www.fx-arabia.com/vb/uploaded...1389505211.zip

kimo_2010 12-01-2014 01:28 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
بعد اذنك استاذ اسلام

انا عملت اكسبيرت من البدايه لحد النهايه

بس جيت اعمل اكسبيرت على مؤشر خارجى

عملت استدعاء للمؤشر

double buy=iCustom(Symbol(),0,"اسم المؤشر",2,5);

بس معرفتش برضو اعمل بيع ولا شراء

اسلام العوامى 12-01-2014 01:51 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة kimo_2010 (المشاركة 651208)
بعد اذنك استاذ اسلام

انا عملت اكسبيرت من البدايه لحد النهايه

بس جيت اعمل اكسبيرت على مؤشر خارجى

عملت استدعاء للمؤشر

double buy=iCustom(Symbol(),0,"اسم المؤشر",2,5);

بس معرفتش برضو اعمل بيع ولا شراء

،،،يجب اولا ان تحدد قيمة الاندكس عند ظهوره على الشارت ويمكنك عمل ذلك عن طريق طباعة قيمة المتغير على الشارت ، كمثال على ما ارفقته فى مشاركتك المتغير هو buy وهو يساوى قيمة الاندكس رقم خمسة للشمعة رقم 2 ، فيمكنك كتابة السطر التالى لمعرفة قيمة الاندكس عند ظهوره على الشارت،،،
كود:


  Comment(buy);


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

كود:


if(buy!=0){OrderSend(            );}

،،،وتقوم بكتابة امر فتح الصفقة،،،



shobra 21-01-2014 12:04 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 555611)
تطبيق على ماتم شرحة
1- افتح اكسبيرت جديد وقم بحفظة فى مجلد الاكسبيرتات باسم fx-arabia
2 - قم بكتابة متغير واحد لكل نوع متغيرات
3 - قم بارفاق التطبيق بصيغته البرمجية والتنفيذية

اتمنى ان يشارك كل من يتابع ويريد تعلم البرمجة حتى نقيس مدى استيعاب الدروس





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


كود:

//+------------------------------------------------------------------+
//|                                                    fx arabia.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int a=1;
extern double b=1.01;
extern color c=Red;
extern string d="التدريب الاول";
extern bool e=1;

//+------------------------------------------------------------------+
//| expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+


اسلام العوامى 21-01-2014 09:41 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة shobra (المشاركة 663180)


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


كود:

//+------------------------------------------------------------------+
//|                                                    fx arabia.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int a=1;
extern double b=1.01;
extern color c=Red;
extern string d="التدريب الاول";
extern bool e=1;

//+------------------------------------------------------------------+
//| expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+


،،،الله ينور ، بالنسبة لمتغير الوقت والتاريخ يتم كتابته بهذه الطريقة،،،

كود:


datetime x = Time[0];
datetime xx = iTime(Symbol(),0,0);

،،،فى هذا المثال قمت بحجز متغير من نوع الوقت والتاريخ وقمت بتسميته x واعطاءه قيمة الوقت للشمعة الحالية ، وفى السطر الثانى نفس القيمة ولكن بطريقة اخرى،،،

،،،تابع بقية الدروس ومنتظر باقى تطبيقاتك،،،

،،،تحياتى،،،

ابو سمر 22-01-2014 05:22 AM

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

shobra 22-01-2014 10:09 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
2 مرفق
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 563775)
:1 (114):،،،إختبر نفسك،،،:1 (114):


1- قم بعمل اكسبيرت جديد وحفظه فى مجلد الاكسبيرتات .

2 - قم بوضع اسمك فى حقوق الملكية .

3 - قم باستخدام الاكواد المناسبة لعمل الاتى :
طباعة اسم الزوج والتايم فريم والوقت والتاريخ للشمعة الحالية على الشارت - التأكد من ان الوظائف الاساسية تعمل بشكل سليم


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

بارك الله فيك اخى
اجابه الاختبار

هذا هو المؤشر
كود:

//+------------------------------------------------------------------+
//|                                                  مؤشر shobra.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "shobra"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
  Print("التأكد من عمل داله int");
//---- indicators
//----
 
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Print("التأكد من عمل داله deinit");
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int    counted_bars=IndicatorCounted();
//----
  Comment(Symbol()+"                                      اسم الزوج"+
"\nالفريم الحالى                                          "+Period()+
"\nالتايخ والوقت للشمعه الحاليه  "+TimeToStr(Time[1]) );
Print("التأكد من عمل داله start"); 
//----
  return(0);
  }
//+------------------------------------------------------------------+

هذا هو الاسكربت

كود:

//+------------------------------------------------------------------+
//|                                                اسكربت shobra.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "shobra"
#property link      "http://www.metaquotes.net"
//+لاظهار رساله تأكيد+
#property show_confirm
//لاظهار مدخلات الاسكربت
#property show_inputs
extern string a="الى اللقاء";
int init()
  {Print("التأكد من عمل داله int");
//---- indicators
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(a);
Print("التأكد من عمل داله deinit");
//----
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
  Comment(Symbol()+"                                      اسم الزوج"+
"\nالفريم الحالى                                          "+Period()+
"\nالتايخ والوقت للشمعه الحاليه  "+TimeToStr(Time[1]) );
Print("التأكد من عمل داله start"); 
//----
  return(0);
  }
//+------------------------------------------------------------------+


اسلام العوامى 23-01-2014 09:18 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

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

،،،وعليكم السلام ورحمة الله وبركاته،،،

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

،،،تحياتى،،،

اسلام العوامى 23-01-2014 09:27 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة shobra (المشاركة 664161)

بارك الله فيك اخى
اجابه الاختبار

هذا هو المؤشر
كود:

//+------------------------------------------------------------------+
//|                                                  مؤشر shobra.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "shobra"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
  Print("التأكد من عمل داله int");
//---- indicators
//----
 
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Print("التأكد من عمل داله deinit");
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int    counted_bars=IndicatorCounted();
//----
  Comment(Symbol()+"                                      اسم الزوج"+
"\nالفريم الحالى                                          "+Period()+
"\nالتايخ والوقت للشمعه الحاليه  "+TimeToStr(Time[1]) );
Print("التأكد من عمل داله start"); 
//----
  return(0);
  }
//+------------------------------------------------------------------+

هذا هو الاسكربت

كود:

//+------------------------------------------------------------------+
//|                                                اسكربت shobra.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "shobra"
#property link      "http://www.metaquotes.net"
//+لاظهار رساله تأكيد+
#property show_confirm
//لاظهار مدخلات الاسكربت
#property show_inputs
extern string a="الى اللقاء";
int init()
  {Print("التأكد من عمل داله int");
//---- indicators
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(a);
Print("التأكد من عمل داله deinit");
//----
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
  Comment(Symbol()+"                                      اسم الزوج"+
"\nالفريم الحالى                                          "+Period()+
"\nالتايخ والوقت للشمعه الحاليه  "+TimeToStr(Time[1]) );
Print("التأكد من عمل داله start"); 
//----
  return(0);
  }
//+------------------------------------------------------------------+


،،،الله ينور ياشبرا ،،،

GBPJPY 25-01-2014 05:27 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
السلام عليكم استاذ العوامى
ارجو المساعدة
عايز اعرف كيف يتم عمل اكسبيرت الرينكو
مع التحكم فى m2 او m6
بمعنى
انا عايز الاكسبيرت يعمل على m6
وا m2
مع طريقة عرض شموع اليرنكو من الاكسبيرت
ولك الشكر والتقدير

اسلام العوامى 25-01-2014 05:39 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة GBPJPY (المشاركة 665210)
السلام عليكم استاذ العوامى
ارجو المساعدة
عايز اعرف كيف يتم عمل اكسبيرت الرينكو
مع التحكم فى m2 او m6
بمعنى
انا عايز الاكسبيرت يعمل على m6
وا m2
مع طريقة عرض شموع اليرنكو من الاكسبيرت
ولك الشكر والتقدير

،،،وعليكم السلام ورحمة الله وبركاته،،،

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

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex - عرض مشاركة واحدة -

Qamar14 26-01-2014 11:10 AM

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

فانا ابغا من الاكسبير يحلل 3 شموع وبناء عليه يفتح بيع او شراء
والاغلاق بتيك بروفيت اةو ستوب لوز

ولما تغلق الصفقه
ابغا اخلي الاكسبيرت يشوف 3 شموع اللي بعدها
وما بيستخدم نفس الشموع التلات السابقه

كيف اكون قادره على صياغه هاد الكود؟

اسلام العوامى 26-01-2014 11:31 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Qamar14 (المشاركة 665315)
انا عامله اكسبيرت خاصه بحركات الشموع
ولكن عندي مشكله في صياغه هاد الشرط

فانا ابغا من الاكسبير يحلل 3 شموع وبناء عليه يفتح بيع او شراء
والاغلاق بتيك بروفيت اةو ستوب لوز

ولما تغلق الصفقه
ابغا اخلي الاكسبيرت يشوف 3 شموع اللي بعدها
وما بيستخدم نفس الشموع التلات السابقه

كيف اكون قادره على صياغه هاد الكود؟

،،،ابسط واسهل طريقة هى استخدام الامر sleep لمدة الثلاث شموع ، مثلا اذا كانت التايم فريم دقيقة تقومى باستخدام sleep() وتعى بين الاقواس 180000 حيث ان الثانية تساوى 1000 مللى ثانية ،وعندما تنتهى مدة الامر تصبح الشموع الجديدة هى مجال عمل الاكسبيرت،،،

Qamar14 26-01-2014 11:57 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 665317)

،،،ابسط واسهل طريقة هى استخدام الامر sleep لمدة الثلاث شموع ، مثلا اذا كانت التايم فريم دقيقة تقومى باستخدام sleep() وتعى بين الاقواس 180000 حيث ان الثانية تساوى 1000 مللى ثانية ،وعندما تنتهى مدة الامر تصبح الشموع الجديدة هى مجال عمل الاكسبيرت،،،

يعني الشمعه الواحده للفريم 1 دقيقه = 60 الف
صح؟

ولفريم الساعه = 60 الف *60 * 60
صح؟

واليومي !!!!! رقم غريب راح يطلع صح؟

Qamar14 26-01-2014 12:25 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
شكرا ليك أخ العوامي

وللفائده العامه
هاد تبسيط للرقم بالمي تانيه للفريمات
بالمرفقات

اسلام العوامى 26-01-2014 12:45 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Qamar14 (المشاركة 665320)
يعني الشمعه الواحده للفريم 1 دقيقه = 60 الف
صح؟

ولفريم الساعه = 60 الف *60 * 60
صح؟

واليومي !!!!! رقم غريب راح يطلع صح؟

،،،تمام،،،

اقتباس:

المشاركة الأصلية كتبت بواسطة Qamar14 (المشاركة 665322)
شكرا ليك أخ العوامي

وللفائده العامه
هاد تبسيط للرقم بالمي تانيه للفريمات
بالمرفقات

،،،العفو ومشكورة على الملف،،،

cobra2010 28-01-2014 11:03 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
استاذ اسلام بارك الله فيك وتسلم على الشرح الأكثر من رائع

عندي اسئلة كثير ولكني اختصرها في الاتي حتى لا أثقل عليك

اولا : ما هو الفرق بين ( symbol , Null )

كود:

iHigh(Symbol(),PERIOD_D1,1);
و

كود:

iHigh(NULL(),PERIOD_D1,1);
ثانيا : وده الأهم عندي لو ان السعر الحالي محصور بين نقطتين ولتكن مثلا نقطة A و نقطة B (حيث A أعلى من B)

فكيف يمكن ان اجعل الاكسبيرت ان يشتري كلما زار السعر النقطة A واذا ارتد السعر للنقطة B فانه يقوم بالبيع بلوت مضاعف ويحتفظ بالشراء

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

وكلما زار النقطة B يقوم بالبيع ويضاعف اخر لوت

ارجو ان اكون وضحت الفكرة

وتقبل فائق احترامي :1 (73):



اسلام العوامى 28-01-2014 11:36 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة cobra2010 (المشاركة 665902)
استاذ اسلام بارك الله فيك وتسلم على الشرح الأكثر من رائع

عندي اسئلة كثير ولكني اختصرها في الاتي حتى لا أثقل عليك

اولا : ما هو الفرق بين ( symbol , Null )

كود:

iHigh(Symbol(),PERIOD_D1,1);
و

كود:

iHigh(NULL(),PERIOD_D1,1);
ثانيا : وده الأهم عندي لو ان السعر الحالي محصور بين نقطتين ولتكن مثلا نقطة A و نقطة B (حيث A أعلى من B)

فكيف يمكن ان اجعل الاكسبيرت ان يشتري كلما زار السعر النقطة A واذا ارتد السعر للنقطة B فانه يقوم بالبيع بلوت مضاعف ويحتفظ بالشراء

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

وكلما زار النقطة B يقوم بالبيع ويضاعف اخر لوت

ارجو ان اكون وضحت الفكرة

وتقبل فائق احترامي :1 (73):



،،،اهلا بك اخى الكريم ، ليس هناك فرق الاثنين فى المثال السابق ولكن NULL تكتب بدون اقواس وتعنى فى المثال السابق اى عملة اما Symbol() فتعود باسم الزوج الحالى والاثنان يؤديان نفس الغرض فى المثال السابق،،،

،،،بالنسبة للجزء الاخر يجب ان تقوم بحجز متغيرين A,B ثم تقوم باعطائهم القيم الخاصة بهم وتقوم بعمل جملة شرطية كالتالى بلوت البداية،،،

كود:


if(Ask>A && OrdersTotal()==0){OrderSend()}
if(Bid<B && OrdersTotal()==0){OrderSend()}

،،،ثم تقوم بعمل وظيفة لمعرفة اخر لوت ووظيفة لمعرفة عدد صفقات الشراء واخرى لعدد صفقات البيع وتقوم بعمل جملة شرطية اخرى،،،
كود:


if(Ask>A && OrdersTotal()>0){OrderSend()}
if(Bid<B && OrdersTotal()>0){OrderSend()}

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

،،،تحياتى،،،

cobra2010 28-01-2014 11:54 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 665911)

،،،اهلا بك اخى الكريم ، ليس هناك فرق الاثنين فى المثال السابق ولكن NULL تكتب بدون اقواس وتعنى فى المثال السابق اى عملة اما Symbol() فتعود باسم الزوج الحالى والاثنان يؤديان نفس الغرض فى المثال السابق،،،

،،،بالنسبة للجزء الاخر يجب ان تقوم بحجز متغيرين A,B ثم تقوم باعطائهم القيم الخاصة بهم وتقوم بعمل جملة شرطية كالتالى بلوت البداية،،،

كود:


if(Ask>A && OrdersTotal()==0){OrderSend()}
if(Bid<B && OrdersTotal()==0){OrderSend()}

،،،ثم تقوم بعمل وظيفة لمعرفة اخر لوت ووظيفة لمعرفة عدد صفقات الشراء واخرى لعدد صفقات البيع وتقوم بعمل جملة شرطية اخرى،،،
كود:


if(Ask>A && OrdersTotal()>0){OrderSend()}
if(Bid<B && OrdersTotal()>0){OrderSend()}

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

،،،تحياتى،،،



اشكرك اخي اسامة على سرعة الرد وبارك الله فيك

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

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

ارجو منك المساعدة وخصوصا الوظيفة التي تعود بأخر لوت

ارجو ان لا اكون قد اثقلت عليك

فائق احترامي

اسلام العوامى 28-01-2014 12:27 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة cobra2010 (المشاركة 665917)
اشكرك اخي اسامة على سرعة الرد وبارك الله فيك

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

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

ارجو منك المساعدة وخصوصا الوظيفة التي تعود بأخر لوت

ارجو ان لا اكون قد اثقلت عليك

فائق احترامي

،،،الدالة مشروحة بالتفصيل الممل فى الفيديوهات ، ويمكنك ارفاق الوظيفة التى تعطى الخطأ للاطلاع عليها وتحديد الخطأ،،،

cobra2010 28-01-2014 11:39 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 665927)


،،،الدالة مشروحة بالتفصيل الممل فى الفيديوهات ، ويمكنك ارفاق الوظيفة التى تعطى الخطأ للاطلاع عليها وتحديد الخطأ،،،


الشكر موصول لك اخي اسامة

الكود مرفق بالكامل مع ملاحظة ان

الدالة MyRealOrder دائما قيمتها صفر حتى بعد تفعيل الصفقة
والدالة GetOrderType دائما قيمتها -1

كود:

//+------------------------------------------------------------------+
//|                                                        test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int        Step=30;
extern double    Lots=0.01;
extern int        Magicnumber=123123;
double point;
//+------------------------------------------------------------------+
//| expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
{
    if(Digits<4){point=0.01;}
    else{point=0.0001;}

  return(0);
}
 
//+------------------------------------------------------------------+
//| expert deinitialization function                                |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 double OpenPrice,Up11,Up12,Up13,Dn11,Dn12,Dn13;
 
 
 if(Hour()==0 && Minute()<1 && MyOrdersTotal(Magicnumber)>0){DeletePendingOrders(Magicnumber);}
 
if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
  OpenPrice=NormalizeDouble(iOpen(Symbol(),PERIOD_D1,0),4);
 
  Up11=OpenPrice+Step*point;
  Up12=Up11+Step*point;
  Up13=Up12+Step*point;
 
  Dn11=OpenPrice-Step*point;
  Dn12=Dn11-Step*point;
  Dn13=Dn12-Step*point;
 
  int  BUY=OrderSend(Symbol(),OP_BUYSTOP,Lots,Up12,3,0,Up13,"TEST_Buy#1",Magicnumber,0,Green);
  int SELL=OrderSend(Symbol(),OP_SELLSTOP,Lots,Dn12,3,0,Dn13,"TEST_Sell#1",Magicnumber,0,Red);
 
 
 
  int GOT=GetOrderType(Magicnumber);
  int R=MyRealOrdersTotal(Magicnumber);
  int mot=MyOrdersTotal(Magicnumber);
  Comment("BUY = "+BUY+
  "\nSELL = "+SELL+
  "\nUp11 = "+Up11+
  "\nUp12 = "+Up12+
  "\nUp13 = "+Up13+
  "\nDn11 = "+Dn11+
  "\nDn12 = "+Dn12+
  "\nDn13 = "+Dn13+
  "\nMyRealOrdersTotal = "+R+
  "\nGetOrderType = "+GOT+
  "\nMyOrdersTotal = "+mot);
 
    if((BUY>0 || SELL>0) && R>0)
  {
    DeletePendingOrders(Magicnumber);
  //  double Lots2=
      OrderSend(Symbol(),OP_SELLSTOP,Lots,Up11,3,0,OpenPrice,"TEST_Sell#1",Magicnumber,0,Red);
  }
 

//----
  return(0);
  }
//+------------------------------------------------------------------+
int MyOrdersTotal(int magic)
{
  int c=0;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol())
    {
      c++;
    }
  }
  return(c);
}

//////////////////////////////////////////////////////////
int MyRealOrdersTotal(int magic)
{
  int i=0;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
        {
          i++;
        }
  }
  return(i);
}
//////////////////////////////////////////////////////////

int DeletePendingOrders(int Magic)
{
  int total  = OrdersTotal()-1;
 
  for (int cnt = total ; cnt >= 0 ; cnt--)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      OrderDelete(OrderTicket());
     
    }
  }
  return(0);


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

int GetOrderType(int magic)
{
  int OT=-1;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
    {
      OT=OrderType();
     
    }
  }
 
 
  return(OT);
}

مرفق ملف الكود بالمرفقات


اسلام العوامى 29-01-2014 11:32 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة cobra2010 (المشاركة 666150)
الشكر موصول لك اخي اسامة

الكود مرفق بالكامل مع ملاحظة ان

الدالة MyRealOrder دائما قيمتها صفر حتى بعد تفعيل الصفقة
والدالة GetOrderType دائما قيمتها -1

كود:

//+------------------------------------------------------------------+
//|                                                        test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int        Step=30;
extern double    Lots=0.01;
extern int        Magicnumber=123123;
double point;
//+------------------------------------------------------------------+
//| expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
{
    if(Digits<4){point=0.01;}
    else{point=0.0001;}

  return(0);
}
 
//+------------------------------------------------------------------+
//| expert deinitialization function                                |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 double OpenPrice,Up11,Up12,Up13,Dn11,Dn12,Dn13;
 
 
 if(Hour()==0 && Minute()<1 && MyOrdersTotal(Magicnumber)>0){DeletePendingOrders(Magicnumber);}
 
if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
  OpenPrice=NormalizeDouble(iOpen(Symbol(),PERIOD_D1,0),4);
 
  Up11=OpenPrice+Step*point;
  Up12=Up11+Step*point;
  Up13=Up12+Step*point;
 
  Dn11=OpenPrice-Step*point;
  Dn12=Dn11-Step*point;
  Dn13=Dn12-Step*point;
 
  int  BUY=OrderSend(Symbol(),OP_BUYSTOP,Lots,Up12,3,0,Up13,"TEST_Buy#1",Magicnumber,0,Green);
  int SELL=OrderSend(Symbol(),OP_SELLSTOP,Lots,Dn12,3,0,Dn13,"TEST_Sell#1",Magicnumber,0,Red);
 
 
 
  int GOT=GetOrderType(Magicnumber);
  int R=MyRealOrdersTotal(Magicnumber);
  int mot=MyOrdersTotal(Magicnumber);
  Comment("BUY = "+BUY+
  "\nSELL = "+SELL+
  "\nUp11 = "+Up11+
  "\nUp12 = "+Up12+
  "\nUp13 = "+Up13+
  "\nDn11 = "+Dn11+
  "\nDn12 = "+Dn12+
  "\nDn13 = "+Dn13+
  "\nMyRealOrdersTotal = "+R+
  "\nGetOrderType = "+GOT+
  "\nMyOrdersTotal = "+mot);
 
    if((BUY>0 || SELL>0) && R>0)
  {
    DeletePendingOrders(Magicnumber);
  //  double Lots2=
      OrderSend(Symbol(),OP_SELLSTOP,Lots,Up11,3,0,OpenPrice,"TEST_Sell#1",Magicnumber,0,Red);
  }
 

//----
  return(0);
  }
//+------------------------------------------------------------------+
int MyOrdersTotal(int magic)
{
  int c=0;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol())
    {
      c++;
    }
  }
  return(c);
}

//////////////////////////////////////////////////////////
int MyRealOrdersTotal(int magic)
{
  int i=0;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
        {
          i++;
        }
  }
  return(i);
}
//////////////////////////////////////////////////////////

int DeletePendingOrders(int Magic)
{
  int total  = OrdersTotal()-1;
 
  for (int cnt = total ; cnt >= 0 ; cnt--)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      OrderDelete(OrderTicket());
     
    }
  }
  return(0);


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

int GetOrderType(int magic)
{
  int OT=-1;
  int total  = OrdersTotal();
 
  for (int cnt = 0 ; cnt < total ; cnt++)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
    {
      OT=OrderType();
     
    }
  }
 
 
  return(OT);
}

مرفق ملف الكود بالمرفقات


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

cobra2010 29-01-2014 01:20 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 666261)

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

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

وأعرف ان الكود غير صحيح وذلك بسبب عدم تمكني من الحصول على النتائج الصحيحة من الوظائف (مثل الحصول على نوع الصفقة المفعلة او عدد الصفقات المفعلة ) فمثلا عندما يكون اجمالي العقود المفعلة حقيقيا وليست المعلقة سواء كانت بيع او شراء == 1 يقوم بالغاء الأمر المعلق الأخر ويعدها يعلق صفقة اخرى مضادة للأولى وبلوت مختلف
وهكذا

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

جزاك الله عني كل خير


الساعة الآن 11:51 AM

Powered by vBulletin® Copyright ©2000 - 2024

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com