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

ospr 05-02-2017 12:22 AM

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

اسلام العوامى 05-02-2017 09:35 AM

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

المشاركة الأصلية كتبت بواسطة ospr (المشاركة 901696)
السلام عليكم اخي الحبب اسلام
كان لدي طلب وهو انا مبرمج ولكن php وكنت احتاج
الى ورقة او كتاب الكتروني يشرح الدوال الموجوده والوظائف لـ MQL4 انجاز للوقت وانا لا اريد متابعة قائمة المساعدات
الخاصه بهذا البرنامج اعرف انها جيده ولكن لا يوجد لدي الوقت للكتابعه فانا اريد ملخص بحيث
بحيث يمكنني الدخول فيما ينقصني فقط ولا انتظر الدروس التى اعرفها مسبقا بالاضافه
اني في حالة الحاجه الى شيئ معين اقوم بعمله على وجه السرعه وانتهى الموضوع
واذا يوجد لديك بعض الاكسربيرتات والاسكربتات المفتوحه لاخر ما توصلت اليه يكون ممتاز جدا
فانت تعرف هذه الامور تقرب المسافه جدا وكل الشكر والتقدير لك اخي الكريم

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

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

،،،بالنسبة للاكواد المفتوحة فمكتبة موقع mql5 لايوجد افضل منها في هذا المجال،،،

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

ospr 06-02-2017 02:11 AM

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

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


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

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

،،،بالنسبة للاكواد المفتوحة فمكتبة موقع mql5 لايوجد افضل منها في هذا المجال،،،

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

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

سوف اقوم بإرفاق التالي شارت لعمليه الدخول والخروج وايضا اكسبيرت قمت ببرمجته والاعلان عن المتغيرات سابقا لكني لم اكمله بسبب انشغالي جدا الان
وايضا بسبب بعض الدوال التى لم اكن اعرف عنها شيء فهيا جديده بالسبه لي كمبرمج php ولكن لعله خير ونستفيد منك ان شاء الله ندخل صلب الموضوع
------------------------------------------------------------------
كنت قد كلمتك من قبل عن بعض الدوال وطلبت مني ان اسأل ولكني سوف اطلب منك
كود لهذا الامر مثلا :-

الاكسبيرت يكون معلن فيه بامر Extern عن الاتي بحيث يمكن للمستخدم ادخال كل قيمه كما يريد للموجود بالداخل
وهو كالاتي :-

1- مفينج افاريج 1 وقيمه اي قيم ما تفرق ولكن سوف يكون داخل البولينجر
2- مفينج افاريج 2 وقيمه أي قيم ما تفرق ولكنها اعلى من سابقه ولكن هذا راجع لمستخدم الاكسبيرت ايضا
3- مؤشر البولينجر باند والاعدادات كما يريد المستخدم عادي ما تفرق
4- مؤشر الاستوكيستك والاعدادات كما يريد المستخدم عادي ما تفرق
----------------------------------
كل اللي فوق هذا ما عندي مشكله فيه ولكن القادم هو الاهم :-

1- مطلوب عمل داله بحيث اذا تحقق الشرط الخاص SELL يقوم الاكسبيرت بعملSELL مع اغلاق الشمعه المحدده على الشرط ويكون امر واحد فقط ولا يفتح الا اذا انتهي الامر الاول .
2- مطلوب عمل دالة بحيث اذا تحقق الشرط الخاص BUY يقوم الاكسبيرت بعمل BUY مع اغلاق الشمعه المحدده على الشرط ويكون امر واحد فقط ولا يفتح الا اذا انتهى الامر الاول .
------------------------------------
نيجي لأهم المهم وهذا لب الموضوع طيب ايه هيا الشروط المطلوب توافرها جميل نخش ع المهم :

1- أمر BUY اذا كانت الشمعة (فتحت اسفل وخارج حدود البولينجر وايضا أغلقت خارج البولينجر) + اسفل حدود مؤشر المفينج الصغير المدخل قيمه من قبل وهوه ع الشارت بالاحمر + مؤشر المفيتج

الثاني وهو صاحب القيم الاكبر المدخل سابقا موجود أعلى كل هؤلاء ومعلم ع الشارت باللون السماوي + تقاطع الاستوكيستك اسفل خط الـ 20 هنا ينفذا الامر .

2- أمر SELL اذا كانت الشمعة (فتحت أعلى وخارج حدود البولينجر وأيضا اغلقت خارج البولينجر) + أعلى حدود مؤشر الموفينج الصغير المدخل قيمه من قبل وهو ع الشارت بالاحمر + مؤشر

الموفينج الثاني وهو صاحب القيم الاكبر المدخل مسبقا أسفل كل هؤلاء + تقاطع الاستوكيستك أعلى خط الـ 80 هنا ينفذ الامر

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

shivaa 07-02-2017 08:26 PM

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

ospr 06-04-2017 10:59 PM

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

Bid==(LastOrder("Price",OP_SELL)
ولكن المشكله عدم الدقة بسبب الاسبريد
فهل من الممكن طرح الاسبريد من السعر الحالي واقارنه بسعر الصفقه
بمعني محتاج اقوله في الشرط لو لقيت Bid-Spred == سعر الصفقه نفذ
محتاج معادلة طرح الاسبريد من سعر البيع الحالي ارجو ان تكون وضحت الفكره
وكل الشكر والتقدير لشخصكم الكريم

اسلام العوامى 07-04-2017 02:56 AM

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

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

Bid==(LastOrder("Price",OP_SELL)
ولكن المشكله عدم الدقة بسبب الاسبريد
فهل من الممكن طرح الاسبريد من السعر الحالي واقارنه بسعر الصفقه
بمعني محتاج اقوله في الشرط لو لقيت Bid-Spred == سعر الصفقه نفذ
محتاج معادلة طرح الاسبريد من سعر البيع الحالي ارجو ان تكون وضحت الفكره
وكل الشكر والتقدير لشخصكم الكريم

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

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

كود:

Bid-(Ask-Bid)==(LastOrder("Price",OP_SELL)
،،،تحياتي،،،

ola Ahmed 93 19-04-2017 10:56 AM

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

amr amrou 25-05-2017 11:05 PM

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

أعرف أن أمر فتح الصفقات هو

كود:


OrderSend(string symbol, int cmd, double volume, double price,int slippage, double stoploss,double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=clrNONE);


لكن كيف أطبق الشروط المذكورة عليه في شكل حلقة أو وضيفة أو دالة


أرجو ذكر ذالك مع شرح بالعربي أمام السطور إن أمكن ذالك

و الله يجعل مساعدتك في ميزان حسناتك

اسلام العوامى 26-05-2017 01:41 AM

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

المشاركة الأصلية كتبت بواسطة amr amrou (المشاركة 913698)
أريد برمجة إكسبرت يقوم بالتالي
عند وضعه يقوم بفتح صفقة شراء في الشمعة الحالية و عند إغلاق الشمعة الحالية و إفتتاح شمعة جديدة يقوم بفتح صفقة بيع و عند إفتتاح شمعة جدية يفتح شراء
و هكذا كل شمعة صفقة جديدة و الصفقات عكس بعض مع إختلاف في اللوت أيضا كل صفقة جديدة يكوت اللوت الخاص بها أكبر من الصفقة السابقة

أعرف أن أمر فتح الصفقات هو

كود:


OrderSend(string symbol, int cmd, double volume, double price,int slippage, double stoploss,double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=clrNONE);

لكن كيف أطبق الشروط المذكورة عليه في شكل حلقة أو وضيفة أو دالة


أرجو ذكر ذالك مع شرح بالعربي أمام السطور إن أمكن ذالك

و الله يجعل مساعدتك في ميزان حسناتك

،،،اهلا بك اخي الفاضل ، اولا يتم حجز هذه المتغيرات،،،

كود:

datetime time0;
bool x;
double NewLot,LastLot;

،،،ثم وضع الكود التالي في OnTick،،،

كود:

  if(time0!=Time[0]){
  if(x==-1){
  NewLot = LastLot+0.01;
  bool b = OrderSend(Symbol(),OP_BUY,NewLot,Ask,0,0,0,"",Magicnumber,0,clrBlue);
  LastLot = NewLot;
  x=1;
}
  if(x==1){
    NewLot = LastLot+0.01;
  bool b = OrderSend(Symbol(),OP_SELL,NewLot,Bid,0,0,0,"",Magicnumber,0,clrRed);
    LastLot = NewLot;
  x=-1;
}
time0=Time[0];
}

،،،والكود يبدأ بعمل فحص لقيمة المتغير time0 اذا كان لايساوي وقت الشمعة الحالية يتم الانتقال للسطر التالي والفائدة هو منع الاكسبيرت من تنفيذ باقي الاوامر الا عند افتتاح شمعة جديدة،،،

،،،بعد ذلك يتم فحص قيمة المتغير x اذا كان يساوي -1 فمعنى ذلك ان الصفقة السابقة كانت بيع فيتم فتح شراء واذا كانت تساوي 1 فيتم فتح بيع،،،

،،،بعد ذلك يتم اسناد قيمة اللوت السابق + الزيادة التي نريدها الى المتغير NewLot وفي هذا المثال وضعت الزيادة بمقدار 0.01 ثم يتم فتح الصفقة وتخزين قيمة اللوت الجديد في المتغير LastLot،،،

،،،في النهاية يتم اسناد وقت الشمعة الحالية للمتغير time0،،،

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

amr amrou 26-05-2017 03:51 PM

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

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


،،،اهلا بك اخي الفاضل ، اولا يتم حجز هذه المتغيرات،،،

كود:

datetime time0;
bool x;
double NewLot,LastLot;

،،،ثم وضع الكود التالي في OnTick،،،

كود:

  if(time0!=Time[0]){
  if(x==-1){
  NewLot = LastLot+0.01;
  bool b = OrderSend(Symbol(),OP_BUY,NewLot,Ask,0,0,0,"",Magicnumber,0,clrBlue);
  LastLot = NewLot;
  x=1;
}
  if(x==1){
    NewLot = LastLot+0.01;
  bool b = OrderSend(Symbol(),OP_SELL,NewLot,Bid,0,0,0,"",Magicnumber,0,clrRed);
    LastLot = NewLot;
  x=-1;
}
time0=Time[0];
}

،،،والكود يبدأ بعمل فحص لقيمة المتغير time0 اذا كان لايساوي وقت الشمعة الحالية يتم الانتقال للسطر التالي والفائدة هو منع الاكسبيرت من تنفيذ باقي الاوامر الا عند افتتاح شمعة جديدة،،،

،،،بعد ذلك يتم فحص قيمة المتغير x اذا كان يساوي -1 فمعنى ذلك ان الصفقة السابقة كانت بيع فيتم فتح شراء واذا كانت تساوي 1 فيتم فتح بيع،،،

،،،بعد ذلك يتم اسناد قيمة اللوت السابق + الزيادة التي نريدها الى المتغير NewLot وفي هذا المثال وضعت الزيادة بمقدار 0.01 ثم يتم فتح الصفقة وتخزين قيمة اللوت الجديد في المتغير LastLot،،،

،،،في النهاية يتم اسناد وقت الشمعة الحالية للمتغير time0،،،

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


شكرا جزيلا لك أخي إسلام
لقد تعلمت منك الكثير
خاصتا من فيدهات دورة mql4 الخاصة بك

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
 
مساء الخير
عفوا انا لم اجد روابط المحاضرات و ارغب فعلا بتعلم اللغة هل يمكن افادتي لو سمحتم مع جزيل الشكر

اسلام العوامى 15-06-2017 01:11 AM

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

المشاركة الأصلية كتبت بواسطة flora (المشاركة 914886)
مساء الخير
عفوا انا لم اجد روابط المحاضرات و ارغب فعلا بتعلم اللغة هل يمكن افادتي لو سمحتم مع جزيل الشكر

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

دورة تعليم البرمجة الاحترافية بلغة mql4 بالفيديو
دروس شرح البرمجة المتقدمة بلغة MQL4
دورة تعليم البرمجة الثانية MQL5
موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4

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

gad ahmed 15-06-2017 03:08 PM

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

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

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

flora 16-06-2017 12:06 AM

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

ahmedamz 19-06-2017 05:24 PM

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

اسلام العوامى 22-06-2017 01:40 AM

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

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

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

،،،اهلا بك اخي الفاضل ، يمكنك مراجعة المواضيع الموجودة على الروابط التالية،،،


دورة تعليم البرمجة الاحترافية بلغة mql4 بالفيديو
دروس شرح البرمجة المتقدمة بلغة MQL4
دورة تعليم البرمجة الثانية MQL5
موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4

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

sal_moh85 02-07-2017 12:28 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
سلام عليكم اخ اسلام
عندي موشر rsi حاصر قيم معينه
double rsi0=iRSI(Symbol(),0,14,0,0),
rsi1=iRSI(Symbol(),0,14,0,1);

if(rsi0>=30)CloseOrder(OP_SELL);//شرط إغلاق البيع

if(rsi1<30&&rsi1>20&&rsi0<=20)bool buy=true;//شرط فتح الشراء
طيب انا عاوز كود اني احصر كذى قيمه لي شراء وكذى قيمه للبيع
يعني
rsi1<30&&rsi1>20&&rsi0<=20)هي اول قيمه
rsi1<40&&rsi1>30&&rsi0<=30)هي ثاني قيمه
rsi1<50&&rsi1>40&&rsi0<=40)هي ثالث قيمه
طبعا اذا بدي استخدم بين كل قيمه وقيمه or يعني على هاد شكل
rsi1<40&&rsi1>30&&rsi0<=30)||rsi1<50&&rsi1>40&&rsi 0<=40)||(rsi1<30&&rsi1>20&&rsi0<=20)
لح يكون الكود طويل جدا بدي كود اختصر في هل شي
لانو عندي تقريبا 100 قيمه في حل برمجي لهل الشي وشكرا

اسلام العوامى 02-07-2017 02:27 AM

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

المشاركة الأصلية كتبت بواسطة sal_moh85 (المشاركة 918818)
سلام عليكم اخ اسلام
عندي موشر rsi حاصر قيم معينه
double rsi0=iRSI(Symbol(),0,14,0,0),
rsi1=iRSI(Symbol(),0,14,0,1);

if(rsi0>=30)CloseOrder(OP_SELL);//شرط إغلاق البيع

if(rsi1<30&&rsi1>20&&rsi0<=20)bool buy=true;//شرط فتح الشراء
طيب انا عاوز كود اني احصر كذى قيمه لي شراء وكذى قيمه للبيع
يعني
rsi1<30&&rsi1>20&&rsi0<=20)هي اول قيمه
rsi1<40&&rsi1>30&&rsi0<=30)هي ثاني قيمه
rsi1<50&&rsi1>40&&rsi0<=40)هي ثالث قيمه
طبعا اذا بدي استخدم بين كل قيمه وقيمه or يعني على هاد شكل
rsi1<40&&rsi1>30&&rsi0<=30)||rsi1<50&&rsi1>40&&rsi 0<=40)||(rsi1<30&&rsi1>20&&rsi0<=20)
لح يكون الكود طويل جدا بدي كود اختصر في هل شي
لانو عندي تقريبا 100 قيمه في حل برمجي لهل الشي وشكرا

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

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

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

sal_moh85 06-07-2017 12:44 PM

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

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


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

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

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

مشكور اخ اسلام طيب هلق اذا استخدمت مصفوفه لي لقيم بتزبط شي

اسلام العوامى 06-07-2017 05:13 PM

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

المشاركة الأصلية كتبت بواسطة sal_moh85 (المشاركة 919203)
مشكور اخ اسلام طيب هلق اذا استخدمت مصفوفه لي لقيم بتزبط شي

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

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

sal_moh85 07-07-2017 12:31 AM

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

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


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

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

مشكور جدا جدا

Abdulhalim 11-08-2017 03:06 AM

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

للعمل فقط تجريبي

و للعمل لمدة محددة

وهل ممكن وضع كلمة سر للأكسبيرت ؟


وشكرا جزيلا

alisaberhanafy 18-08-2017 06:03 AM

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

alsuultaan 07-09-2017 04:11 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
السلام عليكم ورحمة الله وبركاته و
وكل عام وانتم بخير
استاذ اسلام
لدي سؤال بخصوص الدوال المثلثية مثل الساين والكوساين والتان فلناخذ التان على سبيل المثال
1 - تان (ظل) الزاوية يعني الضلع المقابل على الضلع المجاور للزاوية فمفروض ان قيمة التان للزاوية 45 تساوي 1 صحيح ولكن عندما استعمل الدالة ( MathTan(45 فانها تعطيني نتيحة مختلفة حيث تعطيني =1.61977510954 فاين الخلل وكيف يمكن معالجته والدالة والمثال مرفق بالملف الاول

2- ما هي الدالة لاستخراج معكوس التان فمثلا لدي قية ظل الزاوية ولنفرض = .1.2 واردت معرفة الزوايه فما هي الدالة التي استخدمها

3- لنفرض ان السعر وعلى فريم الساعه استغرق وقت مقداره 4 ساعات (وهو سيكون المحور السيني)ليرتفع مثلا من القيمة 1.19215 الى القيمة 1.198592 فكيف لي ان اكتب المعادلة لحساب قيمة الظل( التان) لتلك الزاوية بحيث احصل على نتائج دقيقة

ولكم جزيل الشكر استاذ

Rushdi 13-09-2017 06:12 PM

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

برمجت اكسبرت بسيط من اجل التعليم حسب خطوات الاستاذ اسلام لكن بيطلعلي تنبيه TestGenerator: unmatched data error mismatched ولا يقوم الاكسبرت بفتح صفقات كما مبين في الصورة

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

ارجوا من الاساتذة المساعدة

الكود


كود:

  //+------------------------------------------------------------------+
//|                                                      Deneme.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

extern double LotSize=0.1;
extern double StopLossPips=60;
extern double TakeProfitPips=60;
extern int MagicNumber = 55558;
extern int matimeframe = 240;
extern int maperiod = 8;
extern int mashift  = 0;
extern int mamethod = 0;
extern int maappliedprice=0;

extern int sartimeframe=240;
extern double sarstep=0.02;
extern double sarmaximum=0.2;
extern int sarshift=0;
double t;

double buyt,buys,selt,sels;

double ma1 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,1);
double ma2 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,2);


double sar1 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,1);
double sar2 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,2);


//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
  {
//---

  double tik=MarketInfo(Symbol(),MODE_TICKSIZE);
  if(tik==0.00001 || 0.001)
      t=tik*10;
  else t=tik;

  return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()

  {

  if(sar1 < ma1 && sar2< ma2)
      if(OrdersTotal()==0)
        if(StopLossPips==0)buys=0;
  else buys=Ask -(StopLossPips*t);
  if(TakeProfitPips==0)buyt=0;
  else buyt=Ask+(TakeProfitPips*t);

  bool x = OrderSend
  (Symbol(),OP_BUY,LotSize,Ask,5,buys,buyt,NULL,MagicNumber,Red);

  if(sar1<ma1 && sar2<ma2)
      if(OrdersTotal()==0)
        if(StopLossPips==0)sels=0;

  else sels=Bid+(StopLossPips*t);
  if(TakeProfitPips==0)selt=0;
  else selt=Ask -(TakeProfitPips*t);
  bool x2 = OrderSend
  (Symbol(),OP_SELL,LotSize,Bid,5,sels,selt,NULL,MagicNumber,Red);

//---

//---
  return(0);
  }
 
 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

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

/// Gets the error description
///
string GetErrorDescription(int iLastError)
  {
  string sErrorDescription="Unknown error";

  switch(iLastError)
    {
      case 0:    sErrorDescription = "No value";                                                break;
      case 1:    sErrorDescription = "No error";                                                break;
      case 2:    sErrorDescription = "Common error";                                            break;
      case 3:    sErrorDescription = "Invalid trade parameters";                                break;
      case 4:    sErrorDescription = "Trade server is busy";                                    break;
      case 5:    sErrorDescription = "Old version of the client terminal";                      break;
      case 6:    sErrorDescription = "No connection with trade server";                          break;
      case 7:    sErrorDescription = "Not enough rights";                                        break;
      case 8:    sErrorDescription = "Too frequent requests";                                    break;
      case 9:    sErrorDescription = "Malfunctional trade operation (never returned error)";    break;
      case 64:  sErrorDescription = "Account disabled";                                        break;
      case 65:  sErrorDescription = "Invalid account";                                          break;
      case 128:  sErrorDescription = "Trade timeout";                                            break;
      case 129:  sErrorDescription = "Invalid price";                                            break;
      case 130:  sErrorDescription = "Invalid stops";                                            break;
      case 131:  sErrorDescription = "Invalid trade volume";                                    break;
      case 132:  sErrorDescription = "Market is closed";                                        break;
      case 133:  sErrorDescription = "Trade is disabled";                                        break;
      case 134:  sErrorDescription = "return value of 'OrderSelect' should be checked";          break;
      case 135:  sErrorDescription = "Price changed";                                            break;
      case 136:  sErrorDescription = "return value of 'OrderSend' should be checked";            break;
      case 137:  sErrorDescription = "Broker is busy (never returned error)";                    break;
      case 138:  sErrorDescription = "Requote";                                                  break;
      case 139:  sErrorDescription = "Order is locked";                                          break;
      case 140:  sErrorDescription = "Long positions only allowed";                              break;
      case 141:  sErrorDescription = "Too many requests";                                        break;
      case 145:  sErrorDescription = "Modification denied because order too close to market";    break;
      case 146:  sErrorDescription = "Trade context is busy";                                    break;
      case 147:  sErrorDescription = "Expirations are denied by broker";                        break;
      case 148:  sErrorDescription = "Amount of open and pending orders has reached the limit";  break;
      case 4000: sErrorDescription = "No error (never generated code)";                          break;
      case 4001: sErrorDescription = "Wrong function pointer";                                  break;
      case 4002: sErrorDescription = "Array index is out of range";                              break;
      case 4003: sErrorDescription = "No memory for function call stack";                        break;
      case 4004: sErrorDescription = "Recursive stack overflow";                                break;
      case 4005: sErrorDescription = "Not enough stack for parameter";                          break;
      case 4006: sErrorDescription = "No memory for parameter string";                          break;
      case 4007: sErrorDescription = "No memory for temp string";                                break;
      case 4008: sErrorDescription = "Not initialized string";                                  break;
      case 4009: sErrorDescription = "Not initialized string in array";                          break;
      case 4010: sErrorDescription = "No memory for array\' string";                            break;
      case 4011: sErrorDescription = "Too long string";                                          break;
      case 4012: sErrorDescription = "Remainder from zero divide";                              break;
      case 4013: sErrorDescription = "Zero divide";                                              break;
      case 4014: sErrorDescription = "Unknown command";                                          break;
      case 4015: sErrorDescription = "Wrong jump (never generated error)";                      break;
      case 4016: sErrorDescription = "Not initialized array";                                    break;
      case 4017: sErrorDescription = "Dll calls are not allowed";                                break;
      case 4018: sErrorDescription = "Cannot load library";                                      break;
      case 4019: sErrorDescription = "Cannot call function";                                    break;
      case 4020: sErrorDescription = "Expert function calls are not allowed";                    break;
      case 4021: sErrorDescription = "Not enough memory for temp string returned from function"; break;
      case 4022: sErrorDescription = "System is busy (never generated error)";                  break;
      case 4050: sErrorDescription = "Invalid function parameters count";                        break;
      case 4051: sErrorDescription = "Invalid function parameter value";                        break;
      case 4052: sErrorDescription = "String function internal error";                          break;
      case 4053: sErrorDescription = "Some array error";                                        break;
      case 4054: sErrorDescription = "Incorrect series array using";                            break;
      case 4055: sErrorDescription = "Custom indicator error";                                  break;
      case 4056: sErrorDescription = "Arrays are incompatible";                                  break;
      case 4057: sErrorDescription = "Global variables processing error";                        break;
      case 4058: sErrorDescription = "Global variable not found";                                break;
      case 4059: sErrorDescription = "Function is not allowed in testing mode";                  break;
      case 4060: sErrorDescription = "Function is not confirmed";                                break;
      case 4061: sErrorDescription = "Send mail error";                                          break;
      case 4062: sErrorDescription = "String parameter expected";                                break;
      case 4063: sErrorDescription = "Integer parameter expected";                              break;
      case 4064: sErrorDescription = "Double parameter expected";                                break;
      case 4065: sErrorDescription = "Array as parameter expected";                              break;
      case 4066: sErrorDescription = "Requested history data in update state";                  break;
      case 4099: sErrorDescription = "End of file";                                              break;
      case 4100: sErrorDescription = "Some file error";                                          break;
      case 4101: sErrorDescription = "Wrong file name";                                          break;
      case 4102: sErrorDescription = "Too many opened files";                                    break;
      case 4103: sErrorDescription = "Cannot open file";                                        break;
      case 4104: sErrorDescription = "Incompatible access to a file";                            break;
      case 4105: sErrorDescription = "No order selected";                                        break;
      case 4106: sErrorDescription = "Unknown symbol";                                          break;
      case 4107: sErrorDescription = "Invalid price parameter for trade function";              break;
      case 4108: sErrorDescription = "Invalid ticket";                                          break;
      case 4109: sErrorDescription = "Trade is not allowed in the expert properties";            break;
      case 4110: sErrorDescription = "Longs are not allowed in the expert properties";          break;
      case 4111: sErrorDescription = "Shorts are not allowed in the expert properties";          break;
      case 4200: sErrorDescription = "Object is already exist";                                  break;
      case 4201: sErrorDescription = "Unknown object property";                                  break;
      case 4202: sErrorDescription = "Object is not exist";                                      break;
      case 4203: sErrorDescription = "Unknown object type";                                      break;
      case 4204: sErrorDescription = "No object name";                                          break;
      case 4205: sErrorDescription = "Object coordinates error";                                break;
      case 4206: sErrorDescription = "No specified subwindow";                                  break;
      default:  sErrorDescription = "Unknown error";
    }

  return(sErrorDescription);
  }
//+------------------------------------------------------------------+


Rushdi 14-09-2017 11:18 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
حليت مشكلة TestGenerator: unmatched data error mismatched

بس لسة ما بيفتح صفقات الرجاء من المساعدة من الاساتذة وذوي الخبرة

mostafa zoz 30-10-2017 08:59 PM

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

shivaa 06-12-2017 04:30 PM

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

محمود عبد الرازق 02-06-2018 08:42 AM

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

shivaa 06-08-2018 10:39 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
السلام عليكم
عندى مؤشر يسجل قيم اسماء اسهم الموجوده على الشرط فى ملف بامتداد csv
اسم الملف يكون على اساس الشكل التالى
indti_snbr2_save2_EURUSD240_7_2_7_1.csv
البيانات الموجوده فيه هى عمودين
عمود الاول اسم السهم يعبر عن الاتجاه الترند والثانى هو قيمه السهم
حيث قيمت السهم = (0) فى حاله اتجاه صاعد (شراء)
قيمت السهم = (1) فى حاله اتجاه الهابط (بيع) تكون مثل التالى
1529915400 1
1529928000 1
1529928900 1
1530000000 1
1530003660 1
1530187200 0
1530190260 0
1530201600 0
1530202620 0
المطلوب المساعده فيه هو
كيف قراء اخر سطر وتخزينه فى متغير
اعرف انه تغير الاتجاه والدخول على اساس الخانه الثانيه
شراء او بيع
ممكن الداله كامله فيها ما اريد
مرفق الملف
اكون شاكر


محمود عبد الرازق 12-09-2018 06:56 PM

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


الساعة الآن 05:36 AM

Powered by vBulletin® Copyright ©2000 - 2024

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