النتائج 1 إلى 8 من 8
الموضوع: اريد مساعدة رجاءا
- 18-07-2013, 03:29 AM #1
اريد مساعدة رجاءا
السلام عليكم ورحمة الله
لقد خطرت على بالي فكرة اكسبيرت وحاولت صنعه بيدي لكن الأمر كان صعبا حاولت تعلم برمجة الاكسبيرت لكنني تهت في متاهات الردود داخل مواضيع الأخوة الكرام التي تهتم بتعليم لغة البرمجة فارجو ممن لديه الوقت والمعلومات اللازمة ان يفيدني وله الأجر والثواب من الله
فكرة الإكسبيرت هي :
في بداية كل يوم جديد من التداول يقوم الإكسبيرت بفتح امر حسب حالة الشمعة السابقة له اي ( اذا كانت صاعدة ياخذ امر شراء واذا كانت هابطة يقوم بالبيع ) بستوب لوز قدره 20 نقطة وبهدف مفتوح لنهاية اليوم ( فكرت ان اجعل الهدف محدد ب 50 نقطة فقط فما رايكم ) في حال ضرب الستوب لوز يقوم مباشرة بفتح امر معاكس بستوب لوز قدره 20 نقطة وهدف مفتوح لنهاية اليوم
هذه هي الفكرة العامة للاكسبيرت
حاولت ان ابرمجه بيدي ووضعت له خطة كما يلي :
1 - يقوم باختبار بدء يوم جديد
2- يقوم باكتشاف حالة الشمعة الأخيرة
3-اذا كانت الشمعة صاعدة يفتح صفقة شراء حسب سعرافتتاح الشمعة الجديدة بدون هدف الستوب لوز 20 نقطة عند ضرب الستوب لوز يقوم بفتح صفقة معاكسة بدون هدف والستوب لوز 20 نقطة
4-اذا كانت الشمعة هابطة يفتح صفقة بيع حسب سعر افتتاح الشمعة الجديدة بودن هدف الستوب لوز 20 نقطة عند ضرب الستوب لوز يقوم بفتح صفقة معاكسة بدون هدف والستوب لوز 20 نقطة
5- يقوم بانهاء جميع الصفقات مهما كانت النتيجة عند انتهاء اليوم
ولكني وقعت بعدة اوامر اجهل كيفيتها وهي : فتح امر معاكس عندما يضرب الستوب لوز وكيفية اختبار اليوم الجديد وكيفية انهاء كافة الصفقات عند نهاية اليوم
فمن يستطيع مساعدتي في هذا الإكسبيرت اكون له من الشاكرين
همسة : اتمنى من المشرفين على منتدى الإكسبيرتات ولغة البرمجة ان يجمعو الدروس التي كتبت في هذا المجال في اماكن خالية من الردود والأمور الجانبية لكي يسهل على الباحثين عنها ان يجدوها
- 18-07-2013, 02:16 PM #2
لتذكير اخوتنا المبرمجين
- 18-07-2013, 03:43 PM #3
احببت ان استوضح بعض الافكار
1-على اي شارت ستعمل ؟
2- بدية اليوم لعمل ساعة الصفر ونهايته كذلك لكن قد تجد نه عندك صفقات مفتوحة لم تضرب الستوب لنفترض ان 5 صفقات على مدار ساعة او ساعتين ضربت الستوب اذن كل صفقة منهم تريد ان تعكس نفسها بصفقة جديدة بنفس الوقف وبدون هدف يعني هدف مفتوح صح؟
بالنسبة ان كان ما فهمته عن موضوع اغلاق صفقة وفتح صفقة معاكسة تحتاج ان تعمل دالة اختبار دوري للصفقات المغلقة عن طريق زمن الاغلاق يعني اقرب زمن اغلاق حصل هو دليل على اقرب صفقة مغلقة تأخذها كنوع من الشرط ثم تفتح صفقة جيدة بعد معرفة نوع الصفقة المغلقة
وتضع قيمة شرطية بحيث لا ياخذها مرة ثانية
هذه كفكرة مبسطة لعملية فتح صفقات معاكسة
اما شرطة اختبار الشمعات فبسيط هو تطرح الفرق بين الافتتاح والاغلاق بعض ضربهم في قيمة عدد النقاط بعد الفاصلة لتعرف هل الشمعة صاعدة ام هابطة
وفي نهاية اليوم تعمل شرط زمني لاغلاق جميع الصفقات
انا اعطيك رؤس اقلام لفكرتك وانت حاول
- 18-07-2013, 06:15 PM #4
رد:اريد مساعدة رجاءا
ظهرت فكرتي عندما كنت اراقب شارت اليورو دولار وان شاء الله ستعمل على باقي الشارتات
بالنسبة للهدف نعم الهدف مفتوح حتى ينتهي اليوم اي حتى تغلق شمعة الدايلي الحالية وتفتح شمعة جديدة
حاولت وكتبت الإكسبيرت لكنني وقفت عند امرين :
1 - الدالة التي تعكس الصفقة التي تضرب الستوب لوز
2 - الدالة التي تنهي الصفقات جميعها عند اغلاق شمعة الدايلي
وهذا ما توصلت اليه حتى الآن فارجو مساعدتي لاكماله
كود://+------------------------------------------------------------------+ //| ALIPHY3.mq4 | //| ALI | //| | //+------------------------------------------------------------------+ #property copyright "ALI" #property link "" //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ extern int Lots=1; extern int SL=20; int init() { int C0=iBarShift(Symbol(),PERIOD_D1,iTime(Symbol(),PERIOD_M30,0),true); int C1=iBarShift(Symbol(),PERIOD_D1,iTime(Symbol(),PERIOD_M30,1),true); if (C0!=C1) return(0); } int deinit() { return(0); } int start() { if(Close[1]>Open[1]) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,SL,"ea",0,Green); } else if(Close[1]<Open[1]) { OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,SL,"ea",0,Green); } } return(0);
- 18-07-2013, 07:40 PM #5
طريقتك في مقارنة حالة الشمعة السابقة جيدة ولكن هناك مشكلة وهي عندما المقارنة تنتهي ويفتح صفقة سوف يفتح من جديد ويستمر حتى تتغير الشمعة فلابد ان توقف العملية مرة واحدة يعني
اذا انت تريد مقارنة شمعة الساعة او العمل على شارت الساعة فلابد من تنفيذ الدخول في صفقة مرة واحدة
جرب مثالك باك تيست وستلاحظ ان برنامجك يفتح صفقات كثيرة
هناك نقطة وهي لا يوجد دالة تعطيك مهام مرة واحدة انت تصمم دالتك التي تفي بالغرض
فللخروج وقفل جميع الصفقات عند وقت معين لابد من عمل دالة شرطية
مثال بسيط
TimeCurrent()
هذه الدالة تعطيك الوقت الحالي للسيرفير
اعمل متغير زمني مثلا واعمل دالة شرط بمقارنة وعندما يتحقق الزمن فانه سينفذ دالة انت تصممها لقفل جميع الصفقات
بالنسبة لعكس الصفقة
هناك دالة لمعرفة وقت الاوردير المغلق
ومنها تعمل دالة لمراقبة اقرب زمن تم فيه غلق الصفقة
يعني تعمل مجموعة دوال كل لها مهمة ثم تضعهم في دالة ال start
iBarShift
هذه الدالة غير ضرورية
البديل لها
iclose
انظر لهذا الرابط
http://docs.mql4.com/series/iClose
كل الاوامر موجودة في هذا الرابط الخاص بالشركة
http://docs.mql4.com/index
- 19-07-2013, 01:35 AM #6
- 19-07-2013, 06:12 PM #7
- 20-07-2013, 01:06 AM #8