اف اكس ارابيا..الموقع الرائد فى تعليم فوركس 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)

sunegypt 05-01-2014 04:55 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة 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);
   
   
  }
  }
 }
}

أنا الان أريد داله اخرى مشابهه لهذه الداله ولكن بتغيير بسيط

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

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

يعنى المطلوب دالتيين

واحده لاغلاق اقل صفقه رابحه فقط

وأخرى لاغلاق أكبر صفقه رابحه

لاجراء بعض الاختبارات فى بعض الاكسبيرتات عندى

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

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

سلام عليكم

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

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

السلام عليكم ورحمة الله وبركاته
استاذى الفاضل اسلام العوامى
استفسار بسيط بخصوص vertical line
قمت باضافته لمؤشر الرينج المتعدد لعمل باك تيست يدوى
فعند تحديد الرينج الشهرى مثلا يظهر الخط على الشمعه رقم 1
وعند تغيير الفريم يظهر على الشمعه 1 لنفس الفريم
فكيف اقوم بتثبيته بحيث يثبت التاريخ مع تغيير الفريم
التوضيح
الخط على الشمعه 1 فريم شهرى
المفروض يكون على شمعه 4 فى الاسبوعى
ولكنه يظهر على الشمعه 1 اسبوعى
ارجو ان اكون وضحت الفكره

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

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

المشاركة الأصلية كتبت بواسطة valantinolala (المشاركة 648131)
السلام عليكم ورحمه الله وبركاته اخي العوامي

بعد اذن حضرتك

انا برمجت اكسيبرت بيعلق صفقتين واحده شراء والاخري بيع علي شمعه GMT 00

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

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

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

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

كود:


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 11:31 AM

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

المشاركة الأصلية كتبت بواسطة sunegypt (المشاركة 648212)
السلام عليكم ورحمه الله تعالى وبركاته

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

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

كود:

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);
   
   
  }
  }
 }
}

أنا الان أريد داله اخرى مشابهه لهذه الداله ولكن بتغيير بسيط

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

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

يعنى المطلوب دالتيين

واحده لاغلاق اقل صفقه رابحه فقط

وأخرى لاغلاق أكبر صفقه رابحه

لاجراء بعض الاختبارات فى بعض الاكسبيرتات عندى

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

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

سلام عليكم

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

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

كود:


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);   
           
                 
          }
     
  }


اسلام العوامى 05-01-2014 11:37 AM

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

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

السلام عليكم ورحمة الله وبركاته
استاذى الفاضل اسلام العوامى
استفسار بسيط بخصوص vertical line
قمت باضافته لمؤشر الرينج المتعدد لعمل باك تيست يدوى
فعند تحديد الرينج الشهرى مثلا يظهر الخط على الشمعه رقم 1
وعند تغيير الفريم يظهر على الشمعه 1 لنفس الفريم
فكيف اقوم بتثبيته بحيث يثبت التاريخ مع تغيير الفريم
التوضيح
الخط على الشمعه 1 فريم شهرى
المفروض يكون على شمعه 4 فى الاسبوعى
ولكنه يظهر على الشمعه 1 اسبوعى
ارجو ان اكون وضحت الفكره

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

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

كود:


    int StartCandle=(iBarShift(Symbol(),PERIOD_MN1,Time[i],false)+1);

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

GBPJPY 05-01-2014 02:23 PM

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

ابو سمر 05-01-2014 03:07 PM

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

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


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

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

كود:


    int StartCandle=(iBarShift(Symbol(),PERIOD_MN1,Time[i],false)+1);

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

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

اسلام العوامى 05-01-2014 03:24 PM

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

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

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

sunegypt 05-01-2014 03: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);   
           
                 
          }
     
  }



جزاك الله تعالى خيرا استاذى اسلام

الكود اللى كتبته حضرتك هذا فى حاله اغلاق اكبر صفقه رابحه ..

وأريد ايضا كود لاغلاق اقل صفقه رابحه فى الحجم ..؟

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

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

المشاركة الأصلية كتبت بواسطة GBPJPY (المشاركة 648268)
السلام عليكم استاذى العوامى
ممكن سؤال
فى طريقة استطيع احسب عدد نقاط السعر فى زمن معين
واعرف كم عدد النقاط التى تحرك فيه السعر فى وقت مثلا 10 دقائق او 5
وشكرا لك

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

كود:


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



الساعة الآن 04:23 AM

Powered by vBulletin® Copyright ©2000 - 2024

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