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

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




الساعة الآن 02:20 AM

Powered by vBulletin® Copyright ©2000 - 2024

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