عرض مشاركة واحدة
قديم 06-01-2014, 02:31 PM   المشاركة رقم: 208
الكاتب
sunegypt
عضو جديد

البيانات
تاريخ التسجيل: May 2010
رقم العضوية: 112
العمر: 41
المشاركات: 141
بمعدل : 0.03 يوميا

الإتصالات
الحالة:
sunegypt غير متواجد حالياً
وسائل الإتصال:

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

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


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

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

كود:
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);    
            
                  
          }
       
  }

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

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

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

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

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

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

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

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

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


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



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

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

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

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

اللهم امين



عرض البوم صور sunegypt  
رد مع اقتباس
  #208  
قديم 06-01-2014, 02:31 PM
sunegypt sunegypt غير متواجد حالياً
عضو جديد
افتراضي رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4

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


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

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

كود:
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);    
            
                  
          }
       
  }

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

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

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

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

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

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

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

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

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


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



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

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

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

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

اللهم امين




رد مع اقتباس