مشاهدة النسخة كاملة : دورة تعليم برمجة الاكسبريت
MOVING_AVERAGE
04-02-2013, 01:28 AM
يسعدنا ان نقدم لكم دورتنا 2
وهي دورة برمجة الاكسبريت
ان شاء الله سنترجم المؤشرات التي نعمل عليها في دورة المؤشرات الي اكسبريتات
من يريد ان يتابعنا في دورة الاكسبريتات لابد ان يفهم الية عمل المؤشر الذي سنحوله مع بعض الي اكسبريت
ان شاء الله سنبدء بابسط الامور وصول الي عمل اكسبريت
الهذلي
04-02-2013, 06:49 AM
متابع معكم وعلى احر من الجمر
موفقين ان شاءالله
سمير محمد ارمان
04-02-2013, 09:25 AM
متابع معكم ان شاء الله
بتوفيق
MOVING_AVERAGE
04-02-2013, 06:03 PM
بارك الله فيكم اخواني
MOVING_AVERAGE
04-02-2013, 06:08 PM
الاكسبريت
هو برنامج يعمل تلقائيا اوامر للبيع او الشراء او اوامر معلقة للبيع او الشراء
يمكنه تحديد الربح و تحديد الخسارة
يمكنه حذف الاوامر المعلقة كما يمكنه اغلاق الاوامر المفتوحة في اي وقت تشاء
كما يمكنه فعل اشياء كثيرة وكثيرة جدا في لمح البصر وبدقة متناهية حسب الطريقة التي برمج عليها
باختصار الاكسبريت يمكنه ان يعمل بدل منك وانت لست موجود علي الجهاز
MOVING_AVERAGE
04-02-2013, 06:14 PM
لماذا اذن بعض الاكسبريتات لا تنجح
الاكسبريت يحتاج اولا الي خطة عمل واضحة دقيقة ونسبة نجاحها كبير
يحتاج الي نت سريع من تجربتي الشخصية نفس الاكسبريت علي نفس المنصة
فتح عندي اوامر ولم يفتح عند صديقي نفس الاوامر
يحتاج ذاكرة لابئس بها علي الجهاز لتنفبذ الاوامر
وكمثال عن تجربة لو تفتح اكسبريت علي شارت في جهازين
نفس المنصة ونفس الاكسبريت
الجهاز الاول تضع باك تست علي المنصة ثم تشغل الاكسبريت
الجهاز الثاني لا تشغل شئ وضع الاكسبريت
ستلاخظ انه ينفذ صفقات في جهاز ولا ينفذ في جهاز اخر
MOVING_AVERAGE
05-02-2013, 11:52 PM
ماهي الية عمل الاكسبريت بصفة عامة
الاكسبريت هو منفذ للاوامر التي يضعها المبرمج
ان لم يحدد المبرمج بالتدقيق شروط الدخول او الخروج
او لم يدرس كل الحالات الممكن تحققها فان الاكسبريت لن ينجح
MOVING_AVERAGE
05-02-2013, 11:55 PM
ماهي اوامر المتاجرة التي يمكن ان ينفذها الاكسبريت
يمكن للاكسبريت ان ينفذ اوامر الشراء او البيع المباشر
ومن هذه اللحضة لن نستخدم كلمة شراء او بيع بل سنستخدم كلمة شراء buy و بيع sell
يتم تنفيذ buy و sell مباشرة بعد تحقق شروط الصفقة
ونطلق علي sell و buy اوامر مباشرة
MOVING_AVERAGE
05-02-2013, 11:58 PM
ممكن ان ينفذ الاكسبريت اوامر غير مباشرة
يعني حتي لو تحققت شروط الدخول في الصفقة لن يدخل مباشرة في الصفقة
هذه الاوامر يطلق عليها اوامر معلقة
وبالطبع فيها نوعين راسيين بيع معلق وشراء معلق وسنترجم كتابتهم في وقتها
MOVING_AVERAGE
06-02-2013, 12:01 AM
البيع المعلق
يعني اننا نضع امر بيع بعيد عن السعر الحالي
يمكن امر البيع المعلق اعلي من السعر الحالي
ويمكن ان يكون البيع المعلق اسفل من السعر الحالي
ونفس الامر بالنسبة للشراء المعلق
حاضر لاي استفسار
The_Mask
08-02-2013, 03:36 AM
اولا
شكرا لك وجهد توجر عليه ومتابعين معاك من الالف الى الياء والله يعينك عاى الاسئله
ثانيا
في امور تحتاج توضيح قبل ان تبداء لان كثير من الناس بتختلط عليه الاموربينهم
ماهو الفرق بين الاكسبرت والسكربت
ثالثا
بالنسبه للبروكر اللي منزل الاكسبرت على منصته ياترى ايه اللي بيعرفه عن الاكسبرت
هل فقط الاوردر والتيك بروفت والاستوب ام انه يعرف كثير عن عمل الاكسبرت مثل
شروط الدخول للاكسبرت والعقود اللي ممكن يدخل بها لاحقا وغيره
رابعا
نطالب الاداره بتثبيت الموضوع والله حرام جهد وتعب يعاملونه زي اي موضوع عادي
MOVING_AVERAGE
08-02-2013, 11:24 AM
اولا
شكرا لك وجهد توجر عليه ومتابعين معاك من الالف الى الياء والله يعينك عاى الاسئله
ثانيا
في امور تحتاج توضيح قبل ان تبداء لان كثير من الناس بتختلط عليه الاموربينهم
ماهو الفرق بين الاكسبرت والسكربت
ثالثا
بالنسبه للبروكر اللي منزل الاكسبرت على منصته ياترى ايه اللي بيعرفه عن الاكسبرت
هل فقط الاوردر والتيك بروفت والاستوب ام انه يعرف كثير عن عمل الاكسبرت مثل
شروط الدخول للاكسبرت والعقود اللي ممكن يدخل بها لاحقا وغيره
رابعا
نطالب الاداره بتثبيت الموضوع والله حرام جهد وتعب يعاملونه زي اي موضوع عادي
انا لا اتحدث عن السكريبت
ولم ابرمج من قبل سكريبت
انا اتحدث في هته الدورة عن expert advisor
بالنسبة لسؤال البروكر سنتطرق اليه في اوانه
لا اريد تشتيت المعلومات خصوصا في دورة الاكسبريت لان كل الامور فيها مترابطة
م.أحمد السليمان
08-02-2013, 05:27 PM
انا لا اتحدث عن السكريبت
ولم ابرمج من قبل سكريبت
انا اتحدث في هته الدورة عن expert advisor
بالنسبة لسؤال البروكر سنتطرق اليه في اوانه
لا اريد تشتيت المعلومات خصوصا في دورة الاكسبريت لان كل الامور فيها مترابطة
بارك الله فيك أخي موفنغ افريج
نرجو من حضرتك التطبيق المباشر على شرحك وياريت لو تدعم موضوعك بشرح فيديو وامثلة سهله لاكسبرتات تبيع وتشتري من النوع البسيط لنفهم ونتابع معك
تساهيل
08-02-2013, 05:31 PM
يسعدنا ان نقدم لكم دورتنا 2
وهي دورة برمجة الاكسبريت
ان شاء الله سنترجم المؤشرات التي نعمل عليها في دورة المؤشرات الي اكسبريتات
من يريد ان يتابعنا في دورة الاكسبريتات لابد ان يفهم الية عمل المؤشر الذي سنحوله مع بعض الي اكسبريت
ان شاء الله سنبدء بابسط الامور وصول الي عمل اكسبريت
بارك الله فيك على هذا الموضوع الاكثر من رائع
لطالما قمنا بالطلب من الاخوة المبرمجين اكسبريتات ومؤشرات
ونتعبهم معنا في تصميمها ولكن في الاخير تكون الفكرة والخطة لدينا ناقصة
مما يدفعها الى التخلي عنه ..
ويضيع تعب الاخوة المبرمجين بسبب تقصيرنا في دراسة الجدوى للاكسبريتات والمؤشرات
فطرحك لهذا الموضوع ان شاء الله يخفف عن الاخوة المبرمجين
وكذلك لتتضح لنا الصورة ولنعتمد على نفسنا ونساعد غيرنا في الربح من هذا السوق العنيد
ان شاء الله اكون من المتابعين لك خلال هذه الفترة -
واسف على الاطاله ... الله يوفق الجميع
ayoob
08-02-2013, 07:26 PM
متابعين ان شاء لله
MOVING_AVERAGE
13-02-2013, 04:15 PM
اذا هناك بالمختصر 6 انواع من البيع المختلف
1 بيع مباشر
1 شراء مباشر
2 بيع معلق
2 شراء معلق
MOVING_AVERAGE
13-02-2013, 04:28 PM
ماهي الامور التي لابد من معرفتها لكي ننفذ عمليات البيع والشراء بمختلف انواعها
اولا نبدء بالبيع والشراء المباشر
نحتاج معرفة السعر الذي ينفذ عليه الاكسبريت البيع المباشر والشراء المباشر
وقبل معرفة سعر التنفيذ لابد ان نعرف معني سعر العرض وسعر الطلب في السوق
كيف يربح البروكر الذي نعمل عليه
هو ببساطة يشتري العملة بسعر ويبيعها بسعر اعلي
وهذا ما يسمي بسعر العرض او سعر البيع Ask
وسعر الطلب او سعر الشراء Bid
ويجب التركيز قليلا هنا فالعملية متعاكسة
لما البروكر يشتري يعني المتاجر في هذه الحالة يبيع بسعر Bid
ولما البروكر يبيع يعني المتاجر يشتري بسعر Ask
ومختصر ما سبق بالنسبة للمتاجر
سعر الشراء المباشر Buy هو Ask
سعر البيع المباشر Sell هو Bid
في انتضار اي استفسار
MOVING_AVERAGE
13-02-2013, 04:37 PM
بارك الله فيك أخي موفنغ افريج
نرجو من حضرتك التطبيق المباشر على شرحك وياريت لو تدعم موضوعك بشرح فيديو وامثلة سهله لاكسبرتات تبيع وتشتري من النوع البسيط لنفهم ونتابع معك
لايمكن التطبيق المباشر اخي ثم ارجع لشرح لماذا وضعت الدحول في الصفقات والاهداف ومواقعهم
ومامعني الاوامر المختلفة
ستكون الطريقة بالتدريج لكي يفهمها اي احد خصوا المبتدئين
MOVING_AVERAGE
13-02-2013, 04:38 PM
بارك الله فيك على هذا الموضوع الاكثر من رائع
لطالما قمنا بالطلب من الاخوة المبرمجين اكسبريتات ومؤشرات
ونتعبهم معنا في تصميمها ولكن في الاخير تكون الفكرة والخطة لدينا ناقصة
مما يدفعها الى التخلي عنه ..
ويضيع تعب الاخوة المبرمجين بسبب تقصيرنا في دراسة الجدوى للاكسبريتات والمؤشرات
فطرحك لهذا الموضوع ان شاء الله يخفف عن الاخوة المبرمجين
وكذلك لتتضح لنا الصورة ولنعتمد على نفسنا ونساعد غيرنا في الربح من هذا السوق العنيد
ان شاء الله اكون من المتابعين لك خلال هذه الفترة -
واسف على الاطاله ... الله يوفق الجميع
ان شاء الله اخي
MOVING_AVERAGE
13-02-2013, 04:39 PM
متابعين ان شاء لله
بارك الله فيك
MOVING_AVERAGE
13-02-2013, 04:51 PM
ماهو موقع Ask و Bid من السعر الحالي
وقبل ذلك ماهو السعر الحالي
السعر الحالي هو سعر اغلاق الشمعة الحالية
يعني
Close[0];
هو السعر الحالي
سعر Ask يكون فوق السعر الحالي بعدد معين من النقاط
سعر Bid يكون نفسه السعر الحالي
MOVING_AVERAGE
13-02-2013, 05:01 PM
بعد معرفة موقع Ask و Bid
ننتقل الي التيكبروفيت
والاستوب لوز
والتيك بروفيت هو عدد النقاط التي يغلق الاكسبريت الصفقة المفتوحة بعد تحقيقا
الاستوب لوز هو ايضا عدد النقاط التي يغلق الاكسبريت الصفقة المفتوحة بعد انعكاس السعر بمقدارها
وسنتطرق الي نقاط التطبيق مباشرتا علي الشارت بعد تنفيذ اول اكسبريت
MOVING_AVERAGE
13-02-2013, 05:03 PM
نقطة التسامح
هي النقطة التي يمكن ان يتسامج الاكسبريت في فتح صفقة في مجالها
مثلا لو اننا وضعنا نقطة التسامح = 3
يعني هنا الاكسبريت ممكن يتسامح علي اكثر تقدير في 3 نقاط لما يفتح الصفقة
ونقطة التسامح مهمة جدا لكي لا يفتح لنا الاكسبريت الصفقة في مكان بعيد جدا عن المكان الذي نريده
MOVING_AVERAGE
13-02-2013, 05:07 PM
الماجيك نمبر
هو الرقم السحري المميز للاكسبريت
هذا الرقم السحري مهم جدا لاننا سنربط كل الاوامر التي ينفذها الاكسبريت بهذا الرقم
فيقوم الاكسبريت بمراجعة الرقم السحري لاي صفقة اذا وجده نفسه الرقم السحري للاكسبريت ينفذ الامر وان لم يجده لا ينفذ الامر
MOVING_AVERAGE
13-02-2013, 05:09 PM
ان شاء الله تم تعريف كل الامور التي نحتاجها لفتح صفقة ما
ساكمل بقية الاوامر بعد تنفيذ اول مؤشر في الدورة الاخري
MOVING_AVERAGE
22-02-2013, 05:12 PM
نكمل الدورة بعد برمجة اول مؤشر لتقاطع الموفنجين
وهذا هو المؤشر الذي سنستخدمه لعمل اكسبريت يبيع ويشتري علي حسب اسهمه
للتذكير السهم يضهر متاخر بعد تاكيد التقاطع والاكسبريت سيدخل لما يتاكد التقاطع من الشمعة الحالية
MOVING_AVERAGE
22-02-2013, 05:15 PM
ماهي الدالة المسؤولة عن تنفيذ اوامر البيع والشراء المختلفة ؟؟؟
انها الدالة
OrderSend
حيث الكتابة العامة لها كالتالي
int 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=CLR_NONE)
وسيتم شرح كل خانة منفصلة
MOVING_AVERAGE
22-02-2013, 05:21 PM
string symbol
كما تعودنا اول خانة هي للشارت الذي يوضع عليه الاكسبريت
اذا كنا نريد استخدام الاكسبريت لاي شارت يوضع عليه
نستخدم
0
او
NULL
اذا كنا اريد شارت معين نكتب اسم الشارت بالحروف الكبيرة
مثلا EURUSD ويجب ان تكون الكتابة بين قوسين مزدوجين لا الخانة الاولي عبارة عن متغير من نوع string
"EURUSD"
وبصفة عامة نكتبها كالتالي
Symbol()
حيث ياخذ اسم الشارت تلقائيا
magdyzaki
22-02-2013, 05:28 PM
اخى الكريم بعد اذنك انا عملت اكسبرت لاستراتيجية قوية انا مجربها وارباحها كبيرة بس ينقصنى شئ واحد فقط عشان يكتمل العمل
عايز اغلق الشراء عند تحقق شرطين وهما:
الاول ظهور السهم الاحمر فوق الشمعة الحالية
الثانى ظهور نقاط الباربوليك الابيض فوق الشمعة الحالية
لكن مش عارف اعملهم على الموقع Expert Advisor Builder for MetaTrader 4 (http://www.borsaat.com/vb/redirector.php?url=http%3A%2F%2Fsufx.core.t3-ism.net%2FExpertAdvisorBuilder%2F)
فارجو لو تكرمت تساعدنى وتقولى اختار ايه من الاختيارات
ولك جزيل الشكر
http://www.borsaat.com/vb/uploaded/58410_1361542138.png
MOVING_AVERAGE
22-02-2013, 05:29 PM
الخانة الثانية
int cmd
نكتب فيها الامر الذي نريد تنفيذه
اذا كان buy مباشر نكتب
OP_BUY
اذا كان امر sell مباشر نكتب
OP_SELL
ونفس الامر بالنسبة للبيع والشراء المعلق
OP_SELLSTOP
OP_BUYSTOP
OP_BUYLIMIT
OP_SELLLIMIT
في مثالنا سنستخدم الاوامر المباشرة فقط
MOVING_AVERAGE
22-02-2013, 05:32 PM
اخى الكريم بعد اذنك انا عملت اكسبرت لاستراتيجية قوية انا مجربها وارباحها كبيرة بس ينقصنى شئ واحد فقط عشان يكتمل العمل
عايز اغلق الشراء عند تحقق شرطين وهما:
الاول ظهور السهم الاحمر فوق الشمعة الحالية
الثانى ظهور نقاط الباربوليك الابيض فوق الشمعة الحالية
لكن مش عارف اعملهم على الموقع Expert Advisor Builder for MetaTrader 4 (http://www.borsaat.com/vb/redirector.php?url=http%3A%2F%2Fsufx.core.t3-ism.net%2FExpertAdvisorBuilder%2F)
فارجو لو تكرمت تساعدنى وتقولى اختار ايه من الاختيارات
ولك جزيل الشكر
http://www.borsaat.com/vb/uploaded/58410_1361542138.png
اخي انا لا استعمل هذا البرنامج الاوامر اكتبها يدويا
لو تريد الاوامر يدويا حضر
لو تريد ان تفهم اكثر تابعنا في تنفيذ هذا الاكسبريت وستفهم كيف تغلق الاوامر عند ضهور اشاره عكسية
MOVING_AVERAGE
22-02-2013, 05:38 PM
الخانة الثالثة
double volume
هذه الخانة نضع فيها اللوت الذي نريده
ولكي نجعل اللوت متغير خارحي
نكتب
extern double Lots = 1;
حيث يمكننا التحكم بحكم العقد من الاعدادات الخارجية
ونكتب في هذه الخانة
Lots
اذا حتي الان لدينا امران واحد buy مباشر والاخر sell مباشر
وتكون كتابتهم حتي الان كالتالي
OrderSend(Symbol(),OP_SELL,Lots
OrderSend(Symbol(),OP_BUY,Lots
MOVING_AVERAGE
22-02-2013, 05:43 PM
الخانة 4
double price
نكتب فيها سعر التنفيذ الذي ينفذ من عنده الاكسبريت الامر
وكما قلنا سعر تنفيذ buy هو
Ask
وسعر تنفيذ sell هو
Bid
وشرحتهم باستفاضة فيما سبق
اذا في هذه الخانة سنكتب سعر التنفيذ لكل عملية
OrderSend(Symbol(),OP_BUY,Lots,Ask,
OrderSend(Symbol(),OP_SELL,Lots,Bid
MoHaMeD EgY
23-02-2013, 12:23 AM
متابع معك
:1 (105):
e_aborawash
24-02-2013, 09:14 PM
شكرا على الموضوع الجميل
وارجوا المتابعة
MOVING_AVERAGE
24-02-2013, 11:08 PM
ان شاء الله سيتم تكملة دالة الاشراء والبيع في اقرب وقت
magdyzaki
25-02-2013, 03:19 AM
اخي انا لا استعمل هذا البرنامج الاوامر اكتبها يدويا
لو تريد الاوامر يدويا حضر
لو تريد ان تفهم اكثر تابعنا في تنفيذ هذا الاكسبريت وستفهم كيف تغلق الاوامر عند ضهور اشاره عكسية
لو ممكن اخى الكريم تقولى كيف اجعل الاكسبرت يعمل على منصات 4 ارقام و 5 ارقام
MOVING_AVERAGE
25-02-2013, 12:24 PM
لو ممكن اخى الكريم تقولى كيف اجعل الاكسبرت يعمل على منصات 4 ارقام و 5 ارقام
هذا ما كنت اود شرحه لكي اكمل كتابة الدالة
ماهو الفرق بين منصة 5 ارقام و 4 ارقام
ولماذا الاكسبريت يشتغل في منصة 5 ارقام ولا يشتغل في منصة 4 ارقام في بعض الحالات عندما لا نضيف بعض الاختيارات
MOVING_AVERAGE
25-02-2013, 12:33 PM
الفرق الجوهري يكمن في قيمة النقطة المحسوبة
وقيمة النقطة علي حسب المنصة
اولا قيمة النقطة علي المنصة هي اصغر قيمة بعد الفاصلة
يعني في منصة 5 ارقام لو يكون عندنا هذا العدد
1.32354
قيمة النقطة حسب المنصة هي اصغر قيمة بعد الفاصلة
يعني 0.00001
اما قيمة النقطة التي نتاجر عليها هي 0.0001
وهنا يوجد الاختلاف بين منصة 4 و 5 ارقام
ولكي نتجاوز هذا الاختلاف نضيف تعريف النقطة كما يلي
في دالة init
نضيف الكتابة التالية وهذه الكتابة لتحديد قيمة النقطة في منضة 4 و 5 ارقام
وعلي كل الازواج
لان ازواج الين فيها اما رقمين او 3 فقط حسب المنصة
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
ونصبح نتعامل في كود الاكسبريت بدلالة point ب p الصغير وليس P كبيرة
magdyzaki
25-02-2013, 01:18 PM
الفرق الجوهري يكمن في قيمة النقطة المحسوبة
وقيمة النقطة علي حسب المنصة
اولا قيمة النقطة علي المنصة هي اصغر قيمة بعد الفاصلة
يعني في منصة 5 ارقام لو يكون عندنا هذا العدد
1.32354
قيمة النقطة حسب المنصة هي اصغر قيمة بعد الفاصلة
يعني 0.00001
اما قيمة النقطة التي نتاجر عليها هي 0.0001
وهنا يوجد الاختلاف بين منصة 4 و 5 ارقام
ولكي نتجاوز هذا الاختلاف نضيف تعريف النقطة كما يلي
في دالة init
نضيف الكتابة التالية وهذه الكتابة لتحديد قيمة النقطة في منضة 4 و 5 ارقام
وعلي كل الازواج
لان ازواج الين فيها اما رقمين او 3 فقط حسب المنصة
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
ونصبح نتعامل في كود الاكسبريت بدلالة point ب p الصغير وليس P كبيرة
استاذى الكريم حاولت اضيف الدالة ولكن فشلت لذلك انا ارفقت الاسكربت واتمنى من حضرتك تساعدنى وتضيف اليه المطلوب
اولا انه يعمل على المنصتين 4 و 5 ارقام
ثانيا عايز الخروج من البيع يكون بظهور سهم الفرى ريكومندشن ونقاط الباربوليك اسفل اخر شمعة مع اختراق خط 7 لخط 14 من فوق لتحت
والعكس بالنسبة للشراء
ويكون التبريد كل 50 نقطة
انا عارف انى هتعبك ولكن هذه الاستراتيجية تعتبر انجح استراتيجية انا جربتها
MOVING_AVERAGE
25-02-2013, 01:22 PM
استاذى الكريم حاولت اضيف الدالة ولكن فشلت لذلك انا ارفقت الاسكربت واتمنى من حضرتك تساعدنى وتضيف اليه المطلوب
اولا انه يعمل على المنصتين 4 و 5 ارقام
ثانيا عايز الخروج من البيع يكون بظهور سهم الفرى ريكومندشن ونقاط الباربوليك اسفل اخر شمعة مع اختراق خط 7 لخط 14 من فوق لتحت
والعكس بالنسبة للشراء
ويكون التبريد كل 50 نقطة
انا عارف انى هتعبك ولكن هذه الاستراتيجية تعتبر انجح استراتيجية انا جربتها
ياريت اخي ترفق المؤشر الذي يضهر الاسهم
magdyzaki
25-02-2013, 01:52 PM
ياريت اخي ترفق المؤشر الذي يضهر الاسهم
اتفضل
magdyzaki
25-02-2013, 04:03 PM
بارك الله فيك استاذى الكريم
المؤشرات التى سنستخدمها
7 موفنج افريج اكسبونينشال
14 موفنج افريج سيمبل
21 موفنج اكسبونينشال
55 موفنج سيمبل
100 موفنج سيمبل
100 موفنج اكسبونينشال
200 موفنج سيمبل
200 موفنج كسبونينشال
365 موفينج سمبل
1000 موفنج اكسبونينشال
فرى ريكومندشن
نقاط الباربوليك
الاستراتيجية عبارة عن
فتح الشراء عندما يتوفر 3 شروط
1- اختراق خط ال 21 و 7 لجميع الخطوط من تحت لفوق
2- ظهور السهم فرى ريكومندشن من تحت الشمعة الحالية
3- ظهور نقاط الباربوليك من تحت الشمعه الحالية
الخروج من الشراء عند حدوث 4 شروط
1- اختراق خط 7 لخط 14 من فوق لتحت
2- اختراق خط 7 لخط 14 و 21 من فوق لتحت
3- ظهور سهم الفرى ريكومندشن من فوق الشمعة
4- ظهور نقاط الباربوليك من فوق الشمعة
وطبعا العكس فى البيع
هذه فرصة شراء
http://www.borsaat.com/vb/uploaded/58410_1361796209.png
والعكس بيع
http://www.borsaat.com/vb/uploaded/58410_1361796766.png
MOVING_AVERAGE
25-02-2013, 11:53 PM
اخي لم اجد هذا المؤشر
فرى ريكومندشن
forex 2012
25-02-2013, 11:58 PM
اخي لم اجد هذا المؤشر
فرى ريكومندشن
اتفضل يا اخى ... بالمرفقات
رغم ان الموضوع تحول الى قسم طلبات اكسبرتات بعيد عن الدورة
MOVING_AVERAGE
26-02-2013, 12:00 AM
اتفضل يا اخى ... بالمرفقات
رغم ان الموضوع تحول الى قسم طلبات اكسبرتات بعيد عن الدورة
ان شاء الله ستحذف المشارات التي ليس لها علاقة بالدورة
magdyzaki
26-02-2013, 01:27 AM
اخي لم اجد هذا المؤشر
فرى ريكومندشن
اتفضل استاذى الكريم فى المرفقات
abou fares
27-02-2013, 04:19 PM
استاذ موفينج انا بانتظار تكملت الموضوع لان طلبي هو اكسبيرت لهذا امؤشر
MOVING_AVERAGE
27-02-2013, 05:16 PM
استاذ موفينج انا بانتظار تكملت الموضوع لان طلبي هو اكسبيرت لهذا امؤشر
والله اخي لم اجد وقت لاكمال الدورة حتي الان
كل الوقت اخذه عمل الاكسبريتات
MOVING_AVERAGE
28-02-2013, 09:54 PM
الخانة 4
double price
نكتب فيها سعر التنفيذ الذي ينفذ من عنده الاكسبريت الامر
وكما قلنا سعر تنفيذ buy هو
Ask
وسعر تنفيذ sell هو
Bid
وشرحتهم باستفاضة فيما سبق
اذا في هذه الخانة سنكتب سعر التنفيذ لكل عملية
OrderSend(Symbol(),OP_BUY,Lots,Ask,
OrderSend(Symbol(),OP_SELL,Lots,Bid
نكمل من هنا ان شاء الله
MOVING_AVERAGE
28-02-2013, 10:00 PM
int slippage
وهي التسامح الذي يمكن للاكسبريت فتح صفقة في حدوده
يعني مثلا
لوكان لدينا التسامح 4 نقاط فهنا ممكن الاكسبريت يفتح صفقة علي اقصي بعد قدره 4 نقاط
نحن نستخدم دائما التسامح 3 نقاط علي اكثر تقدير
MOVING_AVERAGE
28-02-2013, 10:07 PM
الخانتين التاليتين
double stoploss
نضع فيها الاستوب لوز
double takeprofit
نضع فيها التيك بروفيت
سؤال :
هل يعني هذه الخانة اضع فيها في التيك بروفيت عدد النقاط التي اريد ربحها
وفي الستوب لوز عدد النقاط التي مستعد لخسارتها
الجواب
لا
في هذه الخانة نضع السعر الذي نريد اغلاق الصفقة لما يصل الي السعر الحالي
سؤال اخر
وكيف تكون الطريقة لتحديد السعر الذي يغلق فيه الصفقة
الجواب
نحن نعرف مسبقا السعر الذي تتفعل الصفقة عنده وهو
Ask
او
Bid
لذا لحساب سعر اغلاق الصفقة سنعتمد علي سعر الدخول
سنشرح مثلا علي عملية Buy
MOVING_AVERAGE
28-02-2013, 10:17 PM
في عملية
Buy
سعر تفعيل الصفقة هو
Ask
الهدف سيكون فوق سعر الدخول
والستوب لوز سيكون تحت سعر الدخول
مثلا نضع الهدف 10 نقاط
والستوي لوز 7 نقاط
اذا
سعر اغلاق الصفقة علي ربح سيكون
ask
+ 10 نقاط
سعر اغلاق الصفقة علي خسارة سيكون
ask
- 7 نقاط
وهنا الاشكال الذي يطرح بين مختلف المنصات
ولدينا نوعين من المنصات
منصة ذات 4 ارقام و 2 ارقام في عملات الين
في هذه المنصة قيمة النقطة علي المنصة = 0.0001 وهي نفسها قيمة النقطة التي نتاجر عليها
وفي عملات الين قيمتها 0.01
اذا في مثالنا السابق سيكون لدينا
سعر اغلاق الصفقة علي ربح سيكون
ask
+ 10*0.0001
سعر اغلاق الصفقة علي خسارة سيكون
ask
- 7*0.0001
بالنسبة لعملات الين
سعر اغلاق الصفقة علي ربح سيكون
ask
+ 10*0.01
سعر اغلاق الصفقة علي خسارة سيكون
ask
- 7 *0.01
كيف نحل هذا المشكل اولا علي منصت 4 ارقام
سنستعمل دالة لتقارن لنا علي اي عملة نعمل
لو كنا علي عملة فيها 4 ارقام بعد الفاصلة ستستعمل 0.0001
لو كنا علي عملة فيها 2 ارقام بعد الفاصلة ستستعمل 0.01
MOVING_AVERAGE
28-02-2013, 10:26 PM
هته الدالة تكتب قبل تنفيذ الدالة ستارت يعني في الدالة init
نستعمل في هذه الدالة الكتابة
Digits
وهذه الكتابة ترجع لنا عدد الارقام بعد الفاصلة
سنقارن علي حسب
Digits
ونضع متغير كلما وجد Digits يضع قيم تتناسب معه
نعرف متغير خارج الدالة start
double point;
ومتغير اخر سنستعمله في التسامح
int Q;
داخل الدالة init سنبدء المقارنة
وتكون بالشكل التالي
if(Digits==2)
{
point=0.01;
}
بالنسبة لعملات الين علي منصة 4 ارقام
if(Digits==4)
{
point=0.0001;
}
بالنسبة للعملات الرئسية علي اربع ارقام
MOVING_AVERAGE
28-02-2013, 10:32 PM
بعد ان حللنا مشكلة النقطة في منصت 4 ارقام ننتقل الي منصت 5 ارقام
في منصة خمس ارقام
سيكون لدينا 5 ارقام بعد الفاصلة في العملات الرئسية
اذا اصخر رقم الذي هو النقطة = 0.00001
وفي عملات الين نجد 3 ارقام بعد الفاصلة
والنقطة الافتراضية = 0.001
لاكن هذه القيم لا تخدمنا في المتاجرة
لاننا نحتاج قيمة النقطة دائما 0.0001 او 0.01
نعمل ايضا عملية مقارنة في الدالة init
وتكون كما يلي
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
اذا عملية المقارنة بالنسبة للنقطة ستكون كالتالي
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
MOVING_AVERAGE
28-02-2013, 10:37 PM
اخر عملية مقارنة سنعملها لوجود فرق في كتابة التسامح علي منصة 4 ارقام و 5 ارقام
في منصة اربع ارقام نكتب التسامح مثلا 3 نقاط 3
في منصةخمس ارقام نكتب التسامح مثلا 3 نقاط 30
ولهذا نعمل المقارنة التالية
بعد وضع متغير خارج الدالة start لنضع فيه قيم التسامح
int Q;
ثم المقارنة كالتالي
if(Digits==5||Digits==3)Q=10;
else Q=1;
اذا وباختصار الدالة التي نستعملها لمقارنة النقطة هي
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
MOVING_AVERAGE
28-02-2013, 10:42 PM
الان ننتقل الي كتابة التيك بروفيت والاستوب لوز لعملية Buy مثلا
نضع متغير خارجي من نوع int
لتحديد نقاط الهدف مثلا
ومتغير اخر خارج الدالة ستار من نوع int لتحديد الخسارة
وضعنا المتغير من نوع int
extern int StopLoss=0;
extern int TakeProfit=0;
MOVING_AVERAGE
28-02-2013, 10:49 PM
تحديد الهدف
الهدف كما قلنا هو قيمة Ask زائد قيمة TakeProfit مضروبة في عدد النقاط
اذا
سنستعمل مثلا
double TP;
ونضع فيه القيمة كالتالي
TP=Ask+TakeProfit*point;
بالنسبة للستوب
double SL;
SL=Ask-StopLoss*point;
لاكن لو ننفذ الاكسبريت علي هذه الطريقة سيعطينا خلل
وهذا الخلل لو تركنا
الستوب لوز والتيك بروفيت = صفر من الاعددات الخارجية
لذا نعمل ايضا مقارمة لكي نتجنب هذا المشكل
والمقارنة ستكون كالتالي
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TPb=Ask+TakeProfit*po int;}
وبهذا نكون حددنا الهدف والخسارة
Mohamed_Amr
28-02-2013, 10:56 PM
الله يفتح عليك اخى موفينج
وربى يزيدك علم ولى استفسار هل
ممكن عمل اكسبريت يعتمد على الرينج اليومى
مع امكانيه التحكم من اعداد الاكسبريت بتحديد الرينج يدوى
ان كان ممكن سوف اضع طلب مع الشرح
وربى يبارك فيك
MOVING_AVERAGE
28-02-2013, 10:56 PM
بالنسبة لل sell اترك لكم تنفيذ الفكرة
نرجع الي دالة الاوامر
OrderSend( Symbol(), OP_BUY, LOTS, Ask,3*Q,SL,TP,
OrderSend( Symbol(), OP_SELL, LOTS,Bid,3*Q,SL,TP,
مع ملاحضة ان الستوب لوز والتيك مختلفة في كل امر
الخانة الموالية
string comment=NULL
هذه الخانة ستضهر لنا كتابة التي نريد اما موقع تنفيذ الامر
انا اتركها فارغة
""
MOVING_AVERAGE
28-02-2013, 10:58 PM
الله يفتح عليك اخى موفينج
وربى يزيدك علم ولى استفسار هل
ممكن عمل اكسبريت يعتمد على الرينج اليومى
مع امكانيه التحكم من اعداد الاكسبريت بتحديد الرينج يدوى
ان كان ممكن سوف اضع طلب مع الشرح
وربى يبارك فيك
اذا كان ممكن حساب الرنج وهذا امر بسيط
بالطبع يمكنك وضع اوامر اعتمادا عليه
Mohamed_Amr
28-02-2013, 11:03 PM
اذا كان ممكن حساب الرنج وهذا امر بسيط
بالطبع يمكنك وضع اوامر اعتمادا عليه
جارى طرح الفكرة واتمنى اضافه الفكرة لاكسبريت الرينكو
وبالتوفيق دائما ياغالى
MOVING_AVERAGE
28-02-2013, 11:09 PM
الخانة الموالية
int magic=0
في هذه الخانة نضع رقم يمز الاكسبريت عن بقية الاكسبريتات
خارج الدالة start
نضع متغير خارجي فيه رقم لكي نستعمله في هذه الخانة
extern int MagicNumber=1234;
MOVING_AVERAGE
28-02-2013, 11:11 PM
datetime expiration=0
هذه الخانة تتعلق بالاوامر المعلقة
سنضعها = 0
color arrow_color=CLR_NONE
هذه الخانة تضهر لون السهم عند تنفيذ الامر
MOVING_AVERAGE
28-02-2013, 11:14 PM
وبكتابة كل ما تعلمناه من قبل
سنجد
OrderSend( Symbol(), OP_BUY, LOTS, Ask,3*Q,SL,TP,"",MagicNumber,0,Red);
OrderSend( Symbol(), OP_SELL, LOTS,Bid,3*Q,SL,TP,"",MagicNumber,0,Blue);
وهذا الكود لامرين مباشرين بالشراء والبيع
MOVING_AVERAGE
28-02-2013, 11:17 PM
ننتقل الي المؤشر الذي عملناه ونحاول تطبيق امر الشراء والبيع علي المؤشر
اولا نعيد شرح مكان الدخول
MOVING_AVERAGE
28-02-2013, 11:42 PM
سنعتمد علي اشارات المؤشر في الدخول
http://www.fx-arabia.com/vb/uploaded/8190_01362084047.jpg
والدخول يكون بعد شمعة ضهور السهم
MOVING_AVERAGE
28-02-2013, 11:46 PM
كل ما شرحناه عن الاكسبريت
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1263;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
سنستعمل هذا القالب الجاهز في اي اكسبريت مع اضافة في كل اكسبريت متطلبات اخري
MOVING_AVERAGE
28-02-2013, 11:55 PM
اولا نحتاج الي اشرات المؤشر الخارجي لكي يتم المتاجرة علي اساسها
لكي نستدعي اشرات المرشر الخارجي
نستعمل الدالة
iCustom
لمندات المؤشر الخارجي
وتكتب الدالة بالشكل التالي
double iCustom( string symbol, int timeframe, string name, ...
الخانتين الاوليتين تم شرحهم اكثر من مرة
الخانة 3
string name
نضع فيها اسم المؤشر الذي نريد استدعائه
Mohamed_Amr
28-02-2013, 11:57 PM
الله عليك متابع معاك لانى عندى مؤشر شبيه ونفسى فى اكسبريت ليه
من كل قلبى ربنا يفتح عليك ويزيدك
MOVING_AVERAGE
01-03-2013, 12:19 AM
اولا يجب انن نحدد الاشرات التي نريدها
نحن نريد سهم اما صاعد او نازل
اذن سنستدعي المؤشر للسهم الصاعد
ونستدعي المؤشر للسهم النازل
MOVING_AVERAGE
01-03-2013, 12:20 AM
وبطبيعة الحال الاستدعاء يجب ان نضعه في متغير اخر
MOVING_AVERAGE
01-03-2013, 12:31 AM
اسم المؤشر الذي برمجناه في الدورة هو
1 indicator
فيكون الاستدعاء كالتالي
double indigreen=iCustom(0,0,"1 indicator ",1,1);
double indired=iCustom(0,0,"1 indicator ",0,1);
1 للسهم الازرق
2 للسهم الاحمر
حيث في اعددات السهم في الالوان سنجد هذا الترقيم
ونكتبه بعد اسم المؤشر
وحتما الاستدعاء للشمعة السابقة لان السهم يضهر متاخر بشمعة
لمعرفة قيم الاسهم سنستخدم دالة الاضهار
Comment
ونكتب داخلها قيمة السهم لكي نعرف كيف نضع شروط الاضهار
بعد عمل الدالة Comment
تبين ان السهم لما يضهر تكون قيمته مقاربة للسعر
وعندما لا يضهر تكون قيمته كبيرة جدا
لذا سناخذ مثلا رقم متوسط نقارن بالنسبة له
هذا الرقم ليكن 4000
اذا قيمت السهم اصغر من 4000 معناها السهم ضهر
وفي هذه الحالة نعطي امر مباشر للدخول في صفقة
MOVING_AVERAGE
01-03-2013, 12:32 AM
الكود الكامل للاستدعاء سيكون
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1263;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double indigreen=iCustom(0,0,"1 indicator ",1,1);
double indired=iCustom(0,0,"1 indicator ",0,1);
//----
return(0);
}
//+------------------------------------------------------------------+
MOVING_AVERAGE
01-03-2013, 12:37 AM
اشرات الدخول للاوامر ستكون
if(indigreen<4000)
{
//امر شراء
}
if(indired<4000)
{
//امر بيع
}
لاكن لو نحلل قليلا هنا
سيقارن الاكسبريت الشمعة السابقة اذا وجد ضهور السهم سيفتح عقد
عند تحرك السعر سيعيد المقارنة ويفتح عقد اخر
اذا العقود التي سيفتحها ستكون كثيرة جدا
لتجنب هذه المشكلة نحدد له اقصي حد للمتاجرة
MOVING_AVERAGE
01-03-2013, 12:40 AM
نضع خارج الدالة start
متغير خارجي فيه اقصي حد للمتاجرة
مثلا انا اريد صفقة واحدة فقط
هنا اقصي حد للمتاجرة هو واحد
اذا
سنعمل التالي
extern int MaxTrades = 1;
وانا كتبتها في القالب الجاهز لكي لا نعيد كتابتها
MOVING_AVERAGE
01-03-2013, 12:47 AM
ساضيف شرط ان عدد الصفقات المفتوحة يكون اقل من اقصي حد للمتاجرة
ولكي نعرف عدد الصفقات المفتوحة
سنحتاج تعريف معتي الدالة
وكيف نكتبها
وكيف نستدعيها
وهي تحتاج تركيز عالي لفهمها
بالنسبة لنا حاليا سنضيفها و نشرح عملها لاكن لن نشرح كيف كتابتها لان الكتابة ليست غايتنا في هذا الاكسبريت
دالة حساب الصفقات هي الدالة التي تراجع الصفقات علي المنصة
اذا كانت وتعطينا عدد الصفقات المفتوحة
سواء اوامر مباشرة او اوامر معلقة
تكتب دالة حساب الصفقات خارج الدالة start
وفي اغلب الاحيان نكتبها اسفل الدالة start
وتكون كتابتها كالاتي
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
وعند اضافتها الي اكسبريتنا تصبح
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1263;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double indigreen=iCustom(0,0,"1 indicator ",1,1);
double indired=iCustom(0,0,"1 indicator ",0,1);
if(indigreen<4000)
{
//امر شراء
}
if(indired<4000)
{
//امر بيع
}
//----
return(0);
}
//+------------------------------------------------------------------+
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
MOVING_AVERAGE
01-03-2013, 12:51 AM
وعند اضافة شرط فتح اقصي صفقة سيكون
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1263;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double indigreen=iCustom(0,0,"1 indicator ",1,1);
double indired=iCustom(0,0,"1 indicator ",0,1);
if(orderstotal()<MaxTrades&&indigreen<4000)
{
//امر شراء
}
if(orderstotal()<MaxTrades&&indired<4000)
{
//امر بيع
}
//----
return(0);
}
//+------------------------------------------------------------------+
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
ببقي فقط اضافة اوامر البيع والشراء
انتضر مشاركاتكم ولا يهم ان كانت صحيحة او خاطئة المهم المشاركة للتعلم
shelilco30
03-03-2013, 06:45 PM
اخي الكريم موفينج كيف احدد الاعدادات يعني مثلاً هذا مؤشر عبارة عن قناة سعرية وعايز احدد للاكسبيرت الحد العلوي للقناة او الحد السفلي
http://www.fx-arabia.com/vb/uploaded/9204_11361893661.png (http://www.fx-arabia.com/vb)
وهذه هي اعداداته
http://www.fx-arabia.com/vb/uploaded/9204_11362323418.jpg (http://www.fx-arabia.com/vb)
فكيف افرق بين الحد العلوي للقناة والحد السفلي ..... ارجوا المساعدة
وهذا رابط تحميل المؤشر
http://www.fx-arabia.com/vb/uploaded/9204_11361901099.ex4
ولك جزيل الشكر
كيف تملاء هذه الخانات
http://www.fx-arabia.com/vb/uploaded/9204_11362323854.jpg (http://www.fx-arabia.com/vb)
ارجوا المساعدة
mimo2006
03-03-2013, 07:01 PM
مشكوووور اخي علي الموضوع :1 (105): (http://www.7rcat.com/games/browse.php?c=5)
MOVING_AVERAGE
03-03-2013, 09:44 PM
شباب هل الشرح مفهوم او غير مفهوم
عندما لا اري تفاعل اشك انني لم اوصل المعلومة كما يجب
farouk_cia
15-03-2013, 06:40 PM
شكرا ياباشا علي المجهود الرائع
MOVING_AVERAGE
15-03-2013, 07:27 PM
عمل اكسبريت متطور نوع ما لمؤشر RSI
سنضع فيه
الستوب لوز
التيك بروفيت
حجم العقد
اضافتا الي دالة ملاحقة الربح
مع الاخذ في الحسبان الدخول حسب اتجاه مؤشر ال zigzag
بحيث لو تشكلة قمة جديدة سندخل sell فقط
وان تشكل قاع جديد سندخل buy فقط
Mohamed_Amr
15-03-2013, 07:40 PM
متابعين معاك اخى مصطفى
عندى فكرة لعمل اكسبريت يعتمد على مؤشر rsi بشكل مختلف
وبالتوفيق حبيبى
MOVING_AVERAGE
15-03-2013, 10:09 PM
متابعين معاك اخى مصطفى
عندى فكرة لعمل اكسبريت يعتمد على مؤشر rsi بشكل مختلف
وبالتوفيق حبيبى
يمكن طرح افكارك ونضيفها للاكسبريت
MOVING_AVERAGE
15-03-2013, 10:11 PM
نبدء علي بركة الله بالقالب الجاهز التالي
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=2233;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
وقد شرحنا كل كتابة فيما سبق
MOVING_AVERAGE
15-03-2013, 10:22 PM
نضيف RSI للشمعة الحالية
double rsi=iRSI(0,0,periodRSI,appliedRSI,shift);
ونضيف هذه المتغيرات الخارجية لكي نتحكم في اعددات RSI
خارج الدالة start
extern int periodRSI=14;
للتحكم في دور
extern int appliedRSI=0;
للتحكم في التطبيق علي الاغلاقات او الافتتاحات ...اخ
extern int shift=0;
للتحكم في الشمعة نضع 0 للحالية و 1 للسابقة وهكذا
MOVING_AVERAGE
15-03-2013, 10:31 PM
اذا سيصبح الكود بعد اضافة rsi والمتغيرات الخارجية
extern int periodRSI=14;
extern int appliedRSI=0;
extern int shift=0;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=2233;
extern int MaxTrades = 1;
extern double Lots = 0.1;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double rsi=iRSI(0,0,periodRSI,appliedRSI,shift);
//----
return(0);
}
//+------------------------------------------------------------------+
MOVING_AVERAGE
15-03-2013, 10:37 PM
يجب الان اضافة مؤشر zigzag لكي نكمل الاكسبريت
للتذكرير هذه طريقة وضعتها بالصدفة ولم اتاجر عليها من قبل
والهدف منها هو تعليمي فقط
واذا اي احد له فكرت اكسبريت تعتمد علي rsi فليضعها وسيتم تنفيذها كمثال
سننتقل الي دورة المؤشرات لكي اعرف بعض الامور نحتاجها في بقية البرنامج
دورة تعلم البرمجة باحتراف (http://www.fx-arabia.com/vb/showthread.php?t=27491)
meto123123
22-03-2013, 12:32 AM
ربنا معاك يا اخى
ويارب يرزقك الجنة ويزيدك من علمه
yasser81
27-03-2013, 09:17 AM
هل انتهى الموضوع......... الله يعينك يا اخونا فوفينج........ بالنسبة لل rsi كيف نضيف المستوياتniveaux ......
imaddine
28-03-2013, 12:47 AM
مشكور استاذ موفنج على هذه الدروس بارك الله فيك
ولو تكرمت وكان عندك وقت تكمل الدورة لاني فعلا استفذت منها
imaddine
28-03-2013, 01:21 AM
الواجب في المرفقات
اكسبريت للموفنج او المؤشر الذي قمت بعمله من موضوع
http://fx-arabia.net/vb/showthread.php?t=27491
طبعا هو فيه اخطا ولو تكرمت شرح سببها لاني
لم اقدر على تصحيحها وهي انه يفتح 5 صفقات مباشرة
وانا وضعت دالة تحديد عدد الصفقات بصفقة واحدة فقط
ايضا انه يفتح بيع فقط ولا يغلق الصفقة لو لم تكن هناك
بروفت واستوب
تحياتي
MOVING_AVERAGE
28-03-2013, 01:43 PM
الواجب في المرفقات
اكسبريت للموفنج او المؤشر الذي قمت بعمله من موضوع
http://fx-arabia.net/vb/showthread.php?t=27491
طبعا هو فيه اخطا ولو تكرمت شرح سببها لاني
لم اقدر على تصحيحها وهي انه يفتح 5 صفقات مباشرة
وانا وضعت دالة تحديد عدد الصفقات بصفقة واحدة فقط
ايضا انه يفتح بيع فقط ولا يغلق الصفقة لو لم تكن هناك
بروفت واستوب
تحياتي
ماشاء الله عليك
حاول تضع الكود فقط هنا علي الصفحة وسنناقش الامور الخاطئة ان شاء الله
imaddine
28-03-2013, 04:32 PM
ماشاء الله عليك
حاول تضع الكود فقط هنا علي الصفحة وسنناقش الامور الخاطئة ان شاء الله
هذا هو الكود استاذ موفنج
extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MaxTrades = 1;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
int magic=0 ;
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double indigreen=iCustom(0,0,"imad ",1,1);
double indired=iCustom(0,0,"imad ",0,1);
if(orderstotal()<MaxTrades&&indigreen<4000)
if(orderstotal()<MaxTrades&&indired<4000)
double TP;
double SL;
TP=Ask+TakeProfit*point;
SL=Ask-StopLoss*point;
TP=Bid-TakeProfit*point;
SL=Bid+StopLoss*point;
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,Lots,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
//----
//----
return(0);
}
//+------------------------------------------------------------------+
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
MOVING_AVERAGE
28-03-2013, 04:48 PM
هذا هو الكود الذي استخدمته
سننتقل من كلمة الي كلمة لكي نكتشف الاخضاء الكثيرة التي وقعت فيها
MOVING_AVERAGE
28-03-2013, 04:50 PM
extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MaxTrades = 1;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
int magic=0 ;
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
في هذا الجزء كل شئ جيد
وبالنسبة لهذه الكتابة
int magic=0 ;
ماهو هدفها ؟؟؟
سنتابع ونعرف
MOVING_AVERAGE
28-03-2013, 04:54 PM
بالنسبة للدوال خارج الدالة start
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
دالة تحسب عدد الصفقات التي فتحها الاكسبريت وهي صحيحة
MOVING_AVERAGE
28-03-2013, 04:58 PM
ندخل الي الدالة start
مع التذكير ان هذه الدالة تعيد ما كتب فيها كل تغير في السعر
MOVING_AVERAGE
28-03-2013, 05:00 PM
هنا عرفنا متغيرين واسندنا الهم قيم المؤشر الخارجي الذي اسمه imad
ياريت ترفق المؤشر الخارجي لكي نفحصه ايضا
double indigreen=iCustom(0,0,"imad ",1,1);
double indired=iCustom(0,0,"imad ",0,1);
imaddine
28-03-2013, 05:02 PM
هنا عرفنا متغيرين واسندنا الهم قيم المؤشر الخارجي الذي اسمه imad
ياريت ترفق المؤشر الخارجي لكي نفحصه ايضا
double indigreen=iCustom(0,0,"imad ",1,1);
double indired=iCustom(0,0,"imad ",0,1);
هذا هو الكود استاذ موفنج
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
double CrossUp1[];
double CrossDown1[];
double FastMA[];
double SlowMA[];
int width=EMPTY;
color clr=CLR_NONE;
extern int ExtPeriodFastMA = 8;
extern int ExtPeriodSlowMA = 14;
extern int ExtModeFastMA = 0;
extern int ExtModeSlowMA = 0;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;
extern bool showMA=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle( 0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);
SetIndexStyle( 1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);
SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i, counter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;
for(i =0 ; i<x ; i++)
{
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}
Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
double fasterEMAprevious=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+1 );
double fasterEMAprevious1=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+2 );
double slowerEMAprevious =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+1 );
double slowerEMAprevious1 =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+2 );
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAprevious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1]+Range*0.5;
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1]-Range*0.5;
}
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
MOVING_AVERAGE
28-03-2013, 05:18 PM
هذا هو الكود استاذ موفنج
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
double CrossUp1[];
double CrossDown1[];
double FastMA[];
double SlowMA[];
int width=EMPTY;
color clr=CLR_NONE;
extern int ExtPeriodFastMA = 8;
extern int ExtPeriodSlowMA = 14;
extern int ExtModeFastMA = 0;
extern int ExtModeSlowMA = 0;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;
extern bool showMA=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle( 0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);
SetIndexStyle( 1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);
SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i, counter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;
for(i =0 ; i<x ; i++)
{
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}
Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
double fasterEMAprevious=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+1 );
double fasterEMAprevious1=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+2 );
double slowerEMAprevious =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+1 );
double slowerEMAprevious1 =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+2 );
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAprevious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1]+Range*0.5;
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1]-Range*0.5;
}
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
تمام هذا نفس المؤشر الذي شرحناه
MOVING_AVERAGE
28-03-2013, 05:21 PM
double indigreen=iCustom(0,0,"imad ",1,1);
هذا يرمز للسهم الازرق في الشمعة السابقة
double indired=iCustom(0,0,"imad ",0,1);
وهذا يرمز للسهم الاحمر في الشمعة السابقة
و نداء المؤشر صحيح اذا كان اسم المؤشر الذي واضعه مع المؤشرات imad
MOVING_AVERAGE
28-03-2013, 05:22 PM
يعني الفكرة انك تشتري او تبيع بضهور احد السهمين
الا هنا كل شئ صحيح
MOVING_AVERAGE
28-03-2013, 05:24 PM
ننتقل الي السطر الموالي
if(orderstotal()<MaxTrades&&indigreen<4000)
if(orderstotal()<MaxTrades&&indired<4000)
وضعنا شرط ضهور السهم لاكن لم نضع بعده اي عمل يقوم به الاكسبريت يعني هنا هذه الكتابة غير صحيحة نحذفها تماما
MOVING_AVERAGE
28-03-2013, 05:26 PM
هنا ايضا هذه الكتابة غير صحيحة
double TP;
double SL;
TP=Ask+TakeProfit*point;
SL=Ask-StopLoss*point;
TP=Bid-TakeProfit*point;
SL=Bid+StopLoss*point;
لماذا الكتابه غير صحيحة
سنشرحها خطوة بخطوة
MOVING_AVERAGE
28-03-2013, 05:34 PM
double TP;
هنا التعريف صحيح
double SL;
هنا التعريف صحيح
المشكلة في التالي
TP=Ask+TakeProfit*point;
جعلنا قيمة TP تساوي السعر الحالي Ask واضفنا له عدد النقاط التي نريدها
SL=Ask-StopLoss*point;
جعلنا قيمة SL تساوي السعر الحالي Ask وانقصنا منه عدد النقاط التي نريدها
هذه الكتابة صحيحة فقط عند تنفيذ اوامر buy اولا
وعند تنفيذ اوامر sell فهي غير صحيحة
TP=Bid-TakeProfit*point;
هنا يقوم الاكسبريت بمسح القيمة السابقة ويضع قيمة جديدة وهي السعر الحالي Bid ناقص عدد النقاط
SL=Bid+StopLoss*point;
نفس الشئ يقوم الاكسبريت بمسح الاسناد الاول ووضع اسناد اخر
وهنا تداخل في وضع الاهداف والستوب لوز
بالمختصر نمسح هذه الكتابة ايضا ونرتب الكتابة اكثر
MOVING_AVERAGE
28-03-2013, 05:37 PM
نفس الامر بنسبة لهذه الكتابات
هي غير مرتبه وغير دقيقة
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,Lots,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
MOVING_AVERAGE
28-03-2013, 05:39 PM
سنعيد كتابة ما سبق بترتيب اكثر
MOVING_AVERAGE
28-03-2013, 05:41 PM
اولا نعرف المتغير الذي سنضع فيه الستوب لوز والتيك بروفيت
double TP;
double SL;
MOVING_AVERAGE
28-03-2013, 05:46 PM
نضع شرط ضهور السهم الازرق مع فتح صفقة واحدة فقط
ونضع حاضنة لتنفيذ الامر الذي نريده
كذالك شرط ضهور السهم الاحمر وحاضنة للامر الذي نريد تنفيذه
if(orderstotal()<MaxTrades&&indigreen<4000)
{
}
if(orderstotal()<MaxTrades&&indired<4000)
{
}
مع تاكيد اننا نريد ان نقوم بعملية شراء عند ضهور سهم ازرق
وبيع عند ضهور سهم احمر
MOVING_AVERAGE
28-03-2013, 05:53 PM
وكما شرحنا من قبل ان في حالة الشراء
فان الامر سيتنفذ علي Ask
وهنا الربح بالنقاط يسمي TakeProfit
اذن الربح الذي نريد اغلاق الصفقة لما يصله السعر
هو سعر الدخول + عدد نقاط الربح
ونفس الامر بالنسبة للخسارة
اذا سيصبح الكود عند ضهور سهم ازرق ولاننا سندخل عملية Buy
double TP;
double SL;
if(orderstotal()<MaxTrades&&indigreen<4000)
{
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue);
}
if(orderstotal()<MaxTrades&&indired<4000)
{
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
}
وهذا هو الكود الكلي برتيب اكثر
imaddine
28-03-2013, 05:58 PM
بارك الله فيك استاذي العزيز موفنج
imaddine
31-03-2013, 03:09 AM
استاذ موفنج والله اتعبتك معاي لو ممكن مساعدة بسيطة
حول الاكسبيرت الذي عملناه في الدورة فقد قمت ببعض التعديلات
عليه مثل اضافة التريلنج استوب وكذلك اغلاق الصفقة لما تكون اشارة
معاكسة لكن للاسف لم تتفعل اي من هذه الدوال في الاكسبيرت
بل اصبح يفتح 5 صفقات معا بدل صفقة واحدة رغم اني حددت
عدد الصفقات المفتوحة بصفقة واحدة فقط فارجو ان تشرح لي
الاخطاء التي وقعت فيها لان الاكسبيرت للتعلم فقط لا اكثر
وبارك الله فيك وجعله في ميزان حسناتك
extern double Lots = 0.1;
double point;
int digits,Q;
extern int MaxTrades = 1;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int TrailingStop=0;
extern int TrailingStep=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
}
int magic=0 ;
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment("");
if(TrailingStop>0)MoveTrailingStop();
//////////////////////////////////////////////////
double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
//////////////////////////////////////////////////
double TP,SL;
if(indigreen<4000) {
if(orderstotal()<MaxTrades)
{CloseSellOrders();}
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
//////////////////////////////////////////////////
if(indired<4000){
if(orderstotal()<MaxTrades)
{CloseBuyOrders();}
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
}
//+------------------------------------------------------------------+
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
//////////////////////////////////////////////////
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
if (OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
//////////////////////////////////////////////////
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*poin t,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))| |(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
}
}
}
}
}
}
MOVING_AVERAGE
31-03-2013, 02:47 PM
استاذ موفنج والله اتعبتك معاي لو ممكن مساعدة بسيطة
حول الاكسبيرت الذي عملناه في الدورة فقد قمت ببعض التعديلات
عليه مثل اضافة التريلنج استوب وكذلك اغلاق الصفقة لما تكون اشارة
معاكسة لكن للاسف لم تتفعل اي من هذه الدوال في الاكسبيرت
بل اصبح يفتح 5 صفقات معا بدل صفقة واحدة رغم اني حددت
عدد الصفقات المفتوحة بصفقة واحدة فقط فارجو ان تشرح لي
الاخطاء التي وقعت فيها لان الاكسبيرت للتعلم فقط لا اكثر
وبارك الله فيك وجعله في ميزان حسناتك
extern double Lots = 0.1;
double point;
int digits,Q;
extern int MaxTrades = 1;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int TrailingStop=0;
extern int TrailingStep=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
}
int magic=0 ;
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment("");
if(TrailingStop>0)MoveTrailingStop();
//////////////////////////////////////////////////
double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
//////////////////////////////////////////////////
double TP,SL;
if(indigreen<4000) {
if(orderstotal()<MaxTrades)
{CloseSellOrders();}
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
//////////////////////////////////////////////////
if(indired<4000){
if(orderstotal()<MaxTrades)
{CloseBuyOrders();}
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
}
//+------------------------------------------------------------------+
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
//////////////////////////////////////////////////
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
if (OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
//////////////////////////////////////////////////
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*poin t,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))| |(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
}
}
}
}
}
}
اول ملاحضة
لاحظ انك حذفت return
من الدالة start
وهي معرفة علي انها دالة من نوع int يعني ترجع رقم وغير ممكن لا ترجع شئ
imaddine
31-03-2013, 02:50 PM
اول ملاحضة
لاحظ انك حذفت return
من الدالة start
وهي معرفة علي انها دالة من نوع int يعني ترجع رقم وغير ممكن لا ترجع شئ
فعلا لم انتبه لها
ربما حذفتها عند عملية التعديل
MOVING_AVERAGE
31-03-2013, 02:55 PM
فعلا لم انتبه لها
ربما حذفتها عند عملية التعديل
2- حاول ربط الشروط مع بعض في دلة شرطية واحدة باستعمال && ولا تجزء الشروط
imaddine
31-03-2013, 03:03 PM
2- حاول ربط الشروط مع بعض في دلة شرطية واحدة باستعمال && ولا تجزء الشروط
ساحاول تجميع كل الشروط في شرط واحد فقط
بارك الله فيك استاذ موفنج
MOVING_AVERAGE
31-03-2013, 03:16 PM
ساحاول تجميع كل الشروط في شرط واحد فقط
بارك الله فيك استاذ موفنج
فيه شئ غير صحيح في برنامجك اخي
هو غلق الصفقات العكسية
ماهي شروط غلق الصفقات العكسية ؟؟؟؟؟
MOVING_AVERAGE
31-03-2013, 03:33 PM
لغلق الصفقات العكسية يشترط فقط ضهور السهم المعاكس
;غير شرط ان يكون عدد الصفقات اقل من mx trade
اذت لغلق الصفقات ضع الشرط منفصل علي شرط فتح الصفقات مع تغير الشروط
انا ممكن اضع لك التعديل النهائي لاكن اردت مناقشة الاخضاء لكي يستفيد الجميع عند مراجعة الموضوع
imaddine
31-03-2013, 03:33 PM
فيه شئ غير صحيح في برنامجك اخي
هو غلق الصفقات العكسية
ماهي شروط غلق الصفقات العكسية ؟؟؟؟؟
بالنسبة للاغلاق الصفقات العكسية
هو صراحة قمت بوضع كود وجته في احد الاكسبيرتات
imaddine
31-03-2013, 03:36 PM
لغلق الصفقات العكسية يشترط فقط ضهور السهم المعاكس
;غير شرط ان يكون عدد الصفقات اقل من mx trade
اذت لغلق الصفقات ضع الشرط منفصل علي شرط فتح الصفقات مع تغير الشروط
انا ممكن اضع لك التعديل النهائي لاكن اردت مناقشة الاخضاء لكي يستفيد الجميع عند مراجعة الموضوع
والله ان كان الامر ممكن ولا يسبب لك ازعاج لو يكون بطريقة
المناقشة او بنفس طريقة التي شرحت بها الدروس السابقة
يكون افضل
لاني كما اخبرتك انا اتعلم فقط اي اني لم ابرمج هذا الاكسبيرت
للمتاجرة عليه من الاساس
MOVING_AVERAGE
31-03-2013, 03:57 PM
والله ان كان الامر ممكن ولا يسبب لك ازعاج لو يكون بطريقة
المناقشة او بنفس طريقة التي شرحت بها الدروس السابقة
يكون افضل
لاني كما اخبرتك انا اتعلم فقط اي اني لم ابرمج هذا الاكسبيرت
للمتاجرة عليه من الاساس
اهم شئ في البرمجة ان تفهم ماذا تريد عمله
البرمجة معرفة كيفية وضع الاوامر وتعلم الاساسيات
وهذا مبدء العمل فقط
لاكن ليكون عملك صحيح يجب ان تعرف ماذا تبرمج اساسا
الشروط من اهم الامور التي يجب معرفتها لكي نفهم عمل البرنامج
نعود الي شروط الدخول في الصفقة
نحن اشترطنا ضهور سهم في الشمعة السابقة
لكي يدخل في عملية buy او sell
لاكن لو وضعنا هذا الامر فقط
فالاكسبريت يقارن الشرط كل تحرك للسعر
وطالما الشرط صحيح سيدخل صفقة
مثلا في الشمعة السابقة ضهر سهم يشير الي buy
سيدخل اول صفقة buy
تحرك السعر بتك واحد في نفس الشمعة سيعيد مقارنة الشرط
ان وجده صحيح سيعيد الدخول
ولكي نتفادي الدخول الكثير وضعنا شرط اخر ان يكون عدد الصفقات المفتوحة اصغر من اقصي حد
نريد المتاجرة به
اقصي حد نريد المتاجرة به وضعناه متغير خارجي نحن نحدده
عدد الصفقات المفتوحة نحصل عليه بواسطة الدالة orderstotal()
اذا سيصبح الشرط كالتالي
اذا ضهر سهم في الشمعة السابقة وكانت عدد الصفقات المفتوحة اقل من اقصي حد للصفقات افتح امر
if(indigreen<4000&&orderstotal()<MaxTrades)
ماذا سيعمل الاكسبريت
سيقارن ان ضهر سهم في الشمعة السابقة
تحقق هذا الامر جيد
سيقارن ايضا عدد الصفقات المفتوحة
وعدد الصفقات المفتوحة الي الان 0 وهي اصغر من اقصي حد للمتاجرة الذي = 1
سيفتح صفقة
يتحرك السعر سيعيد المقارنة
هل ضهر السهم في الشمعة السابقة
تحقق هذا الامر جيد
سيقارن ايضا عدد الصفقات المفتوحة
وعدد الصفقات المفتوحة الي الان 1 وهي تساوي اقصي حد للمتاجرة الذي = 1
اذن لا يفتح صفقة
ويستمر الاكسبريت هكذا
ناتي الان لاغلاق الصفقات
نريد اغلاق صفقة لما تضهر اشارة عكسية فقط
لا يهمنا كم عدد الصفقات
اذا الشرط سيكون كالتالي
اذا ضهر سهم نازل اخرج من صفقات buy نترجمه
if(indired<4000)
{CloseBuyOrders();}
اي شئ غير مفهوم لا تتردد في طرحه اخي
imaddine
31-03-2013, 04:05 PM
اهم شئ في البرمجة ان تفهم ماذا تريد عمله
البرمجة معرفة كيفية وضع الاوامر وتعلم الاساسيات
وهذا مبدء العمل فقط
لاكن ليكون عملك صحيح يجب ان تعرف ماذا تبرمج اساسا
الشروط من اهم الامور التي يجب معرفتها لكي نفهم عمل البرنامج
نعود الي شروط الدخول في الصفقة
نحن اشترطنا ضهور سهم في الشمعة السابقة
لكي يدخل في عملية buy او sell
لاكن لو وضعنا هذا الامر فقط
فالاكسبريت يقارن الشرط كل تحرك للسعر
وطالما الشرط صحيح سيدخل صفقة
مثلا في الشمعة السابقة ضهر سهم يشير الي buy
سيدخل اول صفقة buy
تحرك السعر بتك واحد في نفس الشمعة سيعيد مقارنة الشرط
ان وجده صحيح سيعيد الدخول
ولكي نتفادي الدخول الكثير وضعنا شرط اخر ان يكون عدد الصفقات المفتوحة اصغر من اقصي حد
نريد المتاجرة به
اقصي حد نريد المتاجرة به وضعناه متغير خارجي نحن نحدده
عدد الصفقات المفتوحة نحصل عليه بواسطة الدالة orderstotal()
اذا سيصبح الشرط كالتالي
اذا ضهر سهم في الشمعة السابقة وكانت عدد الصفقات المفتوحة اقل من اقصي حد للصفقات افتح امر
if(indigreen<4000&&orderstotal()<MaxTrades)
ماذا سيعمل الاكسبريت
سيقارن ان ضهر سهم في الشمعة السابقة
تحقق هذا الامر جيد
سيقارن ايضا عدد الصفقات المفتوحة
وعدد الصفقات المفتوحة الي الان 0 وهي اصغر من اقصي حد للمتاجرة الذي = 1
سيفتح صفقة
يتحرك السعر سيعيد المقارنة
هل ضهر السهم في الشمعة السابقة
تحقق هذا الامر جيد
سيقارن ايضا عدد الصفقات المفتوحة
وعدد الصفقات المفتوحة الي الان 1 وهي تساوي اقصي حد للمتاجرة الذي = 1
اذن لا يفتح صفقة
ويستمر الاكسبريت هكذا
ناتي الان لاغلاق الصفقات
نريد اغلاق صفقة لما تضهر اشارة عكسية فقط
لا يهمنا كم عدد الصفقات
اذا الشرط سيكون كالتالي
اذا ضهر سهم نازل اخرج من صفقات buy نترجمه
if(indired<4000)
{CloseBuyOrders();}
اي شئ غير مفهوم لا تتردد في طرحه اخي
ان شاء الله استاذ موفنج فكما تعلم انا في اول الطريق
لذلك فاعمد الى البحث على الاكواد واعادة تحليلها
لان وضع امر لدالة امر جد صعب في بداية الطريق
متابع معاك يا غالي
ayoob
31-03-2013, 08:34 PM
الفرق الجوهري يكمن في قيمة النقطة المحسوبة
وقيمة النقطة علي حسب المنصة
اولا قيمة النقطة علي المنصة هي اصغر قيمة بعد الفاصلة
يعني في منصة 5 ارقام لو يكون عندنا هذا العدد
1.32354
قيمة النقطة حسب المنصة هي اصغر قيمة بعد الفاصلة
يعني 0.00001
اما قيمة النقطة التي نتاجر عليها هي 0.0001
وهنا يوجد الاختلاف بين منصة 4 و 5 ارقام
ولكي نتجاوز هذا الاختلاف نضيف تعريف النقطة كما يلي
في دالة init
نضيف الكتابة التالية وهذه الكتابة لتحديد قيمة النقطة في منضة 4 و 5 ارقام
وعلي كل الازواج
لان ازواج الين فيها اما رقمين او 3 فقط حسب المنصة
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
ونصبح نتعامل في كود الاكسبريت بدلالة point ب p الصغير وليس P كبيرة
ياريت اخي مصطفي يتم شرح اكتر عن هده الاكواد و كيفية كتابتة
imaddine
31-03-2013, 10:27 PM
ياريت اخي مصطفي يتم شرح اكتر عن هده الاكواد و كيفية كتابتة
ان كان على الكود المرفق فمثلما قال الاستاذ موفنج
هو كود لتعامل مع المنصات ذات الاربع ارقام والخمس ارقام
وكذلك لتعامل مع ازواج الين التي تكون في منصة اما بثلاث
ارقام او رقمين اي لن يجد الاكسبيرت اي مشكلة على اي منصة
وممكن نقل الكود ووضعه كما هو
اي مثل هذه الاكواد هي تكون كقالب لاي اكسبريت تريد برمجته
MOVING_AVERAGE
31-03-2013, 11:16 PM
ياريت اخي مصطفي يتم شرح اكتر عن هده الاكواد و كيفية كتابتة
في اللغة الاساسية ل MQL توجد كتابة Point تعطي لنا اصغر رقم يمكن الحصول عليه من السعر
مثلا لو لدينا السعر 1.3625487021548
اصغر رقم يمكن الحصول عليه هو
0.0000000000001
واصغر رقم يسمي النقطة
في منصة 5 ارقام اصغر رقم هو 0.00001
في منصة 4 ارقام اصغر رقم هو 0.0001
وكما نعلم ان قيمة النقطة نستخدمها في تحديد المسافة التي نريد اخذ الربح عندها او اغلاق الصفقة علي خسارة عندها
لو ناخذ قيمة النقطة الافتراضية الموجودة اصلا في MQL وهي Point ب حرف P الكبير
ونريد اخذ الربح بعد 10 نقاط
وكما تعلم اخي ان الربح عند 10 نقاط لا يختلف حتي لو اختلفة المنصات 4 او 5
يعني
لو دخلنا عقد من منصة 4 ارقام ومنصة 5 ارقام من نفس السعر
الربح بعد 10 نقاط سيكون نفسه ؟؟؟
لو نستعمل Point في الحساب فلن يكون الربح نفسه
لذا عمل متغير اخر ووضعنا فيه قيمة النقطة مهما كانت المنصة
imaddine
01-04-2013, 12:41 AM
اخ موفنج اعلم اني اتعبتك معي لكن رغم اني قمت بحذف
دالة التريلنج لكن لم تحل المشكلة بقي يفتح 5 صفقات
مع كل اشارة ولم افهم لما 5 صفقات رغم اني غيرة الدالة
وجعلتها تفتح صفقة واحدة فقط دون اي متغير خارجي يتحكم
في عدد الصفقات وايضا يقوم بتفعيل مع اول اشارة
ولا يغلق الصفقة رغم اني وضعت دالة اغلاق الصفقة في
حال وجود اشارة عكسية
extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
}
int magic=0 ;
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment(""+"\n"+""+"\n"+"/");
//////////////////////////////////////////////////
double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
دالة استدعاء المؤشر
//////////////////////////////////////////////////
double TP,SL;
if(indigreen<5000&&LastOrder()>0&&orderstotal()<=1) {
{CloseSellOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
//////////////////////////////////////////////////
if(indired<5000&&LastOrder()!=1&&orderstotal()<=1){
{CloseBuyOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
return(0);
}
//+------------------------------------------------------------------+
دالة اغلاق صفقة الشراء في حال ظهور اشارة معاكسة
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
//////////////////////////////////////////////////
دالة اغلاق صفقة البيع في حال ظهور اشارة معاكسة
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
if (OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
دالة لجعل الاكسبيرت يفتح الصفقات بتسلسل
اي لا يفتح صفقتين متتاليتين بيع او شراء
int LastOrder(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderType());
}
}
return(2);
}
imaddine
01-04-2013, 12:51 AM
اخ موفنج اعلم اني اتعبتك معي لكن رغم اني قمت بحذف
دالة التريلنج لكن لم تحل المشكلة بقي يفتح 5 صفقات
مع كل اشارة ولم افهم لما 5 صفقات رغم اني غيرة الدالة
وجعلتها تفتح صفقة واحدة فقط دون اي متغير خارجي يتحكم
في عدد الصفقات وايضا يقوم بتفعيل مع اول اشارة
ولا يغلق الصفقة رغم اني وضعت دالة اغلاق الصفقة في
حال وجود اشارة عكسية
extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
}
int magic=0 ;
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment(""+"\n"+""+"\n"+"/");
//////////////////////////////////////////////////
double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
دالة استدعاء المؤشر
//////////////////////////////////////////////////
double TP,SL;
if(indigreen<5000&&LastOrder()>0&&orderstotal()<=1) {
{CloseSellOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
//////////////////////////////////////////////////
if(indired<5000&&LastOrder()!=1&&orderstotal()<=1){
{CloseBuyOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
return(0);
}
//+------------------------------------------------------------------+
دالة اغلاق صفقة الشراء في حال ظهور اشارة معاكسة
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
//////////////////////////////////////////////////
دالة اغلاق صفقة البيع في حال ظهور اشارة معاكسة
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
if (OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
دالة لجعل الاكسبيرت يفتح الصفقات بتسلسل
اي لا يفتح صفقتين متتاليتين بيع او شراء
int LastOrder(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderType());
}
}
return(2);
}
استاذ موفنج لقد وجدت الخطا في عدد الصفقات المفتوحة وهو في اكبر من اول يساوي
[PHP] if(indired<5000&&LastOrder()!=1&&orderstotal()<=1){
الخطا كان في <=
والكتابة الصحيحة هي
if(indired<5000&&LastOrder()!=1&&orderstotal()<1){
بقي خطا واحد وهو في اغلاق عند الاشارة العكسية
imaddine
01-04-2013, 06:56 PM
استاذ موفنج كيف الحال
والله لم افهم سبب الخطا لحد الساعة فكل دوال في مكانها
والاكسبيرت لا يعطي اي خطا لكن رغم ذلك فدالة اغلاق الصفقات
العكسية لم تفعل بحيث لو وضعته على الباك تيست يقوم
الاكسبيرت بفتح صفقة اول ما يظهر المؤشر لكن لا يغلق الصفقة
يتركها مفتوحة
imaddine
04-04-2013, 03:46 PM
استاذي موفنج كيف الحال
الحمد لله قمت ببرمجة اكسبيرت ونجحة فيه بحيث قمت بعمل
التريلنج وايضا خاصية اغلاق الصفقات عند الاشارة المعاكسة
وايضا قمت ببرمجة اكسبيرت لمؤشر اخر
لكن بينما كنت اريد مساعدة احد الاخوة صادفتني مشكلة
وهو انه قام بطلب اكسبيرت لاحد المؤشرات يقوم على خطوط
تشبه الدعوم والمقاومات فلما اردت العمل على المؤشر وجدت
انه لا توجد فيه اندكسات لتعريفها في الاكسبيرت ولم استطع
تعريف الخطوط وايضا دالة فتح صفقة بمجرد لمس السعر
لاحد الخطوط
http://www.fx-arabia.com/vb/uploaded/12839_01365079484.png
اعلم انك مشغول كثيرا فلو تكرمت وكان عندك وقت
لشرح طريقة عمل اكسبيرت لهذا النوع من المؤشرات
والا فارفق لي اي مؤشر واكسبيرت له نفس الفكرة
لمحاولة دراسة دواله
وبارك الله فيك
MOVING_AVERAGE
04-04-2013, 05:35 PM
استاذي موفنج كيف الحال
الحمد لله قمت ببرمجة اكسبيرت ونجحة فيه بحيث قمت بعمل
التريلنج وايضا خاصية اغلاق الصفقات عند الاشارة المعاكسة
وايضا قمت ببرمجة اكسبيرت لمؤشر اخر
لكن بينما كنت اريد مساعدة احد الاخوة صادفتني مشكلة
وهو انه قام بطلب اكسبيرت لاحد المؤشرات يقوم على خطوط
تشبه الدعوم والمقاومات فلما اردت العمل على المؤشر وجدت
انه لا توجد فيه اندكسات لتعريفها في الاكسبيرت ولم استطع
تعريف الخطوط وايضا دالة فتح صفقة بمجرد لمس السعر
لاحد الخطوط
http://www.fx-arabia.com/vb/uploaded/12839_01365079484.png
اعلم انك مشغول كثيرا فلو تكرمت وكان عندك وقت
لشرح طريقة عمل اكسبيرت لهذا النوع من المؤشرات
والا فارفق لي اي مؤشر واكسبيرت له نفس الفكرة
لمحاولة دراسة دواله
وبارك الله فيك
ان كانت الخطوط مرسومة بواسطة دالة الرسم CreateObject
فتحتاج لعمل دالة خارجية تبحث لك عن اخر القيم للخط
وان كانت الخطوط مرسومة بواسطة المصفوفات والكائنات الرسومية
تحتاج فقط لاستدعائها استدعاء الالوان الخارجية في اعددات المؤشر
ان شاء الله ساضع مثالين عن الطريقتين
imaddine
04-04-2013, 10:34 PM
ان كانت الخطوط مرسومة بواسطة دالة الرسم CreateObject
فتحتاج لعمل دالة خارجية تبحث لك عن اخر القيم للخط
وان كانت الخطوط مرسومة بواسطة المصفوفات والكائنات الرسومية
تحتاج فقط لاستدعائها استدعاء الالوان الخارجية في اعددات المؤشر
ان شاء الله ساضع مثالين عن الطريقتين
بالفعل الاستاذ موفنج كنت قد تعلمت على المؤشرات
التي توجد الرسوم فيها في الندكسات بحيث كل ما يتطلبه
الامر هو استدعاء الرسم او الكائن من خلال اللون المعرف
لكن في المثال المرفق لم استطع ان ابرمج الاكسبيرت حاول
لمدة يومين لكن للاسف لم استطع
بارك الله فيك وفي انتضارك
maryocairo
05-04-2013, 07:32 AM
هية كدا الدورة خلصت شكل الموضوع جامد وهبتدى بأول صفحة شكرا لموفينج عل مجهوده
maryocairo
05-04-2013, 07:38 AM
وهية دى الدورة ال 2 ياريت لينك للدورة الاولى وشكرا تانى لموفينج
MOVING_AVERAGE
05-04-2013, 12:48 PM
هية كدا الدورة خلصت شكل الموضوع جامد وهبتدى بأول صفحة شكرا لموفينج عل مجهوده
بارك الله فيك
الدورة لم تنتهي
MOVING_AVERAGE
05-04-2013, 12:50 PM
وهية دى الدورة ال 2 ياريت لينك للدورة الاولى وشكرا تانى لموفينج
وهذا لينك الدورة الاولي لبرمجت المؤشرات وهي ايضا لم تنتهي
دورة تعلم البرمجة باحتراف (http://fx-arabia.com/vb/showthread.php?t=27491)
maryocairo
07-04-2013, 05:12 PM
وهذا لينك الدورة الاولي لبرمجت المؤشرات وهي ايضا لم تنتهي
دورة تعلم البرمجة باحتراف (http://fx-arabia.com/vb/showthread.php?t=27491)
شكرا ليكى اخ موفينج وربنا يعينك زى ما بتساعدنا
maryocairo
07-04-2013, 05:22 PM
وهذا لينك الدورة الاولي لبرمجت المؤشرات وهي ايضا لم تنتهي
دورة تعلم البرمجة باحتراف (http://fx-arabia.com/vb/showthread.php?t=27491)
شكرا ليكى اخ موفينج وربنا يعينك زى ما بتساعدنا
م. عبدالرحمن وردة
13-04-2013, 08:06 PM
السلام عليكم و رحمة الله و بركاته.
أخي "موفنج أفرج" بارك الله فيك و في والديك وجزاكم الله خير الجزاء.
*************************
عاوز استفسر استفسار صغير :
أزاي في البرنامج اقدر اعرف انا خسرت في الصفقه اللى فاتت او كسبت و ازاي اعرف اللى باقي من الرصيد.
علشان مثلا لو عاوز البرنامج يقف لو خسرت 10 مرات مثلا او وصل الرصيد ل 50 دولاي مثلا.
و شكرا.
ayoob
14-04-2013, 09:19 AM
السلام عليكم حاولت ابرمج اكسبيرات لي مؤشر RIS وشروط الشراء والبيع هي قطع خط 50 في البيع و الشراء ولكن عندي مشكلة في الجورنال في الامر OrderSend
الكود
extern int StopLoss=250;
extern int TakeProfit=250;
extern double Lot=0.1;
extern int Magic=15000;
int point;
int digits;
int Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Ris1,Ris2;
double SL,TP;
Ris1=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,1);
Ris2=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,2);
if(Ris1>50&&Ris2<50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,SL,TP,"EA",Magic,0,Green);
}
if(Ris1<50&&Ris2>50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,SL,TP,"EA",Magic,0,Red);
}
}
return(0);
علما عند مسح كود تعريف الهدف والاستوب لوس وجعل الاستوب والهدف في الدلة OrderSend يشتغل الاكسبيرات بدون مشاكل مثال علي الكود
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask+250*Point, Ask-250*Point,"EA",Magic,0,Green);
:1 (88):
ayoob
14-04-2013, 09:22 AM
صورة من الخطا في الجورنال
http://www.fx-arabia.com/vb/uploaded/8360_11365920515.png
ayoob
15-04-2013, 02:49 AM
:1 (104)::1 (88):
ayoob
15-04-2013, 10:57 PM
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات
ayoob
16-04-2013, 01:49 AM
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات
وهناك مشكلة اخري يفتح صفقات علي الباك تست عادي ولكن في الديمو لا يفتح بيعطي تنبية فقط؟؟؟:1 (88):
MOVING_AVERAGE
16-04-2013, 11:31 AM
السلام عليكم حاولت ابرمج اكسبيرات لي مؤشر RIS وشروط الشراء والبيع هي قطع خط 50 في البيع و الشراء ولكن عندي مشكلة في الجورنال في الامر OrderSend
الكود
extern int StopLoss=250;
extern int TakeProfit=250;
extern double Lot=0.1;
extern int Magic=15000;
int point;
int digits;
int Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Ris1,Ris2;
double SL,TP;
Ris1=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,1);
Ris2=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,2);
if(Ris1>50&&Ris2<50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,SL,TP,"EA",Magic,0,Green);
}
if(Ris1<50&&Ris2>50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,SL,TP,"EA",Magic,0,Red);
}
}
return(0);علما عند مسح كود تعريف الهدف والاستوب لوس وجعل الاستوب والهدف في الدلة OrderSend يشتغل الاكسبيرات بدون مشاكل مثال علي الكود
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask+250*Point, Ask-250*Point,"EA",Magic,0,Green);:1 (88):
لان المنصة التي تشتغل عليها منصة ecn
لا تقبل انزال اوامر مع تحديد الهدف والخسارة مسبقا
الحل انك تنزل الامر بدون هدف ولا وقف خسارة
ثم تغير الهدف ووقف الخسارة
MOVING_AVERAGE
16-04-2013, 11:41 AM
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات
لو تراجع شروط فتح الصفقة ستجد ان الشروط غير مكتملة
مثلا لم تحدد كم عقد يمكن ان يفتح الاكسبريت
فيقوم بفتح صفقات لا تنتهي
MOVING_AVERAGE
16-04-2013, 11:47 AM
السلام عليكم و رحمة الله و بركاته.
أخي "موفنج أفرج" بارك الله فيك و في والديك وجزاكم الله خير الجزاء.
*************************
عاوز استفسر استفسار صغير :
أزاي في البرنامج اقدر اعرف انا خسرت في الصفقه اللى فاتت او كسبت و ازاي اعرف اللى باقي من الرصيد.
علشان مثلا لو عاوز البرنامج يقف لو خسرت 10 مرات مثلا او وصل الرصيد ل 50 دولاي مثلا.
و شكرا.
يتم ذلك بواسطة مراجعة الصفقات الحالية والصفقات التي اغلقة
مثلا يمكن معرفة اخر صفقة اغلقة اما رابحة او خاسرة بعدة طرق
من بين هته الطرق مراجعة ربح الصفقة ان كان سالب
يعني ان الصفقة خسرت
ayoob
16-04-2013, 02:55 PM
لو تراجع شروط فتح الصفقة ستجد ان الشروط غير مكتملة
مثلا لم تحدد كم عقد يمكن ان يفتح الاكسبريت
فيقوم بفتح صفقات لا تنتهي
طيب اخي مصطفي ياريت يتم التعديل فية لي يعمل علي منصات الخمس ارقام والاربع ارقام ومنصات ECN وشكرhttp://www.fx-arabia.com/vb/images/icons/icon7.gif
MOVING_AVERAGE
16-04-2013, 03:06 PM
طيب اخي مصطفي ياريت يتم التعديل فية لي يعمل علي منصات الخمس ارقام والاربع ارقام ومنصات ECN وشكرhttp://www.fx-arabia.com/vb/images/icons/icon7.gif
بما ان الموضوع تعليمي
ساريك طريقة حذف الاخطاء احسن
اولا استعمل هذه الدالة لفتح اي صفقة
لكي ترتاح من مشاكل ECN
int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(ty==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,Digi ts),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);
}
مثلا لو تريد فتح عملية BUY اكتب فقط
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
MOVING_AVERAGE
16-04-2013, 03:11 PM
لكي ترتاح من مشكلة 5 ارقام
غير اي كتابة ملونة للكلمة Point
وجعلها فقط point ب حرف p الصغير وليس حرف P الكبير
بعدما تضع التالي في دالة init
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
جرب ضع التعديلات بنفسك
وان لم تشتغل معك ساعدل لك في الاكسبريت
ayoob
16-04-2013, 04:41 PM
لكي ترتاح من مشكلة 5 ارقام
غير اي كتابة ملونة للكلمة Point
وجعلها فقط point ب حرف p الصغير وليس حرف P الكبير
بعدما تضع التالي في دالة init
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
جرب ضع التعديلات بنفسك
وان لم تشتغل معك ساعدل لك في الاكسبريت
السلام عليكم اخي مصطفي ان لسة مبتدأ في البرمجة ولكن وضعت التعديل الدي قلت علية وفتح صفقة علي الباك تست بدون هدف ولا استوب
extern int StopLoss=100;
extern int TakeProfit=10;
extern double Lot=0.10;
extern int Magic=14000;
int point,digits;
int Q;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double STOK1,STOK2;
STOK1=iStochastic(Symbol(),PERIOD_M1,5,3,3,0,0,MOD E_MAIN,3);
STOK2=iStochastic(Symbol(),PERIOD_M1,5,3,3,0,0,MOD E_MAIN,3);
if(STOK1<15&&OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,Ask*point,As k*point,"AYOOB",Magic,0,Green);
}
if(STOK2>85&&OrdersTotal()==0)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,Bid*point,B id*point,"AYOOB",Magic,0,Red);
}http://www.fx-arabia.com/vb/uploaded/8360_11366119577.png
و بي النسبة لي الاكسبيرات الدي في المرفقات ليس ان الدي برمجتة فقط كنت اريد التعديل علية ليشتغل علي كل المنصات والتاكد انة يفتح الصفقات عادي مرفق الاكسبيرات
MOVING_AVERAGE
16-04-2013, 05:06 PM
تفضل تعديل فتح الصفقات
//+------------------------------------------------------------------+
//| Stok_scalper_EA.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int MagicNumber=1011;
extern double lStopLoss = 100;
extern double sStopLoss = 100;
extern double lTakeProfit = 10;
extern double sTakeProfit = 10;
extern string jj="------";
extern int StopLoss=100;
extern int TakeProfit=10;
extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Stok_scalper EA";
extern int Slippage = 0;
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
extern bool UseSound = True;
extern string NameFileSound = "alert.wav";
extern double Lots = 2;
int digits,Q;
double point;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int start()
{
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
} else Comment("");
}else Comment("");
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(lStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(lTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
if(sStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(sTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);
if(AccountFreeMargin()<(1000*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (!ExistPositions()){
if ((diStochastic0<d1)){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
return(0);
}
if ((diStochastic2>d3)){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
return(0);
}
}
return (0);
}
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
return(True);
}
}
}
return(false);
}
/*
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopL oss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
*/
void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldSto p,ldTake,lsComm,MagicNumber,0,clOpenBuy);
if (UseSound) PlaySound(NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldSt op,ldTake,lsComm,MagicNumber,0,clOpenSell);
if (UseSound) PlaySound(NameFileSound);
}
string GetCommentForOrder() { return(Name_Expert); }
double GetSizeLot() { return(Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss*Point);}
double GetStopLossSell() { return(Ask+sStopLoss*Point); }
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }
//+------------------------------------------------------------------+
int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(ty==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,Digi ts),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);
}
م. عبدالرحمن وردة
16-04-2013, 06:49 PM
يتم ذلك بواسطة مراجعة الصفقات الحالية والصفقات التي اغلقة
مثلا يمكن معرفة اخر صفقة اغلقة اما رابحة او خاسرة بعدة طرق
من بين هته الطرق مراجعة ربح الصفقة ان كان سالب
يعني ان الصفقة خسرت
حضرتك انا سؤالى عن الامر او المتغير الذي يقول لى حاله الصفقة الحالية او الصفقات الماضية.
MOVING_AVERAGE
17-04-2013, 10:56 PM
حضرتك انا سؤالى عن الامر او المتغير الذي يقول لى حاله الصفقة الحالية او الصفقات الماضية.
لم افهم بالتحديد السؤال
ayoob
18-04-2013, 09:49 AM
تفضل تعديل فتح الصفقات
//+------------------------------------------------------------------+
//| Stok_scalper_EA.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int MagicNumber=1011;
extern double lStopLoss = 100;
extern double sStopLoss = 100;
extern double lTakeProfit = 10;
extern double sTakeProfit = 10;
extern string jj="------";
extern int StopLoss=100;
extern int TakeProfit=10;
extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Stok_scalper EA";
extern int Slippage = 0;
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
extern bool UseSound = True;
extern string NameFileSound = "alert.wav";
extern double Lots = 2;
int digits,Q;
double point;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int start()
{
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
} else Comment("");
}else Comment("");
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(lStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(lTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
if(sStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(sTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);
if(AccountFreeMargin()<(1000*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (!ExistPositions()){
if ((diStochastic0<d1)){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
return(0);
}
if ((diStochastic2>d3)){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
return(0);
}
}
return (0);
}
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
return(True);
}
}
}
return(false);
}
/*
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopL oss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
*/
void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldSto p,ldTake,lsComm,MagicNumber,0,clOpenBuy);
if (UseSound) PlaySound(NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldSt op,ldTake,lsComm,MagicNumber,0,clOpenSell);
if (UseSound) PlaySound(NameFileSound);
}
string GetCommentForOrder() { return(Name_Expert); }
double GetSizeLot() { return(Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss*Point);}
double GetStopLossSell() { return(Ask+sStopLoss*Point); }
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }
//+------------------------------------------------------------------+
int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(ty==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,Digi ts),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);
}
تمام اخي مصطفي اضفت الكود واشتغل عادي وبي النسبة لي هد الكود ليس لة فائدة الان صحيح وقمت بي ازلة كلمة extren
double lStopLoss = 1000;
double sStopLoss = 1000;
double lTakeProfit = 100;
double sTakeProfit = 100;
ziyadiah
18-04-2013, 10:00 AM
يعطيك الف عافية اخي موفنج
م. عبدالرحمن وردة
18-04-2013, 01:11 PM
لم افهم بالتحديد السؤال
ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفقة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.
*********************
MOVING_AVERAGE
18-04-2013, 01:17 PM
ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.
*********************
حالة الصفقة يعني لو كان يعني اضهار ربح الصفقة الماضية
سنستخدم الدالة التالية خارج الدالة ستارت
double pofet_HISTORY(){
double pr=0;
for(int p=0;p<OrdersHistoryTotal();p++){
OrderSelect(p,SELECT_BY_POS,MODE_HISTORY);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
pr=OrderProfit();
}
return(pr);
}
سنكتب داخل الدالة ستارت الامر
Comment(pofet_HISTORY());
يضهر لنا هل ربح او خسارة الصفقة الماضية
كيف اعرف ربح او خسارة
اذا مانت النتيجة موجبة فهو ربح ان كانت سالبة فهو خسارة
MOVING_AVERAGE
18-04-2013, 01:20 PM
ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفقة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.
*********************
ايقاف البرنامج
اولا لكي نحصل علي الرصيد نستخدم التالي
AccountBalance()
لكي نتحكم في عمل الاكسبريت اعتماد علي الرصيد
نضع من شروط فتح الصفقات
if(AccountBalance()>50)
م. عبدالرحمن وردة
19-04-2013, 08:57 PM
حالة الصفقة يعني لو كان يعني اضهار ربح الصفقة الماضية
سنستخدم الدالة التالية خارج الدالة ستارت
double pofet_HISTORY(){
double pr=0;
for(int p=0;p<OrdersHistoryTotal();p++){
OrderSelect(p,SELECT_BY_POS,MODE_HISTORY);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
pr=OrderProfit();
}
return(pr);
}
سنكتب داخل الدالة ستارت الامر
Comment(pofet_HISTORY());
يضهر لنا هل ربح او خسارة الصفقة الماضية
كيف اعرف ربح او خسارة
اذا مانت النتيجة موجبة فهو ربح ان كانت سالبة فهو خسارة
ايقاف البرنامج
اولا لكي نحصل علي الرصيد نستخدم التالي
AccountBalance()
لكي نتحكم في عمل الاكسبريت اعتماد علي الرصيد
نضع من شروط فتح الصفقات
if(AccountBalance()>50)
ألف شكر أخي "موفنج افرج" , أجبت فأحسنت :)
abu ayoub
21-04-2013, 09:18 PM
السلام عليكم ورحمة الله وبركاته
أتابع معكم ان شاء الله، أنا جديد في هذا المجال رغم أن عملي كمبرمج برامج إدارية. بدأت منذ اسبوع تعلم فوركس واعجبني كثير هذا الموقع.
MOVING_AVERAGE
22-04-2013, 01:42 PM
السلام عليكم ورحمة الله وبركاته
أتابع معكم ان شاء الله، أنا جديد في هذا المجال رغم أن عملي كمبرمج برامج إدارية. بدأت منذ اسبوع تعلم فوركس واعجبني كثير هذا الموقع.
بالتوفيق لك اخي
وستجد هذه اللغة في غاية البساطة ان كنت اصلا مبرمج بلغة اخري
ولا تتردد في طرح اي استفسار
هامور الصغير
23-04-2013, 09:39 PM
السلام عليكم ورحمة الله وبركاته
ماهو الفائده منه/ هل يتم الاعتماد عليه ؟
imaddine
24-04-2013, 02:03 AM
استاذ موفنج والله ممكن مساعدة في طريقة اضافت المضاعفات
فقد قمت ببرمجت اكسبيرت على رينكو يعمل على نفس
طريقة التي برمجت بها اكسبيرت الاخ بدوي اي انه يفتح صفقة
ولا يغلقها لا عند اغلاق شمعة عكسية يغلقها ويدخل مع اتجاه
الشمعة الجديدة وبالنسبة للاضافة ارده ان لا يغلق الصفقة الخاسرة
في الاشارة العكسية بل يضاعف اللوت +1 فقط اي 1 2 3 4 5 6 7
حتى يخرج من التذبذب
بمعنى انه لو كانت شمعة عكسية يراقب الصفقة لو كانت رابحة
يغلق الصفقة ويبدا من جديد لكن لو كانت خاسرة يحافظ عليها
ويفتح صفقة جديدة عكسية مثلا لوت البداية 0.10 اذا الصفقة الجديدة
0.20 ويبقى على هذا حتى تظهر اشارة عكسية ويكون مجموع الصفقات
موجب يغلق جميع الصفقات ويبدا من جديد
MOVING_AVERAGE
24-04-2013, 12:04 PM
استاذ موفنج والله ممكن مساعدة في طريقة اضافت المضاعفات
فقد قمت ببرمجت اكسبيرت على رينكو يعمل على نفس
طريقة التي برمجت بها اكسبيرت الاخ بدوي اي انه يفتح صفقة
ولا يغلقها لا عند اغلاق شمعة عكسية يغلقها ويدخل مع اتجاه
الشمعة الجديدة وبالنسبة للاضافة ارده ان لا يغلق الصفقة الخاسرة
في الاشارة العكسية بل يضاعف اللوت +1 فقط اي 1 2 3 4 5 6 7
حتى يخرج من التذبذب
بمعنى انه لو كانت شمعة عكسية يراقب الصفقة لو كانت رابحة
يغلق الصفقة ويبدا من جديد لكن لو كانت خاسرة يحافظ عليها
ويفتح صفقة جديدة عكسية مثلا لوت البداية 0.10 اذا الصفقة الجديدة
0.20 ويبقى على هذا حتى تظهر اشارة عكسية ويكون مجموع الصفقات
موجب يغلق جميع الصفقات ويبدا من جديد
اولا اخي لكي تفتح صفقة بلوت عادي تحتاج الي شروط
وصفقة بلوت مضاعة تحتاج الي شروط مغايرة
ماهي الشروط التي تفتح علي اساسها اللوت المضاعف لكي لجيبك
لان الشروط هي الاهم في البرمجة
imaddine
24-04-2013, 03:05 PM
اولا اخي لكي تفتح صفقة بلوت عادي تحتاج الي شروط
وصفقة بلوت مضاعة تحتاج الي شروط مغايرة
ماهي الشروط التي تفتح علي اساسها اللوت المضاعف لكي لجيبك
لان الشروط هي الاهم في البرمجة
الشروط هي نفس الشروط التي ذكرتها ان يقوم
بفتح صفقة بعد شمعة معاكسة وقد ارفقت لك مثال
لتوضيح الفكرة اكثر داخل المربع المرسوم
بعد اغلاق شمعة نازلة يخرج من البيع ويدخل شراء
ونفرض ان لوت 0.10 ما حصل ان الشمعة التالية اغلقت
نازلة اي صفقة خاسرة هنا لا يقوم باغلاق الصفقة الخاسرة
بل يتركها مفتوحة ويدخل بصفقة جديدة بيع بلوت 0.20
الشمعة التي بعدها صاعدة اي مجموع الصفقتين خاسر
لا يغلقهما ويدخل بصفقة ثالث شراء بلوت 0.3
بمعنى دالة تراقب الصفقات المفتوحة لو كانت رابحة
تغلق كل الصفقات في الانعاكس ولو كانت سالبة
تحافظ وتفتح صفقة جديدة +1 عن اخر لوت
http://www.fx-arabia.com/vb/uploaded/12839_01366805117.png
للاسف انا لم اجد موضوع برمجي يتكلم على طريقة
البرمجة بالمضاعفات
imaddine
25-04-2013, 12:55 AM
استاذ موفنج اعلم انك لا تمتلك الكثير من
الوقت نظرا لكثرت الطلبات فالله يكون في عونك
لكن لو سمحت ممكن ان تعدل على هذا الكود
وساقوم باطلاع عليه لدراسته من جديد لو سمحت
double TP,SL;
if(TrailingStop>0)MoveTrailingStop();
//////////////////////////////////////////////////
double openprice,lots,newLot;int s;
if(UseMultiplier){
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==OP_BUY){
openprice=OrderOpenPrice();lots=OrderLots();
}
}{
هنا قمت بجعل المضاعف + وكمتغير خاجي جعلت Multiplier =1
حتى تكون المضاعفات 1 2 3 4 5 6
newLot=Multiplier+lots;
if(Ask<=openprice-Step*point&&orderstotal()>=1){
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
OrderSend(Symbol(),OP_BUY,newLot,NormalizeDouble(A sk,digits),3,0,TP," ",MagicNumber,0,Blue);
}
}
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==OP_SELL){
openprice=OrderOpenPrice(); lots=OrderLots();
}
}{
newLot=Multiplier+lots;
if(Bid>=openprice+Step*point&&orderstotal()>=1){
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,newLot,NormalizeDouble( Bid,digits),3,0,TP,"",MagicNumber,0,Red);
}
}
}
//////////////////////////////////////////////////
static datetime NewBar;
if(orderstotal()==0)
{
// close orders
}
double Cl1=iClose(0,0,1);
double Cl2=iClose(0,0,2);
//////////////////////////////////////////////////
if(NewBar<Time[0])
if(Cl2<Cl1)
{CloseSellOrders();}
if(Cl2>Cl1)
{CloseBuyOrders();}
if(profit()>=ProfitTarget){
while(orderstotal()>0){CloseSellOrders();CloseBuyOrders();}
هنا المشكلة الاولى كيف اجعله يحافظ على الصفقات الخاسرة
دون اغلاقها
}
{
// close orders
}
//////////////////////////////////////////////////
if(Cl2<Cl1) {
if(orderstotal()<MaxTrades&&Time0!=Time[0])
{
{
// open orders
Time0=Time[0];
}
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
}
//////////////////////////////////////////////////
if(Cl2>Cl1){
if(orderstotal()<MaxTrades&&Time0!=Time[0])
{
{
// open orders
Time0=Time[0];
}
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
}
return(0);
}
//+------------------------------------------------------------------+
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
}
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*poin t,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))| |(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
}
}
}
}
}
}
اعتمدت هنا على دالة اغلاق على ربح معين لكن لو امكن
جعل الطريقة كما شرحتها يخرج عند اشارة عكسية مهما كان
الربح كبير او صغير او حتى على نقطة التعادل
double profit(){
double c;
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
c=c+OrderProfit();
}
}
return(c);
}
طبعا ان يحافظ على الصفقات الخاسرة ويضاعف اللوت
1 2 3 4 5 اي كل مرة +1 وعندما تكون الاشارة عكسية
والمحصلة ربح يغلق كل الصفقات ويعيد من جديد
وبارك الله فيك
abou fares
01-05-2013, 05:49 PM
سؤال للاساتذ موفينج لدي اكسبيرت احاول ان اتعلم البرمجة من خلاله ولكن لدي مشكلة لم اجد لها حل وارجوا منك اعطائي المعادلة اللازمة : المشكلة هي عند تحقق شروط الدخول للصفقة شراء او بيع الاكسبيرت يفتح صفقة وعند وصول الصفقة للهدف لا يتوقف الاكسبيرت عن فتح الصفقات لان مازالت جميع الشروط متحققة للبيع او للشراء ارجوا منكم المساعدة وشكرا .
abou fares
04-05-2013, 03:11 PM
للتذكير
احمد ابو القاسم
05-05-2013, 10:59 PM
متابع معك وجزاك الله خيرا
MOVING_AVERAGE
06-05-2013, 12:11 PM
الشروط هي نفس الشروط التي ذكرتها ان يقوم
بفتح صفقة بعد شمعة معاكسة وقد ارفقت لك مثال
لتوضيح الفكرة اكثر داخل المربع المرسوم
بعد اغلاق شمعة نازلة يخرج من البيع ويدخل شراء
ونفرض ان لوت 0.10 ما حصل ان الشمعة التالية اغلقت
نازلة اي صفقة خاسرة هنا لا يقوم باغلاق الصفقة الخاسرة
بل يتركها مفتوحة ويدخل بصفقة جديدة بيع بلوت 0.20
الشمعة التي بعدها صاعدة اي مجموع الصفقتين خاسر
لا يغلقهما ويدخل بصفقة ثالث شراء بلوت 0.3
بمعنى دالة تراقب الصفقات المفتوحة لو كانت رابحة
تغلق كل الصفقات في الانعاكس ولو كانت سالبة
تحافظ وتفتح صفقة جديدة +1 عن اخر لوت
http://www.fx-arabia.com/vb/uploaded/12839_01366805117.png
للاسف انا لم اجد موضوع برمجي يتكلم على طريقة
البرمجة بالمضاعفات
ساجيبك بالشرح الممل مع لكود ان شاء الله
MOVING_AVERAGE
06-05-2013, 12:13 PM
سؤال للاساتذ موفينج لدي اكسبيرت احاول ان اتعلم البرمجة من خلاله ولكن لدي مشكلة لم اجد لها حل وارجوا منك اعطائي المعادلة اللازمة : المشكلة هي عند تحقق شروط الدخول للصفقة شراء او بيع الاكسبيرت يفتح صفقة وعند وصول الصفقة للهدف لا يتوقف الاكسبيرت عن فتح الصفقات لان مازالت جميع الشروط متحققة للبيع او للشراء ارجوا منكم المساعدة وشكرا .
تمام سارفق لك مثال مع عدم الشراء في حالة تحققت الشروط
imaddine
06-05-2013, 04:18 PM
ساجيبك بالشرح الممل مع لكود ان شاء الله
الف شكر استاذ موفنج
واهلا بعودتك معنا
ayoob
07-05-2013, 05:50 AM
تفضل تعديل فتح الصفقات
//+------------------------------------------------------------------+
//| Stok_scalper_EA.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int MagicNumber=1011;
extern double lStopLoss = 100;
extern double sStopLoss = 100;
extern double lTakeProfit = 10;
extern double sTakeProfit = 10;
extern string jj="------";
extern int StopLoss=100;
extern int TakeProfit=10;
extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Stok_scalper EA";
extern int Slippage = 0;
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
extern bool UseSound = True;
extern string NameFileSound = "alert.wav";
extern double Lots = 2;
int digits,Q;
double point;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int start()
{
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
} else Comment("");
}else Comment("");
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(lStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(lTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
if(sStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(sTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);
if(AccountFreeMargin()<(1000*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (!ExistPositions()){
if ((diStochastic0<d1)){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
return(0);
}
if ((diStochastic2>d3)){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
return(0);
}
}
return (0);
}
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
return(True);
}
}
}
return(false);
}
/*
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopL oss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
*/
void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldSto p,ldTake,lsComm,MagicNumber,0,clOpenBuy);
if (UseSound) PlaySound(NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldSt op,ldTake,lsComm,MagicNumber,0,clOpenSell);
if (UseSound) PlaySound(NameFileSound);
}
string GetCommentForOrder() { return(Name_Expert); }
double GetSizeLot() { return(Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss*Point);}
double GetStopLossSell() { return(Ask+sStopLoss*Point); }
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }
//+------------------------------------------------------------------+
int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(ty==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,Digi ts),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);
}
تمام اخي مصطفي الان اريد كيفية اضافة متغيرات خارجية لي مستويات البيع والشراء لي الاستوكستك ان قمت بي اضافة اعدادت الاستوكستك ولكن لم اعرف كيفية اضافة متغيرات خارجية لي مستويات الاستوكستك مثلا اريده يشتري من مستوى 25 عشرين وليس 15 او البيع من 70 وليس 85 لانه الاعدادت دخل الاكسبيرات بيع من 85 وشراء من 15 ياريت يتم شراح الكود حتي اقوم بي الاضافة وشكرا
http://www.fx-arabia.com/vb/images/icons/icon7.gif
MOVING_AVERAGE
08-05-2013, 01:10 AM
تمام اخي مصطفي الان اريد كيفية اضافة متغيرات خارجية لي مستويات البيع والشراء لي الاستوكستك ان قمت بي اضافة اعدادت الاستوكستك ولكن لم اعرف كيفية اضافة متغيرات خارجية لي مستويات الاستوكستك مثلا اريده يشتري من مستوى 25 عشرين وليس 15 او البيع من 70 وليس 85 لانه الاعدادت دخل الاكسبيرات بيع من 85 وشراء من 15 ياريت يتم شراح الكود حتي اقوم بي الاضافة وشكرا
http://www.fx-arabia.com/vb/images/icons/icon7.gif
double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);
لاحظ اخي هنا المستويات التي يشتري منها الاكسبريت
d1=15
غيره مثل ما تريد
و
d2=85
غيره مثل ما تريد
ayoob
08-05-2013, 05:07 AM
double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);
لاحظ اخي هنا المستويات التي يشتري منها الاكسبريت
d1=15
غيره مثل ما تريد
و
d2=85
غيره مثل ما تريد
اهلا اخي مصطفي قمت بي عملهم كمتغير خارجي وغيرت القيم الي 25 و 70 ولم ينفد الشراء او البيع من المستويات المطلوبة وينفد من المستويات الافترضية التي هو علية:1 (13):
extern double d1=15;
extern double d3=85;
misho2007
11-05-2013, 03:45 AM
بصراحه شرح اكتر من رائع وبسيط جدا
وانا كان ليا استفسار
دلوقتى اللى انا فهمته ان الاكسبرت عشان يشتغل لازم احطله كل الشروط اللى هيشتغل بها
طيب هل ينفع ياخد اوامر للبيع والشراء من شئ خارجى؟ الايميل مثلا
يعنى على سبيل المثال هنفترض بيجيلى ايميلات توصيات
هل يمكن عمل اكسبرت يقوم بقراية معلومات الاوامر من الايميل
اعتقد ان الاكسبرت نفسه مايقدرش يروح على الميل ويقرا منه بس هل ممكن وجود برنامج وسيط او اى شئ وسيط يربط مابين الايميل ويخلى الاكسبرت يعرف يقرأ الداتا دى
يعنى انا عارف ان الاكسبرت يقدر يقرا من ملفات ال DLL هل لو تم حفظ معلومات البيع والشراء من الايميل بشكل ما وحفظها فى ملف DLL هل من الممكن ان يقوم الاكسبرت بقرائتها من ملف ال DLL ؟؟
فى انتظار ردك الغالى
tamer_taher22
11-05-2013, 02:58 PM
يسعدنا ان نقدم لكم دورتنا 2
وهي دورة برمجة الاكسبريت
ان شاء الله سنترجم المؤشرات التي نعمل عليها في دورة المؤشرات الي اكسبريتات
من يريد ان يتابعنا في دورة الاكسبريتات لابد ان يفهم الية عمل المؤشر الذي سنحوله مع بعض الي اكسبريت
ان شاء الله سنبدء بابسط الامور وصول الي عمل اكسبريت
السلام عليكم
الحقيقة انا بشكرك على تقديم المساعدة للجميع و باخلاص شديد
بالنسبة لى انا مبرمج سى شارب و قررت استفيد من خبرتك فى برمجة الاكسبريتات و اللى واضح انك فعلا متمكن ربنا يزيدك علما
انا بحاول اجمع دروسك بالترتيب بس بصراحة مش قادر لاسباب كتيرة
1- طبعا هناك اصدقاء لديهم اكسبريتات تحتاج الى تعديلات حتى يستفيدوا منها و لكن هذا بصراحة يشتت التسلسل للدروس و بالتالى الواحد بيفقد التركيز فى اوقات كثيرة
2- هذا الموضوع تعليمى مشكورا منك و ليس الزاما بينما انا و غيرى نريد ان نتعلم كيف نصطاد السمك لذلك اريد منك لو تكرمت تقوم بشرح اكسبريت بسيط يقوم بعملية الشراء و البيع المباشر بدون اى مؤشرات حتى نتعلم الاساسيات و نتأكد من تنصيبه على الشارت و تفعيله بنجاح
3- نقوم باستخدام بعض المؤشرات البسيطة مثلا عند اغلاقات الشمعة او افتتاح الاسواق او المؤشرات التقليدية
4- اتمنى ان يكون هناك واجبات و الاسئلة تكون فى المرحلة اللى احنا فيها الى ان تصل بنا الى مستوى قريب منك
5- فى حالة مثلا هناك دالات جاهزة مثل الارقام العشرية او عدد الصفقات المفتوحة يمكننا ان نستأذنك بارفاقها لنا
6- ارجو منك لو تكرمت ترتيب الدورس مثل الدرس الاول و الثانى و هكذا
7- اعذرنى انى جئت متأخر و لكنى كنت ابحث عن مساعد مثلك
MOVING_AVERAGE
18-05-2013, 12:41 AM
السلام عليكم
الحقيقة انا بشكرك على تقديم المساعدة للجميع و باخلاص شديد
بالنسبة لى انا مبرمج سى شارب و قررت استفيد من خبرتك فى برمجة الاكسبريتات و اللى واضح انك فعلا متمكن ربنا يزيدك علما
انا بحاول اجمع دروسك بالترتيب بس بصراحة مش قادر لاسباب كتيرة
1- طبعا هناك اصدقاء لديهم اكسبريتات تحتاج الى تعديلات حتى يستفيدوا منها و لكن هذا بصراحة يشتت التسلسل للدروس و بالتالى الواحد بيفقد التركيز فى اوقات كثيرة
2- هذا الموضوع تعليمى مشكورا منك و ليس الزاما بينما انا و غيرى نريد ان نتعلم كيف نصطاد السمك لذلك اريد منك لو تكرمت تقوم بشرح اكسبريت بسيط يقوم بعملية الشراء و البيع المباشر بدون اى مؤشرات حتى نتعلم الاساسيات و نتأكد من تنصيبه على الشارت و تفعيله بنجاح
3- نقوم باستخدام بعض المؤشرات البسيطة مثلا عند اغلاقات الشمعة او افتتاح الاسواق او المؤشرات التقليدية
4- اتمنى ان يكون هناك واجبات و الاسئلة تكون فى المرحلة اللى احنا فيها الى ان تصل بنا الى مستوى قريب منك
5- فى حالة مثلا هناك دالات جاهزة مثل الارقام العشرية او عدد الصفقات المفتوحة يمكننا ان نستأذنك بارفاقها لنا
6- ارجو منك لو تكرمت ترتيب الدورس مثل الدرس الاول و الثانى و هكذا
7- اعذرنى انى جئت متأخر و لكنى كنت ابحث عن مساعد مثلك
اهلا بك اخي
بالنسبة لك مثلا ستجد ان اللغة بسيطة جدا لانها اساسا مشتقة من لغة c
نفس الحلقات التكرارية
نفس المتغيرات تقريبا
ممكن ان تدمج لغة c# مع mql4 لعمل مؤشر او اكسبريت قوي
وذلك عن طريق dll
MOVING_AVERAGE
18-05-2013, 12:44 AM
بصراحه شرح اكتر من رائع وبسيط جدا
وانا كان ليا استفسار
دلوقتى اللى انا فهمته ان الاكسبرت عشان يشتغل لازم احطله كل الشروط اللى هيشتغل بها
طيب هل ينفع ياخد اوامر للبيع والشراء من شئ خارجى؟ الايميل مثلا
يعنى على سبيل المثال هنفترض بيجيلى ايميلات توصيات
هل يمكن عمل اكسبرت يقوم بقراية معلومات الاوامر من الايميل
اعتقد ان الاكسبرت نفسه مايقدرش يروح على الميل ويقرا منه بس هل ممكن وجود برنامج وسيط او اى شئ وسيط يربط مابين الايميل ويخلى الاكسبرت يعرف يقرأ الداتا دى
يعنى انا عارف ان الاكسبرت يقدر يقرا من ملفات ال DLL هل لو تم حفظ معلومات البيع والشراء من الايميل بشكل ما وحفظها فى ملف DLL هل من الممكن ان يقوم الاكسبرت بقرائتها من ملف ال DLL ؟؟
فى انتظار ردك الغالى
بالطبع اخي
لو انك مبرمج او لك نضرة عن البرمجة
فملفات dll ممكن تعمل اي دوال ممكن تتخيلها
vBulletin® v3.8.8