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

amr amrou 26-05-2017 05:44 PM

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

في البداية لم يكن يفتح أي صفقة إطلاقا
و عندما جربت أن أعطي للمتغير x قيمة إبتدائية سواءا كانت 1 أو -1 يفتح صفقات البيع فقط

الإكسبرت في المرفقات

amr amrou 26-05-2017 06:29 PM

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

Comment

كود:


Comment("valeur X : " +  x );

لمعرفة كيف تتحرك القيم و أين الخلل

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

x=-1;

في نهاية أمر البيع لكنه لا يتغير

https://www.fx-arabia.com/vb/uploade...1495812469.png

https://www.fx-arabia.com/vb/uploade...1495812512.png

amr amrou 26-05-2017 07:35 PM

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

أستاذ إسلام
لقد وجدت الحل للمشكلة بعد عدت تجارب

وجدت أن المتغير x عرفته أنت في شكل
bool
و بعد ذالك أعطيته قيمة 1 و -1 و bool لا تقبل -1
بل تقبل 0 و 1

يعني أماأن نغير الأرقام إلى 0 و 1 أو نعرف x في شكل int و ليس bool

هذا الخطأ الأول

الخطأ الثاني
حتى لو غيرنا القيم ل 0 و 1 يبقى يفتح صفقات بيع فقط

لأنك لم تضف كلمة
else
في الشرط الثاني الخاص بالبيع

بعد قيامي بهذه التغييرات حلت المشكلة

amr amrou 26-05-2017 10:59 PM

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

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

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

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

اسلام العوامى 27-05-2017 12:01 AM

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

المشاركة الأصلية كتبت بواسطة amr amrou (المشاركة 913823)
سؤال برمجي بسيط أخر من فضلك أخي إسلام

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

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

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

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

كود:

bool  OrderClose(
  int        ticket,      // ticket
  double    lots,        // volume 
  double    price,      // close price 
  int        slippage,    // slippage 
  color      arrow_color  // color
  );

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

amr amrou 27-05-2017 12:50 AM

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

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


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

كود:

bool  OrderClose(
  int        ticket,      // ticket
  double    lots,        // volume 
  double    price,      // close price 
  int        slippage,    // slippage 
  color      arrow_color  // color
  );

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


اسف جدا أنا مبتدأ كثيير في البرمجة
لم أفهم جيدا

مثلا أريد أغلاق صفقة الشراء التي تم إفتتاحها يدويا عند وصول مستوى ال RSI إلى 75
وهذا الكود هنا

كود:

if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
 OrderClose(ticket,lot,Ask,3,Red);
}

أولا في الخانة الأولى داخل أمر OrderClose فيها ticket من أين أجلب ال ticket ؟ و مذا أضع فيها و كيف يعرفها الأكسبرت ؟ مع العلم أن الصفقة تم فتحها يدويا
الخانة الثانية lot مذا أضع فيها ؟ الصفقات يتم فتحها يدويا بلوت عشوائي يعني غير معروف !!
الخانة الثالثة ASK في أمر إغلاق الصفقات نستخدم ASK فقط ولا نستخدم BID صحيح ؟

هل ممكن ترسل لي الحلقة For Loop كاملتا

أعرف أن الحلقة تكتب بهذا الشكل كمثال لكن لم أعرف تركيبها أو إستخدامها

كود:

for(int i = 0 , i < 10 , i++)
{
}


أرجو المساعدة

amr amrou 27-05-2017 04:50 PM

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

المشاركة الأصلية كتبت بواسطة amr amrou (المشاركة 913837)
اسف جدا أنا مبتدأ كثيير في البرمجة
لم أفهم جيدا

مثلا أريد أغلاق صفقة الشراء التي تم إفتتاحها يدويا عند وصول مستوى ال RSI إلى 75
وهذا الكود هنا

كود:

if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
 OrderClose(ticket,lot,Ask,3,Red);
}

أولا في الخانة الأولى داخل أمر OrderClose فيها ticket من أين أجلب ال ticket ؟ و مذا أضع فيها و كيف يعرفها الأكسبرت ؟ مع العلم أن الصفقة تم فتحها يدويا
الخانة الثانية lot مذا أضع فيها ؟ الصفقات يتم فتحها يدويا بلوت عشوائي يعني غير معروف !!
الخانة الثالثة ASK في أمر إغلاق الصفقات نستخدم ASK فقط ولا نستخدم BID صحيح ؟

هل ممكن ترسل لي الحلقة For Loop كاملتا

أعرف أن الحلقة تكتب بهذا الشكل كمثال لكن لم أعرف تركيبها أو إستخدامها

كود:

for(int i = 0 , i < 10 , i++)
{
}


أرجو المساعدة


في السؤال السابق أعتقد يمكن إستخدام الأمر
OrderClose
أو
OrderModify أيضا أعتقد بتقريب الستوب فيه

لكن كيف يتم إستخدامه ؟ و كيف يعرف الأكسبرت ال ticket أو order ID
مع العلم أن الصفقات تم إفتتاحهم عشوائيا و يدويا
و الأكسبرت يجب أن يغلق نوع محدد من الصفقات على الشارت الموضوع فيه فقط
مثلا يغلق صفقات البيع إذا تحقق شرط معين في الشارت الموضوع فيه

و كيف يقوم الإكسبرت بفحص إذا فيه صفقات مفتوحة جديدة أم لا

amr amrou 28-05-2017 12:14 AM

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

هذا ما إستطعت كتابته إلى حد الأن في إنتضار إجابتك

( هذا أكسبرت لإغلاق صفقات البيع عند التقاطع للأعلى و إغلاق صفقات الشراء عند التقاطع للأسفل )

كود:


// تعريف بمتغيرات و مدخلات الموفنج السريع
extern string s1 =  "faste MA setting " ; // faste MA setting
extern int FastMAperiod = 10 ; // Fast Period
extern int FastMAshift = 0 ; // Fast Shift
extern ENUM_MA_METHOD FastMAmethod = 0; // Fast Methode
extern ENUM_APPLIED_PRICE FastMAapllyto = 0; // Fast Applied to

// تعريف بمتغيرات و مدخلات الموفنج البطيئ
extern string s2 =  "SLow MA setting " ; // SLow MA setting
extern int SLowMAperiod = 20 ; // SLow Period
extern int SLowMAshift = 0 ; // SLow Shift
extern ENUM_MA_METHOD SLowMAmethod = 0; // SLow Methode
extern ENUM_APPLIED_PRICE SLowMAapllyto = 0; // SLow Applied to

//extern string s3 = " money management " ; // money management
//extern int takeprofit = 40; // Take Profit
//extern int stoploss = 20; // STOP Loss
//extern double Lot = 0.01;

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---


double FastMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج السريع للشمعة 2 و تخزينها
double FastMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج السريع للشمعة 1 و تخزينها

double slowMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج البطيئ للشمعة 2 و تخزينها
double slowMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج البطيئ للشمعة 1 و تخزينها
 


for(int i=0 ; i < OrdersTotal() ; i++ )
// هذا سطر هو حلقة التكرارية
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
// هذا السطر لإختيار الصفقة
 if(OrderSymbol()==Symbol())
 // هذا السطر لإختيار الصفقات التي مفتوحة على الشارت الموضوع عليه الأكسبرت
 {
  if(FastMALast<slowMALast && FastMANow>slowMANow)
  // هذا شرط التقاطع للأسفل
  {
 
 
  // هذا المكان لوضع أمر الإغلاق
 
  OrderModify
 
  }
 }
}

 
  }
//+------------------------------------------------------------------+


السطور التي كتبتها مشروحة بالعربي داخل الكود

هذا ما إستطعت كتابته إلى حد الأن و لم أستطع الإكمال

الأن أعتقد يجب إستخدام أمر

OrderClose
أو
OrderModify

لكن كيف يمكننا ملئهم


الإكسبرت في المرفقات

amr amrou 31-05-2017 04:42 PM

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

كل شيئ مشروح بالعربية داخل الكود لكيفية البرمجة
أرجو الإطلاع على الكود و مراجعت صحته و إعطاء بعض النصائح
لأنني مبتدأ في البرمجة

كود:


// تعريف بمتغيرات و مدخلات الموفنج السريع
extern string s1 =  "faste MA setting " ; // faste MA setting
extern int FastMAperiod = 10 ; // Fast Period
extern int FastMAshift = 0 ; // Fast Shift
extern ENUM_MA_METHOD FastMAmethod = 0; // Fast Methode
extern ENUM_APPLIED_PRICE FastMAapllyto = 0; // Fast Applied to 

// تعريف بمتغيرات و مدخلات الموفنج البطيئ
extern string s2 =  "SLow MA setting " ; // SLow MA setting
extern int SLowMAperiod = 20 ; // SLow Period
extern int SLowMAshift = 0 ; // SLow Shift
extern ENUM_MA_METHOD SLowMAmethod = 0; // SLow Methode
extern ENUM_APPLIED_PRICE SLowMAapllyto = 0; // SLow Applied to 

//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---


double FastMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج السريع للشمعة 2 و تخزينها
double FastMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج السريع للشمعة 1 و تخزينها

double slowMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج البطيئ للشمعة 2 و تخزينها
double slowMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج البطيئ للشمعة 1 و تخزينها
 


for(int i=OrdersTotal()-1 ; i >=0; i-- ) 
// هذا سطر هو حلقة التكرارية
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
// هذا السطر لإختيار و تحديد صفقة معينة

int ticket=OrderTicket();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة تيكت 

double lots=OrderLots();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة اللوت 

int type=OrderType();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة نوع الصفقة , شراء أو بيع 


 if(OrderSymbol()==Symbol())
 // هذا السطر لإختيار الصفقات التي مفتوحة على الشارت الموضوع عليه الأكسبرت
 {
  if(FastMALast<slowMALast && FastMANow>slowMANow)
  // هذا شرط التقاطع للأسفل
  // هذا الشرط يعني أن السعر في صعود
  // هذا يعني أنه يجب غلق صفقات البيع
  {
 
 
  // هذا المكان لوضع أمر الإغلاق الصفقات
 
  if(type==OP_SELL)
  // هذا السطر هو أمر لإغلاق صفقة البيع
  {
    OrderClose(ticket,lots,Ask,3);
  }
   
   
  else if(type==OP_BUY && FastMALast>slowMALast && FastMANow<slowMANow)
  // هذا السطر هو أمر لإغلاق صفقة الشراء في حالة لم يحدث الشرط  الذي في الأعلى و حدث العكس
  {
    OrderClose(ticket,lots,Bid,3);
  }
   
 
  }
 }
}

   
  }


flora 02-06-2017 11:47 PM

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


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

Powered by vBulletin® Copyright ©2000 - 2024

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