مشاهدة النسخة كاملة : دورة تعلم البرمجة باحتراف
MOVING_AVERAGE
23-11-2012, 05:16 PM
{ومن لجم علماً لجمه الله بلجام من نار يوم القيامة}
من هذا المنطلق ولان الله رزقني بفهم بعض الامور في البرمجة ورايت اخوتي هنا في المنتدي
باشد الحاجة لتعلم بعض الاساسيات لكي تضارب براحتك وتتغلب علي هذا السوق
رجائي الوحيد هو تسديد مستحقات الدورة
وهي الدعاء لي ولوالديا
اولا انا ناقل بعض المفاهيم والعبارات حرفيا من مختلف المنتديات لانني لم ابدء بالطبع
من لاشئ بل قرائت وفهمت الشروحات وسانقلها اليكم ان شاء الله
بتفصيل اكثر ان شاء الله
MOVING_AVERAGE
23-11-2012, 05:36 PM
في البداية نعرف لغة MQ4 تعريف بسيط
MQ4 هي لغة مخصصة للبرمجة علي منصة الميتاتريدر ويمكنها عمل عدت برامج تساعدنا في التجارة مثل
المؤشرات والاكسبريت
يمكننا كتابت هذه اللغة في محرر خاص موجود في منصة الميتاتريدر ونستطيع الوصول اليه من
الايقونة الصفراء من اعلي الشريط كما في الصورة
http://www.fx-arabia.com/vb/uploaded/8190_01353681368.jpg
او بالضغط علي F4
MOVING_AVERAGE
23-11-2012, 05:42 PM
ما هو الاكسبريت
هو برنامج يقوم بالمتاجرة الالية بدل عنك بحيث يقوم بفتح وغلق الصفقات وتغير هدفها وتتبع الربح
ومتابعتها ضمن الشروط التي برمج لها
ماهو المؤشر
هو برنامج يساعدك في التجارة باعطائك مثلا سهم للدخول او الخروج خط لمقاومة كتابة تضهر علي الشارت
لاكن لا يستطيع فتح او اغلاق اي صفقة اليا
MOVING_AVERAGE
23-11-2012, 05:48 PM
لكي نستطيع برمجة اكسبريت لابد ان نكون جيدين في برمجة المؤشر
نبدء علي بركت الله في كيفية برمجة المؤشر
في لغة MQ4 لا بد من معرفة امور وكلمات هامة جدا لكي نواصل الطريق الي برمجة المؤشر
من بين هذه الكلمات التي وجب علينا معرفتها
int -double-bool-string -color-datetime
وهي تعتبر المتغيرات الاساسية في لغة MQ4 حيت لا يخلو اي برنامج منها
MOVING_AVERAGE
23-11-2012, 06:01 PM
الكلمة الاولي int
تستخدم هذه الكلمة لتعريف متغير اختار اسمه كما اشاء علي انه رقم صحيح ( لا توجد فيه فواصل)
بالنسبة للمبتدئين في اللغة سيجدوا صعوبة قليلا ثم يتضح كل شئ في الامثلة وبعد اكمال كل المتغيرات
مثال 1
استخدام الكلمة int
اريد من البرنامج ان يحجز لي مكان في الذاكرة (ذاكرة البرنامج ) وهذا المكان لابد ان اعطيه اسم لكي يتعرف عليه البرنامج لما اناديه
واضع في هذا المكان رقم صحيح
التطبيق العملي
int A=50;
ان كان فيه اي اسئلة لا تترددوا
MOVING_AVERAGE
23-11-2012, 06:08 PM
الكلمة الثانية double
تستخدم هذه الكلمة لتعريف متغير اختار اسمه كما اشاء علي انه رقم فيه فواصل
التطبيق العملي
double n;
نلاحظ هنا ااني في المثال الاول اعطيت المتغير القيمة 10 وهنا لم اعط المتغير اي قيمة و الكتابتين صحيحتين
نلاحظ ان اي تصريح ينتهي بالفاصلة المنقوطة
MOVING_AVERAGE
23-11-2012, 06:16 PM
الكلمة الثالثة bool
تستخدم هذه الكلمة لتعريف متغير اختار اسمه كما اشار علي انه متغير منطقي يحمل معنين فقط اما صحيح او خاطئ
لما يكون صحيح نرمز له ب TRUE او بالرقم 1
لما يكون خاطئ نرمز له ب false او بالرقم 0
تطبيق عملي
bool c;هنا المتغير ياخذ تلقائيا القيمة صحيح
bool c=true;هنا ايضا المتغير ياخذ القيمة صحيح
bool c=1;هنا المتغير ياخذ ايضا القيمة صحيح
bool c=false ;bool c=0;وهنا المتغير ياخذ القيمة خطئ
لانستطيع التصريح بمتغير بقيمتين مختلفتين
MOVING_AVERAGE
23-11-2012, 06:23 PM
الكلمة الرابعة string
وتستخدم هذه الكلمة للتعريف متغير علي انه جملة من الحروف
تكتب هذه الجملة بين قوسين ثنائيين
تطبيق عملي
string e="MOVING";
maasa
24-11-2012, 12:10 AM
بارك الله فيك اخي الكريم . موضوع رائع اتمنى ان تستمر فيه
بالتوفيق ان شاء الله و سجلني متابع معك
MOVING_AVERAGE
24-11-2012, 12:46 PM
بارك الله فيك اخي الكريم . موضوع رائع اتمنى ان تستمر فيه
بالتوفيق ان شاء الله و سجلني متابع معك
ان شاء الله مكملين اخي لاكن احيانا لا يوجد وقت للكتابة
MOVING_AVERAGE
24-11-2012, 12:50 PM
الكلمة الخامسة color
وهي تقريبا مخصصة لهذه اللغة
تستخدم لتعريف متغير يحمل قيمة لون ما
مثال تطبيقي
color f=Red;
ملاحضة الالوان دائما تبدء بحرف كبير
MOVING_AVERAGE
24-11-2012, 12:53 PM
الكلمة السادسة والاخيرة في تعريف المتغيرات التي نحتاجها في البرمجة
datetime
تستخدم لتعريف متغير يحمل قيمة زمنية او تاريخ
MOVING_AVERAGE
24-11-2012, 01:09 PM
اول شئ نفتح المحرر كما اشرت في بداية الموضوع
ونتبع التالي
نفتح موضوع جديد كما في الصورة
http://www.fx-arabia.com/vb/uploaded/8190_01353751414.jpg
او نضغط علي Ctrl +N
نختار indecteur personnel
http://www.fx-arabia.com/vb/uploaded/8190_01353751676.jpg
نكتب اسم برنامجنا كما نريد
http://www.fx-arabia.com/vb/uploaded/8190_01353751714.jpg
واخير نضغط انهاء
http://www.fx-arabia.com/vb/uploaded/8190_01353751750.jpg
MOVING_AVERAGE
24-11-2012, 01:11 PM
سنجد الكود البرمجي الجاهز التالي وسنشرحه كله ان شاء الله
//+------------------------------------------------------------------+
//| 1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
//----
return(0);
}
//+------------------------------------------------------------------+
MOVING_AVERAGE
24-11-2012, 01:19 PM
وقبل شرح الكود السابق نشرح كيف نكتب تعليق في محرر النصوص
تعليق لا ينفذه البرنامج لاكن يقرئه المبرمج فقط ممكن يفيده عند مراجعة اي برنامج برمجه من قبل
اذن ما هي التعليقات وكيف اكتبها
التعليقات
أي لغة برمجة توفر للمبرمج القدرة على كتابة شرح أو تعليقات داخل الكود البرمجي نفسه
وظيفة هذا الشرح هي سهولة التعديل فيما بعد للكود نفسه أو شرح الكود لغير المبرمج وذلك
لتوضيح فكرة ما أو شرح طريقة استخدام البرنامج مثلا
داخل الكود البرمجي
الكلمات الملونه باللون الرمادي الباهت تسمى تعليقات وهو لا يؤثر على عمل الإكسبرت او
المؤشر وحتى أن الإكسبرت او المؤشر لا يقرأه فمثلا إذا أراد المبرمج توضيح معلومه في
الكود يقوم بإستخدام التعليقا ويتم كتابة التعليقات بطريقتين
1 أن يسبق السطر علامة
//
2 إذا كانت التعليقات أكثر من سطر
/*
في بداية السطر
*/
في نهاية السطر
MOVING_AVERAGE
24-11-2012, 01:28 PM
تعديل بسيط الي ان نصل الي مكانه
MOVING_AVERAGE
24-11-2012, 01:35 PM
نلاحظ في الكود البرمجي الجاهز التعلقات التالية
//+------------------------------------------------------------------+
//| 1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
//---- indicators
//----
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
وكلها برمجيا لا هدف منها وممكن نحذفها كلها ولا يتاثر البرنامج بها علي الاطلاق
وهي هدفها فقط توضيح المناطق للمبرمج واضهار معلومات تهم المبرمج
MOVING_AVERAGE
24-11-2012, 01:37 PM
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
وهذه الكتابة لحقوق الملكية للمبرمج ولن يحولها محرر النصوص للغة الالة اثناء معالجة الكود البرمجي
MOVING_AVERAGE
24-11-2012, 01:44 PM
#property indicator_chart_window
وهذا الكود يفيد ان البرنامج الذي سننشئه او المؤشر الذي نعمل عليه سيكون علي نفس الشارت
التي تكون فيها الشموع مثل مؤشر الاشموكو علي سبيل المثال
ولو وضعنا الكود التالي
#property indicator_separate_window
يعني ان المؤشر الذي نعمل عليه سيكون علي نافذة مستقلة مثل مؤشر RSI او مؤشر المومانتيوم
وعلي كل نحن نختار الناقذة التي نعمل عليها عند فتح صفحة جديدة
http://www.fx-arabia.com/vb/uploaded/8190_01353751750.jpg
لو ناشر علي العلامة من فوق ستكون نافذة البرنامج مستقلة عن النافذة الرئسية
لو فيه اي اسئلة لا تترددوا اخواني
ممتااااااز ما شاء الله
متابع معك بشغف
و اتمنى اني ان شاء الله اقدر ابرمج اى مؤشر بعد كده
سمير محمد ارمان
24-11-2012, 06:54 PM
متابع معكم ان شاء الله
ماشاء الله موضوع ممتاز
جزاكم الله خير
MOVING_AVERAGE
24-11-2012, 11:33 PM
وبعد ان عرفنا النافذة التي سنعمل عليها
نجد 3 دوال
وسندرس الدوال لاحقا :1 (35):
الدالة الاولي
int init()
{
//---- indicators
//----
return(0);
}
الدالة الثانية
int deinit()
{
//----
//----
return(0);
}
الدالة الثالثة والاخيرة
int start()
{
int counted_bars=IndicatorCounted();
//----
//----
return(0);
}
وسنشرح في ما يلي كل دالة منفرده
MOVING_AVERAGE
24-11-2012, 11:39 PM
الدالة int init()هذه الدالة يتم إستدعائها مرة واحدة فقط عند بداية عمل الإكسبرت او المؤشر
في هذا القسم لا نستطيع وضع متغيرات خارجية ليتحكم بها المستخدم و أيضا في هذا القسم يمكننا استخدام
متحولات تم تعريفها في القسم السابق حيث لا يمكننا في القسم الاول استخدام متحول عرفناه في نفس القسم
مثلا: أنا عرفت المتحول A في القسم الاول على انه متغير من نوع اينيت يحمل القيمة 10
فأنا لا استطيع اعطاءه قيمة جديدة في نفس القسم الا بتغيير القيمة الاصلية و هي 10
اما في القسم الثاني فيمكنني اعطاءه أي قيمة أخرى عند تحقق شروط معينة
وسيتم التفصيل بشكل ممل لاحقا في التطبيقات
المهم الان لابد من معرفة ان الدالة انيت تقرء مرة واحدة فقط عند بداية البرنامج
MOVING_AVERAGE
24-11-2012, 11:44 PM
الدالة
deinit()
وهذه الدالة يتم إستدعائها مرة واحدة فقط عند نهاية عمل الإكسبرت او المؤشر
هذه الدالة يقرأها الميتاتريدر لمرة واحدة أيضا و لكن فقط عند الخروج من البرنامج أي عندما تحذف المؤشر
أو الاكسبيرت عن الشارت قبل أن يخرج يقرأ هذه الدالة و ينفذ ما بداخلها من أكواد
ويقراها ايضا عند تغير التايم فريم او تغير العملة
ومن بين المهام التي تقوم بها
حذف الارقام او الخطوط التي حفظتها في ذاكرة الميتاتريدر
وبالتطبيق سنفهم اكثر عمل هذه الدالة
MOVING_AVERAGE
24-11-2012, 11:47 PM
الدالة
start()
هذه الدالة هي الاهم في البرمجة لانها ستحتوي على معظم الاكواد و هذه الدالة يقرأها الميتاتريدر في كل
تحرك للسعر أي كلما تحرك السعر لنقطة واحدة سوف يقوم برنامج الميتا بقراءة الاكواد الموجودة في هذه
الدالة و تنفيذها
و اغلب العمل سيكون في هذه الدالة
jmeel
25-11-2012, 12:14 AM
دائما قيمة الأنسان بمايعطي وليس بما ياخذ
عمل رائع ، وجزاك الله خير
MOVING_AVERAGE
25-11-2012, 12:25 AM
ممتااااااز ما شاء الله
متابع معك بشغف
و اتمنى اني ان شاء الله اقدر ابرمج اى مؤشر بعد كده
ان شاء الله بعد كم صفحة ستكتب البرنامج الذي تريد
المهم اسئل عن اي شئ لم تفهمه
MOVING_AVERAGE
25-11-2012, 12:26 AM
متابع معكم ان شاء الله
ماشاء الله موضوع ممتاز
جزاكم الله خير
شرفني مرورك اخي وانا ايضا متابع مواضيعك الرهيبة في منتدي الجيران
MOVING_AVERAGE
25-11-2012, 12:28 AM
دائما قيمة الأنسان بمايعطي وليس بما ياخذ
عمل رائع ، وجزاك الله خير
بارك الله فيك اخي جميل
نعمل شئ ربما يفيدنا لما نختفي من هذه الدنيا
Qadri
25-11-2012, 03:57 AM
استاذ موفينج
السلام عليكم ورحمة الله
شكرا على الموضوع المهم وعلى الله تتفك عقدتى من اللغة دى على ايديك
ممكن تشرح لنا معنى الكود ده
int counted_bars=IndicatorCounted();
وليه دايما موجود فى المؤشرات؟
شكرا لك اخى
MOVING_AVERAGE
25-11-2012, 10:22 AM
استاذ موفينج
السلام عليكم ورحمة الله
شكرا على الموضوع المهم وعلى الله تتفك عقدتى من اللغة دى على ايديك
ممكن تشرح لنا معنى الكود ده
int counted_bars=IndicatorCounted();
وليه دايما موجود فى المؤشرات؟
شكرا لك اخى
بارك الله فيك
تابع معنا وستجد ما تحتاج
علي كل هذه الدالة ترجع لنا عدد الشموع الموجودة مسبقا وتضعها في متغير اسمه counted_bars ونوعه int
ولقد شرحت التصريح بالمتغيرات لو فهمته لفهمت علي الاقل نصف الكتابه
المهم ساخصص لهذ الدالة شرح وافي ان شاء الله لاكن في وقته
Qadri
25-11-2012, 01:22 PM
بارك الله فيك
تابع معنا وستجد ما تحتاج
علي كل هذه الدالة ترجع لنا عدد الشموع الموجودة مسبقا وتضعها في متغير اسمه counted_bars ونوعه int
ولقد شرحت التصريح بالمتغيرات لو فهمته لفهمت علي الاقل نصف الكتابه
المهم ساخصص لهذ الدالة شرح وافي ان شاء الله لاكن في وقته
شكرا علىالرد استاذنا اتمنى فقط الا تتاخر علينا نحن فى انتظار المزيد
tamer_taher22
25-11-2012, 01:41 PM
معك باذن الله
MOVING_AVERAGE
25-11-2012, 04:35 PM
شكرا علىالرد استاذنا اتمنى فقط الا تتاخر علينا نحن فى انتظار المزيد
ان شاء الله اخي كلما يتاح لي الوقت سانزل جزء
وانا لست استاذ انا مبتدء في الفوركس مثل الجميع اخي
MOVING_AVERAGE
25-11-2012, 10:40 PM
نكمل التعليقات لاكن الان نريد كتابة تعليق يضهر علي الشارت
يمكننا استخدام عدة وسائل منها
Comment("");
حيث نكتب بين القوسين اي نص نريد ان يضهر علي الشارت
ويمكننا ايضا ان نكتب قيمة متغير علي الشارت بوضع المتغير من دون اقواس في
Comment();
دائما نستخدم
Comment("");
داخل الدالة start
MOVING_AVERAGE
25-11-2012, 10:44 PM
تطبيق عملي
افتح صفحة برنامج جديد
واكتب علي الشارت الاسم الذي تريد ان تراه لما تتاجر
تطبيقي في المرفقات انتضر تطبيقاتكم
Qadri
26-11-2012, 12:44 AM
اتفضل وان شاء الله عشرة من عشرة
int start(){
comment("احذر التداول بالفوركس");
return (0);}
اعتقد ان return (0) افادت عدم تنفيذ الدالة مع كل تك .. صح ولا غلط؟
Qadri
26-11-2012, 12:46 AM
الدنيا متلخبطة ليه كده فى المشاركة؟ المشكلة دى تتحل ازاى؟
MOVING_AVERAGE
26-11-2012, 12:52 AM
اتفضل وان شاء الله عشرة من عشرة
int start(){
comment("احذر التداول بالفوركس");
return (0);}
اعتقد ان return (0) افادت عدم تنفيذ الدالة مع كل تك .. صح ولا غلط؟
تمام ماشاء الله عليك
لاكن لا تغير شئ في الدالة ستار اتركها كما هي
وضف فقط التعليق
MOVING_AVERAGE
26-11-2012, 12:54 AM
الدنيا متلخبطة ليه كده فى المشاركة؟ المشكلة دى تتحل ازاى؟
انتقل الي الوضع المتطور
ستجد فوق مكان كتابت النصوص ادراك كود php
اضغط عليه
واكتب المشاركت في وسط الكود لل PHP
او طرقة اخري
انتقل الي الوضع المتطور
اكتب الكود عادي
ثم ضلله واضغط علي ادرج كود php
MOVING_AVERAGE
26-11-2012, 06:43 PM
الرسم البياني ومفاتيحه
عند فتح منصت التداول سنلاحظ وجود رسومات مختلفه يمكن اختصارها في 3 انواع
الرسم البياني الخطي Liner chart
وهو الرسم البياني الذي يعبر فية عن سعر العملة على شكل خط تمثل كل نقطة سعر إغلاق العملة لكل فترة زمنية .
يعتبر أسلوب الرسم البياني الخطي هو أقل أنواع الرسوم البيانية استخداماً حيث يستأثر النوعان الآخران على
اهتمام أغلب المتاجرين لأن النوعين الآخرين يعطيان قدر أكبر وأدق وأوضح من المعلومات للمتاجر .
وفي الحقيقة لا يستخدم هذا النوع من الرسوم البيانية إلا قليلاً وبغرض الكشف عن
الأشكال patterns حيث أن الأشكال تظهر بشكل أوضح بهذا النوع من الرسوم البيانية .
MOVING_AVERAGE
26-11-2012, 06:49 PM
وهذا توضيح علي الشارت
http://www.fx-arabia.com/vb/uploaded/8190_01353944897.jpg
maasa
26-11-2012, 07:09 PM
شرح رائع و مستمر في المتابعة معك اخي الكريم
جزاك الله خيرا
( الواجب في المرفقات :1: )
MOVING_AVERAGE
27-11-2012, 11:30 PM
للاسف كما تعودت لا اهتمام
المهم انا اكمل الي ان امل واترك الموضوع
MOVING_AVERAGE
27-11-2012, 11:38 PM
الرسم البياني ذوالقضبان Bars chart
وهو الأسلوب الذي طورة المتاجرون ومازال شائعاً, حيث يتم التعبير عن حركة سعر عملة بشكل قضبان
فما هو القضيب وكيف يعبر عن حركة السعر ؟
يمثل القضيب وحدة واحدة من الفترة الزمنية التي تختارها .
سيمثل كل قضيب ساعة مثلا
أعلى القضيب يمثل أعلى سعر وصل إلية السعر خلال هذة الساعة .
أسفل القضيب يمثل أدنى سعر وصل إلية السعر خلال هذة الساعة .
الخط الصغير على يسار القضيب يمثل سعر الافتتاح وهو السعر الذي كان علية السعر عند بداية هذة الساعة
الخط الصغير على يمين القضيب يمثل سعر الإغلاق وهو السعر الذي كان علية السعر عند نهاية هذة الساعة
http://www.fx-arabia.com/vb/uploaded/8190_01354048670.jpg
MOVING_AVERAGE
27-11-2012, 11:41 PM
الرسم البياني ذو الشموع اليابانية Japanese candle stick chart
وهو أسلوب آخر للتعبير عن حركة السعر طوره المتاجرون اليابانيون منذ القرن السابع عشر في العقود المستقبلية لأسواق الأرز لذا فقد ارتبط اسمه بهم وهو الأسلوب
الأفضل والأكثر وضوحاً من الأسلوب السابق وقد أصبح هذا الأسلوب في التعبير عن الأسعار هو الأسلوب السائد في مختلف أنحاء العالم وففي كافة الأسواق المالية
والمفضل لدى أغلب المتاجرين
ماهي الشمعة اليابانية ؟
يمثل المستطيل جسم الشمعة ويمثل الخطان المتقابلان ذيل الشمعة
وتمثل كل شمعة وحدة واحدة من الفترة الزمنية المختارة , تماماً كالقضبان
والشمعة اليابانية تأتي على شكلين : صاعدة و هابطة
الشمعة الصاعدة : هي الشمعة التي يكون جسمها فارغاً وتعبر عن صعود في السعر حيث :
يمثل أسفل الجسم السعر الذي كانت علية العملة عند بداية الفترة الزمنية
ويمثل أعلى الجسم السعر الذي كانت علية العملة عند نهاية الفترة الزمنية
ويمثل الذيل الأعلى أعلى سعر وصلت إلية العملة خلال الفترة الزمنية نفسها
ويمثل الذيل السفلي أدنى سعر وصلت إلية العملة خلال الفترة الزمنية نفسها
ولأنها شمعة تعبر عن صعود السعر يكون السعر في نهاية الفترة ( سعر الإغلاق ) أعلى من السعر عند بداية الفترة ( سعر الافتتاح ) حيث أن السعر في صعود فهو بدأ
عند سعر وانتهى عند سعر أعلى
الشمعة الهابطة : هي الشمعة التي يكون جسمها مظللاً وتعبر عن انخفاض في السعر حيث :
يمثل أسفل الجسم السعر الذي كانت علية العملة عند نهاية الفترة الزمنية
ويمثل أعلى الجسم السعر الذي كانت علية العملة عند بداية الفترة الزمنية
ويمثل الذيل الأعلى أعلى سعر وصلت إلية العملة خلال الفترة الزمنية نفسها
ويمثل الذيل الأسفل أدنى سعر وصلت إلية العملة خلال الفترة الزمني نفسها
ولأنها شمعة تعبر عن هبوط السعر يكون السعر في نهاية الفترة ( سعر الإغلاق) أقل من السعر عند بداية الفترة (سعر الإفتتاح ) حيث السعر في هبوط فهو بدأ عند سعر
وانتهى عند سعر أقل
ليس شرطاً أن تكون الشمعة الصاعدة فارغه والشمعة الهابطة مظللة الجسم فأحياناً تكون الشمعة الصاعدة خضراء اللون والشمعة الهابطة حمراء اللون
كما يمكنك باستخدام برنامج الرسوم البيانية أن تختار اللون الذي يناسبك للشموع المهم إنه دائماً هناك فارق في الشكل بين الشمعة الصاعدة والشمعة الهابطة
ستكون في كل الحالات قادراً وبنظرة سريعة من التمييز بين الشمعة الصاعدة والهابطة وهذا هو المهم .
MOVING_AVERAGE
28-11-2012, 12:05 AM
في لغة MQ4 نعبر عن ما سبق كالتالي
سعر الافتتاح Open price
ينكننا تمثيل وكتابة سعر الافتتاح باحد الشكلين التاليين
double iOpen( string symbol, int timeframe, int shift)
حيث
string symbol
هذه الكلمة تعني اسم الشارت وهو عبارة عن متغير من نوع string
يكتب بين قوسين مزدوجين
مثلا "EURJPY"
نستطيع وضع في هذه الخانة اما اسم الشارت بين قوسين مزدزجين
او 0 وهي تعني ان المؤشر يعمل علي اي شارت
NULL وهي ايضا تعني ان المؤشر يعمل علي اي شارت
int timeframe
هذه الكلمة تعني اسم متغير من نوع صحيح وترمز للفريم الذي نعمل عليه
مثلا فريم الساعة او فريم 15 دقيقة
ويمكن كتابة في هذه الخانة
0 للعمل علي اي تايم فريم
PERIOD_M5 او 5 للعمل علي فريم 5 دقائق
PERIOD_M15 او 15 للعمل علي فريم 15 دقائق
PERIOD_M30 او 30 للعمل علي فريم 30 دقائق
PERIOD_H1 او 60 للعمل علي فريم 60 دقائق ساعة
PERIOD_H4 او 240 للعمل علي فريم 4 ساعات
PERIOD_D1 او 1440 للعمل علي فريم اليوم
PERIOD_W1 او 10080 للعمل علي فريم الاسبوع
PERIOD_MN1 او 43200 للعمل علي فريم الشهر
int shift
هذه الكلمة تعني متغير صحيح وهي ترمز لرقم الشمعة
حيث ان الشمعة الحالية يرمز لها بالرقم 0
والتي قبلها يرمز لها ب 1 وهكذا
بعض الامثلة
افتتاح شمعة الاسبوع الحالي علي شارت EURUSD
iOpen("EURUSD",PERIOD_W1,0);ارجوا طرح اي سؤال لمن لم يفهم لان هذه المعلومات تعتبر اساسيات ولن ارجع لها لما نتقدم في الدروس
bendar
28-11-2012, 12:14 AM
واصل بارك الله فيك . و انا اطالب بتثبيت هذا الموضوع . لاهميته و لسهولة شرحه
maasa
28-11-2012, 12:19 AM
واصل بارك الله فيك . و انا اطالب بتثبيت هذا الموضوع . لاهميته و لسهولة شرحه
اقتراح جميل اتمنى تنفيذه من ادارة المنتدى
استمر اخي الكريم MOVING_AVERAGE
MOVING_AVERAGE
28-11-2012, 04:16 PM
واصل بارك الله فيك . و انا اطالب بتثبيت هذا الموضوع . لاهميته و لسهولة شرحه
اقتراح جميل اتمنى تنفيذه من ادارة المنتدى
استمر اخي الكريم MOVING_AVERAGE
اهلا اخواني
هل كل شئ واضح حتي الان ؟؟؟؟
MOVING_AVERAGE
28-11-2012, 04:22 PM
الطريقة الثانية لكاتبة سعر الافتتاح
Open[];
حيث نضع بين المعقوفتين رقم الشمعة
وهذه الكتابة اختصار للكتابة السابقة
نستخدمها لما نبرمج مؤشر يعمل فقط مع الشموع الضاهرة علي الشارت مباشرتا
نفس الشئ بالنسبة للهاي واللو والكلوز
MOVING_AVERAGE
28-11-2012, 04:24 PM
تطبيق مباشر
برمج مؤشر يضهر في الشارت اعلي علي اليسار
سعر الافتتاح و سعر الاغلاق وسعر الهاي وسعر اللوي للشمعة السابقة
MOVING_AVERAGE
28-11-2012, 04:25 PM
فيه مفاجئة بعد هذا التطبيق
عمل مؤشر احترافي للسعر
maasa
28-11-2012, 07:30 PM
اهلا اخواني
هل كل شئ واضح حتي الان ؟؟؟؟
كله تمام و عشرة على عشرة :1:
maasa
28-11-2012, 07:59 PM
الواجب :1:
MOVING_AVERAGE
28-11-2012, 09:30 PM
الواجب :1:
مشاء الله عليك
تصحيح فقط لاستخدام Comment
لو اردت مثلا اضهار الكتابات تخت بعض لا تكتب هكذا
Comment("open=");
Comment(op);
Comment("close=");
Comment(cl);
Comment("high=");
Comment(hi);
Comment("low=");
Comment(lo);
Comment("open=",op," close=",cl," high=",hi," low=",lo," thanks mr moving average");
وانما استخدم الكلمة "\n"بين الكلمات لكل ترتبهم اسفل بعضهم لو نستخدمها علي تطبيقك يصبح
int start()
{
double op = Open[1];
double cl = Close[1];
double hi = High[1];
double lo = Low[1];
Comment("open=",op,"\n","close=",cl,"\n","high=",hi,"\n","low=",lo,"\n","you're welcome mr maasa");
//----
return(0);
}
//+------------------------------------------------------------------+
maasa
28-11-2012, 09:40 PM
مشاء الله عليك
تصحيح فقط لاستخدام Comment
لو اردت مثلا اضهار الكتابات تخت بعض لا تكتب هكذا
Comment("open=");
Comment(op);
Comment("close=");
Comment(cl);
Comment("high=");
Comment(hi);
Comment("low=");
Comment(lo);
Comment("open=",op," close=",cl," high=",hi," low=",lo," thanks mr moving average");وانما استخدم الكلمة "\n"بين الكلمات لكل ترتبهم اسفل بعضهم لو نستخدمها علي تطبيقك يصبح
int start()
{
double op = Open[1];
double cl = Close[1];
double hi = High[1];
double lo = Low[1];
Comment("open=",op,"\n","close=",cl,"\n","high=",hi,"\n","low=",lo,"\n","you're welcome mr maasa");
//----
return(0);
}
//+------------------------------------------------------------------+
شكرا على التصحيح استاذي و مستمر في متابعة هذه الدورة الرائعة جزاك الله كل الخير عنها
اخوك الصغير مصطفى
MOVING_AVERAGE
28-11-2012, 09:40 PM
بعدما تعرفنا علي 4 معلومات مهمة حول الشمعة
التطبيق القادم سيكون هكذا
http://www.fx-arabia.com/vb/uploaded/8190_01354127907.jpg
اضهار السعر في اي زاوية من زوايا الشاشة باي لون و باي حجم
Mohamed_Amr
29-11-2012, 12:34 AM
الله ينور اخى الحبيب
وان شاء الله متابع معاك
وبالتوفيق ياغالى
Mohamed_Amr
29-11-2012, 12:39 AM
بعدما تعرفنا علي 4 معلومات مهمة حول الشمعة
التطبيق القادم سيكون هكذا
http://www.fx-arabia.com/vb/uploaded/8190_01354127907.jpg
اضهار السعر في اي زاوية من زوايا الشاشة باي لون و باي حجم
اخى الحبيب قبل الانتقال الى هذا التطبيق
ياريت توضح ايضا كيف تغيير اللون والخط للتطبيق الاول
وكيف نجعل الهاى واللو وسعر الافتتاح لليومى فقط وعلى كل الفريمات
وبالتوفيق ياغالى
MOVING_AVERAGE
29-11-2012, 12:48 AM
اخى الحبيب قبل الانتقال الى هذا التطبيق
ياريت توضح ايضا كيف تغيير اللون والخط للتطبيق الاول
وكيف نجعل الهاى واللو وسعر الافتتاح لليومى فقط وعلى كل الفريمات
وبالتوفيق ياغالى
عند استعمال Comment
لا يمكننا حسب علمي التحكم في لون وحجم الخط
اما سعر الافتتاح لليومي فانا شرحتها بالتدقيق فيما سبق حاول ترجع فقط لشرح سعر الافتتاح وانت تجد كل شئ
ويمكننا كتابة
iOpen(0,PERIOE_D1,1);
iClose(0,PERIOE_D1,1);
iHigh(0,PERIOE_D1,1);
iLow(0,PERIOE_D1,1);
للشمعة السابقة
بالنسبة للشمعة الحالية اكتب 0 مكان 1
MOVING_AVERAGE
29-11-2012, 12:49 AM
في لغة MQ4 نعبر عن ما سبق كالتالي
سعر الافتتاح Open price
ينكننا تمثيل وكتابة سعر الافتتاح باحد الشكلين التاليين
double iOpen( string symbol, int timeframe, int shift)
حيث
string symbol
هذه الكلمة تعني اسم الشارت وهو عبارة عن متغير من نوع string
يكتب بين قوسين مزدوجين
مثلا "EURJPY"
نستطيع وضع في هذه الخانة اما اسم الشارت بين قوسين مزدزجين
او 0 وهي تعني ان المؤشر يعمل علي اي شارت
NULL وهي ايضا تعني ان المؤشر يعمل علي اي شارت
int timeframe
هذه الكلمة تعني اسم متغير من نوع صحيح وترمز للفريم الذي نعمل عليه
مثلا فريم الساعة او فريم 15 دقيقة
ويمكن كتابة في هذه الخانة
0 للعمل علي اي تايم فريم
PERIOD_M5 او 5 للعمل علي فريم 5 دقائق
PERIOD_M15 او 15 للعمل علي فريم 15 دقائق
PERIOD_M30 او 30 للعمل علي فريم 30 دقائق
PERIOD_H1 او 60 للعمل علي فريم 60 دقائق ساعة
PERIOD_H4 او 240 للعمل علي فريم 4 ساعات
PERIOD_D1 او 1440 للعمل علي فريم اليوم
PERIOD_W1 او 10080 للعمل علي فريم الاسبوع
PERIOD_MN1 او 43200 للعمل علي فريم الشهر
int shift
هذه الكلمة تعني متغير صحيح وهي ترمز لرقم الشمعة
حيث ان الشمعة الحالية يرمز لها بالرقم 0
والتي قبلها يرمز لها ب 1 وهكذا
بعض الامثلة
افتتاح شمعة الاسبوع الحالي علي شارت EURUSD
iOpen("EURUSD",PERIOD_W1,0);ارجوا طرح اي سؤال لمن لم يفهم لان هذه المعلومات تعتبر اساسيات ولن ارجع لها لما نتقدم في الدروس
راجع هذا الدرس ستفهم ان شاء الله
Fxcol
29-11-2012, 02:30 AM
عمل رائع أخي شكرا لك
فكر أخي أنه بعد سنوات قد يأتي من يستفيد من هذه الدروس
جزاك الله خيرا
mamz2006
29-11-2012, 06:43 AM
اخي موفنق حفظك الله
عمل وخدمة عظيمه
جزاك الله خيرا
فانت انسان معطاء
بارك الله فيك
MOVING_AVERAGE
29-11-2012, 03:46 PM
كيف نرسم كائنا برمجيا علي الشارت
في هذه المرحلة نستخدم الدالة
دوال الرسم
وهي دوال تسمح لنا بانشاء عدد من الرسومات عللي الشارت
الصيغة العامة للدالة تكون كالاتي
ObjectCreate( string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)
حيث
string name
هو اسم الكائن الذي نريد برمجته
int type
نوع الكائن الذي نريد برمجته
int window
رقم النافذة التي يضهر عليها الكائن
دائما نتركها 0 لما نريد الكائن يضهر علي شارت الشموع
datetime time1
هو وقت الشمعة التي نريد الرسم منها
double price1
سعر الشمعة التي نريد الرسم منها
MOVING_AVERAGE
29-11-2012, 04:13 PM
مختلف الرسومات تعتمد علي نوع الرسم اي الخانة الثانية في صيغة الدالة
تطبيقنا يضهر لنا كتابة معينة علي الشارت ولهذا الغرض نستعمل النوع التالي
OBJ_LABELوعند كتابة الدالة الرسومية ستكون كالتالي
ObjectCreate("Market_Signal_Label", OBJ_LABEL, 0, 0, 0);يعني اعطينا لها اسم
وحددنا النوع
وضعناها في النافذة الرئسية
جعلناها لا تتعلق بالوقت ولا السعر عند وضع في خاناتهم 0
وبما ان دالتنا لاضهار الكتابة لابد ان نتبعها بالدالة التالية
ObjectSetTextوالكتابة العامة لها تكون كا الاتي
ObjectSetText( string name, string text, int font_size, string font=NULL, color text_color=CLR_NONE)حيث
string name
اسم الكائن وهو نفسه الاسم السابق
string text
الكتابة التي نريد ان تضهر علي الشارت
int font_size
حجم الخط
string font=NULL
نوع الخط الذي نريد الكتابة به
color text_color=CLR_NONE
لون الخط
مثلا انا اريد الخط ان يكون كا التالي
يضهر لي عبارة moving
حجم الخط 27
نوع الخط
Times New Roman
لون الخط ازرق
ستكون الترجمة كا التالي
ObjectSetText("Market_Signal_Label", "moving", 27, "Times New Roman", Blue);
المؤشر النهائي لم يكنمل بعد
تطبيق عملي
برمج مؤشر يضهر اي كتابه علي الشارت باللون الاصفر
maasa
29-11-2012, 11:33 PM
شرح واضح جدا
الواجب
واحد باللون الازرق و التاني بالاصفر :1:
Qadri
30-11-2012, 01:40 AM
كده تاخدونى على خوانه وتشرحو حاجات كتير وانا غايب ! .. ماشى
هاذاكر اللى فاتنى وارجع لكم
MOVING_AVERAGE
01-12-2012, 11:31 AM
شرح واضح جدا
الواجب
واحد باللون الازرق و التاني بالاصفر :1:
تمام الحمد لله علي كل شئ
MOVING_AVERAGE
01-12-2012, 11:58 AM
الان لكي نجعل الكتابه في الزاوية نستعمل الدالة
ObjectSetحيث الكتابة العامة للدالة كا الاتي
ObjectSet( string name, int index, double value) string name
اسمة الكائن
int index
هنا فيه عدد كثير جدا من الاحتملات التي ممكن نطبقها علي الكائن مثل لون او حجم الكائن وغيرها
لايمكنني توضيح كل شئ هنا لانها التجربة خير وسيلة للتعلم
double value
قيمة التغير الذي نريده
بالتطبيق علي مثالنا السابق
سيصبح لدينا
ObjectSet("Market_Price_Label", OBJPROP_CORNER, 1);حيث
OBJPROP_CORNER
تعني اننا نريد وضع الكائن في الزاوية ولدينا 4 زوايا اعلي يمين او يسار و اسفل يمين او يسار
1
اخترنا زاوية من الزوايا الاربعة السابقة
جربو المثال بتغير القيمة من 0 الي 3 للحصول علي كل الزوايا
يجب اتباع ما سبق بالكتالبة التالية لتكون الكتابة في اقصي الزاوية
ObjectSet("Market_Price_Label", OBJPROP_XDISTANCE, 1);حيث
OBJPROP_XDISTANCE
البعد بالبيكسل بالنسبة ل x
ObjectSet("Market_Price_Label", OBJPROP_YDISTANCE, 1);البعد بالبكسل بالنسبة ل Y
الخلاصة
نضيف الي تطبيقنا السابق الكتابة التالية لتضهر الكتابة في زاوية معينة من الشارت
ObjectSet("Market_Price_Label", OBJPROP_CORNER, 1);ObjectSet("Market_Price_Label", OBJPROP_XDISTANCE, 1);ObjectSet("Market_Price_Label", OBJPROP_YDISTANCE, 1);لم ينتهي المؤشر بعد
انتضر تعديل مؤشراتكم
لمن يكتفي فقط بالقرائة انت بهذا تضطرني ان اتوقف عن الشرح
+ لا تنسو مستحقات الدورة الدعاء لي ولوالديا
mamz2006
02-12-2012, 02:40 AM
اخي موفنق
جزاك الله خير على هذه الدورة الجميلة
وعندي اقتراح ياليت ان يتم تطبيقه لتكون الامور اوضح واشمل والاقتراح هو :
ان تاتي باكسبرت معين من الاكسبرتات المتداولة وتقوم بشرحه سطر سطر ووظيفه وظيفه
وهكذا نتعلم كيف ترتبط الوظائف ببعضها وتسلسلها - يعني سيكون الشرح اشمل واوضح على اكسبرت جاهز تقوم بتشريحه هنا في موضوعك المميز هذا
وقد لا يحتوي الاكسبرت المعين على كل الوظائف ولكن يمكن من خبرتك ان تاتي باكثر من اكسبرت لشرح كل الوظائف التي تريد شرحها وهي في التطبيق الفعلي العملي في اكسبرت حي
وفقك الله وبارك فيك
MOVING_AVERAGE
02-12-2012, 12:39 PM
اخي موفنق
جزاك الله خير على هذه الدورة الجميلة
وعندي اقتراح ياليت ان يتم تطبيقه لتكون الامور اوضح واشمل والاقتراح هو :
ان تاتي باكسبرت معين من الاكسبرتات المتداولة وتقوم بشرحه سطر سطر ووظيفه وظيفه
وهكذا نتعلم كيف ترتبط الوظائف ببعضها وتسلسلها - يعني سيكون الشرح اشمل واوضح على اكسبرت جاهز تقوم بتشريحه هنا في موضوعك المميز هذا
وقد لا يحتوي الاكسبرت المعين على كل الوظائف ولكن يمكن من خبرتك ان تاتي باكثر من اكسبرت لشرح كل الوظائف التي تريد شرحها وهي في التطبيق الفعلي العملي في اكسبرت حي
وفقك الله وبارك فيك
يوجد مفاهيم كثيرة جدا مثل الحلقات التكرارية والدوال المختلفة لكي يتم برمجة اكسبريت
وانا واضع برنامج ينتقل من اسهل المفاهيم الي اصعبها
لو ندخل مباشرتا في الاكسبريت لا يمكنني شرح دالة بالتفصيل
maasa
02-12-2012, 07:24 PM
اخر تحديث للمؤشر
جربت OBJPROP_CORNER بس مجاش في المنطقة اللي عاوزها بالظبط فقعدت اجرب في المحاور X و Y لغاية ما وصلت لاقصى اليمين العلوي في الشارت ( مكان حلو لاظهار السعر :1: )
MOVING_AVERAGE
02-12-2012, 07:55 PM
اخر تحديث للمؤشر
جربت OBJPROP_CORNER بس مجاش في المنطقة اللي عاوزها بالظبط فقعدت اجرب في المحاور X و Y لغاية ما وصلت لاقصى اليمين العلوي في الشارت ( مكان حلو لاظهار السعر :1: )
ممتاز اخي ان شاء الله الاسبوع القادم نكمل هذ المؤشر ونبدء في مؤشر البيفوت اليومي وانهي به الدوال الرسومية
maasa
02-12-2012, 08:39 PM
ممتاز اخي ان شاء الله الاسبوع القادم نكمل هذ المؤشر ونبدء في مؤشر البيفوت اليومي وانهي به الدوال الرسومية
بارك الله فيك اخي الكريم و رزقك و والديك الفردوس الاعلى ان شاء الله
سمير محمد ارمان
03-12-2012, 03:32 AM
الان لكي نجعل الكتابه في الزاوية نستعمل الدالة
ObjectSetحيث الكتابة العامة للدالة كا الاتي
ObjectSet( string name, int index, double value) string name
اسمة الكائن
int index
هنا فيه عدد كثير جدا من الاحتملات التي ممكن نطبقها علي الكائن مثل لون او حجم الكائن وغيرها
لايمكنني توضيح كل شئ هنا لانها التجربة خير وسيلة للتعلم
double value
قيمة التغير الذي نريده
بالتطبيق علي مثالنا السابق
سيصبح لدينا
ObjectSet("Market_Price_Label", OBJPROP_CORNER, 1);حيث
OBJPROP_CORNER
تعني اننا نريد وضع الكائن في الزاوية ولدينا 4 زوايا اعلي يمين او يسار و اسفل يمين او يسار
1
اخترنا زاوية من الزوايا الاربعة السابقة
جربو المثال بتغير القيمة من 0 الي 3 للحصول علي كل الزوايا
يجب اتباع ما سبق بالكتالبة التالية لتكون الكتابة في اقصي الزاوية
ObjectSet("Market_Price_Label", OBJPROP_XDISTANCE, 1);حيث
OBJPROP_XDISTANCE
البعد بالبيكسل بالنسبة ل x
ObjectSet("Market_Price_Label", OBJPROP_YDISTANCE, 1);البعد بالبكسل بالنسبة ل Y
الخلاصة
نضيف الي تطبيقنا السابق الكتابة التالية لتضهر الكتابة في زاوية معينة من الشارت
ObjectSet("Market_Price_Label", OBJPROP_CORNER, 1);ObjectSet("Market_Price_Label", OBJPROP_XDISTANCE, 1);ObjectSet("Market_Price_Label", OBJPROP_YDISTANCE, 1);لم ينتهي المؤشر بعد
انتضر تعديل مؤشراتكم
لمن يكتفي فقط بالقرائة انت بهذا تضطرني ان اتوقف عن الشرح
+ لا تنسو مستحقات الدورة الدعاء لي ولوالديا
بارك الله فيك اخي الكريم و رزقك و والديك الفردوس الاعلى ان شاء الله
maasa
05-12-2012, 01:47 AM
up up
MOVING_AVERAGE
07-12-2012, 02:12 PM
نكمل ان شاء الله المؤشر
وصلنا الي اضهار الكتابة في اقصي زاوية
لاكن عند حذف المؤشر تبقي الكتابة ولا تحذف
نستعمل هنا الدالة التي تعمل لما نحذف المؤشر او نغير الفريم او العملة
يعني الدالة التي تبدء عملها لما ينتهي عمل المؤشر
وقد شرحناها سابقا وهي الدالة
int deinit()
{
return(0);
}وهي موجودة مسبقا في الكود البرمجي
نضع في هذه الدالة الامر التالي
ObjectDelete("");نضع داخل القوسين اسم الكائن الرسومي
وهذا الامر لمسح الكائن الرسومي بعد حذف المؤشر من الشارت
فيصبح الكود كا التالي
int deinit()
{
ObjectDelete("Market_Price_Label");
return(0);
}ناتي الي اخر شئ نريد وضع مثلا السعر مكان الكتابة
وهذه العملية تختاج معرفة دوال اخري
سنرجع لها لاحقا
الي هنا انتهي مؤشرنا
اي كتابة نريد ان تضهر علي الشارت يمكننا عمل مؤشر احترافي لها
بقي امكانية اضهار السعر او الوقت سنتطرق لها في وقتها
MOVING_AVERAGE
07-12-2012, 02:17 PM
ارجو من الاخوة برمجت المؤشر بانفسهم وسنفتح ورشة نضع فيها مؤشرات الاخوة التي برمجوها بانفسهم
اعرف ان القليل جدا مهتم بالموضوع
في انتضار مؤشر مكتمل يضهر كتابة علي الشارت في الزاوية
المؤشر التالي هو البيفوت اليومي
MOVING_AVERAGE
07-12-2012, 02:30 PM
قبل البدء في مؤشر البيفوت سنعرج علي العمليات الاولية في MQ4
الموضوع موجه للجميع من من ليس لديه اي حلفية في البرمجة الي من لديه خلفية
هذه التعريفات بسيطة بالنسبة لمن لديهم معرفة
MOVING_AVERAGE
07-12-2012, 02:37 PM
بعض العمليات التي نحتاجها
سنقوم بشرح بعض العمليات التي نقوم بها أثناء برمجة أي برنامج بلغة ام كيو فور
سنقوم بشرح الاهم منها و ليس كلها
قبل استخدام اي متحول يجب تعريف البرنامج عليه اولا
int A=5;
int B=3;
قبل البدء بالعملية نحتاج مكان ثالث لكي نضع فيه قيمة أي عملية لكي يحتفض المؤشر او الاكسبريت بالناتج
في الذاكرة الخاصة به
int D;
اذن اقل شئ نحتاج اليه لاجراء عملية حسابية هو 3 اماكن في الذاكرة
قيمة المتغير الاول + قيمة المتغير الثاني + ناتج العملية
يمكن للمتغير ان ياخذ مختلف الانواع
ممكن يكون int او double او string .....
وفي مثالنا اخذنا int
يجب ان يكون ناتج العملية من النوع المتجانس
فمثل من غير الممكن ان ناخذ المتغير الاول و الثاني من نوع double والنتيجة من نوع int
يجب الانتباه كثيرا هنا
MOVING_AVERAGE
07-12-2012, 02:40 PM
عملية الجمع بين قيمتين
d=A+B;
سيكون الناتج
d=8
والذي يحتفظ به البرنامج في ذاكرته ولن يظهره لنا الا في حالة أمرنا البرنامج بإظهاره
MOVING_AVERAGE
07-12-2012, 02:42 PM
عملية الضرب
d=A*B;
عملية الطرح
d=A-B;
MOVING_AVERAGE
07-12-2012, 02:47 PM
عملية القسمة
d=A/B;
وهنا يجب الانتباه جيدا جدا
القسمة عملية تكون ناتجها في اغلب الاحيان ليس رقم صحيح يعني دائما او اغلب الاحيان تكون القسمة ناتجها فيه فواصل
فيجب هنا الاحتياط عند تعريف المتغير d
يجب مراعاة شروط تنفيذ العمليات فمثلا لا نستطيع القسمة علي 0
وهذه تعتبر حالة حرجة في الرياضيات وتقودنا الي النهايات والدخول في اعماق علم الرياضيات
MOVING_AVERAGE
07-12-2012, 02:52 PM
نكتفي بهذه التعاريف حاليا
لاكن يبقي علينا معرفة الاولويات بين هذه العمليات
الاولوية بين العمليات
يجب الانتباه ان البرنامج يراعي الاولوية بين العمليات فالضرب والقسمة لهم اولوية علي الجمع والطرح
والاقواس لها اولوية علي جميع العمليات
لن اشرح بالتفصيل هنا وساترككم تجتهدون وتسالون عن ما لم تفهموا
في انتضار اي اسئلة
مهم جدا ان تعرف الاولوية بين العمليات لانها اساس عملنا كله
لن اشرح هذه الاولوية عند التقدم في الدروس
اكرر في انتضار اي سؤال
maasa
07-12-2012, 07:10 PM
عودا حميدا استاذي . اشتقنا لك
في المرفقات المؤشر بنسخته الاخيرة كما طلبت
اما بالنسبة للعمليات فالشرح واضح و سهل جدا
MOVING_AVERAGE
08-12-2012, 12:38 AM
البيفوت اليومي
ماهو البيفوت
هو خط يحترمه السعر ويعتبره اما مقاومة او دعم
سمي يومي لانه يعتمد علي معطيات الفريم اليومي
هناك بيفوت اسبوعي او شهري وحي سنوي وكلها تبرمج بنفس الطريقة مع تغير المعطيات للفريم المذكور
هناك عدة طرق لحساب البيفوت اليومي لاكن اشهرها الطريقة التي سندرسها
طرقة حساب البيفوت اليومي
نفرض ان البيفوت نرمز له ب P
بينات اليوم السابق التي نحتاجها هي
الاغلاق
double close=iClose(0,PERIOD_D1,1);
الهاي
double high=iHigh(0,PERIOD_D1,1);
اللو
double low=iLow(0,PERIOD_D1,1);
هذه هي المعطيات التي نحتاجها
MOVING_AVERAGE
08-12-2012, 12:41 AM
طريقة حساب البيفوت اليومي
P=(close+high+low)/3
بعدما حصلنا علي قيمة البيفوت اليومي
نرسم خط يمثل لنا هذه القيمة علي الشارت
ونستخدم دوال الرسم التي تطرقنا اليها سابقا
MOVING_AVERAGE
08-12-2012, 12:54 AM
لرسم الخط الافقي نستخدم الدالة التالية ( مشروحة سابقا )
ObjectCreate
وفي الخانة الثانية للدالة
نستخدم الاختيار
OBJ_HLINE
ونستخدم السعر الذي يرسم منه هو P
والوقت الذي يرسم منه ونستخدم هنا اي وقت لان الخط الافقي يتعلق بالسعر فقط
ساستخدم الوقت
datetime t=iTime(0,PERIOD_D1,0);
بعد هذا المؤشر سنتطرق الي الوقت بالتفصيل
فيكون الكود البرمجي كا التالي لرسم خط
ObjectCreate("p",OBJ_HLINE,0,t,p);
نريد تلوين الخط مثلا بالاصفر نستخدم الدالة
ObjectSet
ونستخدم في الخانة الثانية
OBJPROP_COLOR
ويكون الكود البرمجي كا التالي
ObjectSet("p",OBJPROP_COLOR,Yellow);
في انتضار برمجت مؤشركم للنسخة الاولية
ثم نضيف الدعوم والمقاومات
اي اسئلة لا تترددوا
maasa
08-12-2012, 10:03 AM
المؤشر :1:
MOVING_AVERAGE
08-12-2012, 03:18 PM
المؤشر :1:
ممتاز ماشاء الله استعملة كل شئ وهذا هو المطلوب
ننتقل الي الدعوم والمقاومات تحسب كا التالي
r المقاومة
s الدعم
double r1=2*p-l;
double s1=2*p-h;
double r2=p+(r1-s1);
double r3=h+2*(p-l);
double s2=p-(r1-s1);
double s3=l-2*(h-p);
اكمل المؤشر ويصبح عندك مؤشر بيفوت من صنع محلي
:1 (43):
MOVING_AVERAGE
08-12-2012, 03:20 PM
l هي اللو Low
h هي الهاي High
maasa
08-12-2012, 08:14 PM
عملت كل حاجه تقريبا بس مش بيظهر غير البايفوت الاساسي :1 (75):
MOVING_AVERAGE
08-12-2012, 08:50 PM
عملت كل حاجه تقريبا بس مش بيظهر غير البايفوت الاساسي :1 (75):
هل انت متاكد انا حملت تطبيقك ووجدت الخطوط عادي ؟؟؟؟؟
MOVING_AVERAGE
08-12-2012, 08:52 PM
احذف ملف
6.ex4
اغلق المنصة ثم اعد المحاولة
maasa
08-12-2012, 10:10 PM
احذف ملف
6.ex4
اغلق المنصة ثم اعد المحاولة
كده تمام . شكرا باشمهندس :1:
مؤشر بايفوت صنع محلي :1 (64):
http://www.fx-arabia.com/vb/<a href=http://www.0zz0.com target=_blank>[img]http://www3.0zz0.com/2012/12/08/19/229290940.pnghttp://www3.0zz0.com/2012/12/08/19/229290940.png (http://www.0zz0.com)
Qadri
09-12-2012, 02:41 PM
السلام عليكم ورحمة الله
كيف حالك استاذ موفينج
مرفق مؤشر البيفوت قبل اضافة الدعوم والمقاومات ارجو ان تلفى عليه نظرة
عندىبعض الاسئلة ارجو ان يتسع صدرك لها:
انا اضفت اختيار اللون كمتغير خارجى وكذلك نوع الخط ولكنهم يظهرات كارقام فى نافذة الاختيار عند تشغيل المؤشر فما الخطا؟
السؤال الثانى البياتات التى يعتمد عليها المؤشر لا تتغير مع كل تك وبالتالى لسنا بحاجة الي دالة استارت فهل هذا صحيح؟
السؤال الاخير الا يوجد دليل بانواع اخطاء البرمجة التى يعطيها البرنامج ومقترحات حلولها؟
ان شاء الله سارفق المؤشر بعد اضافة الدعوم والمقاومات فى مشاركة اخرى
شكرا لك
Mohamed_Amr
31-12-2012, 01:05 AM
نتمنى الاستمرار اخى موفينج
وبالتوفيق
حسام ممدوح الصواف
01-01-2013, 11:28 PM
الله يبارك فيك و يرحم والديك و والدي رحمةواسعةودائمة
MOVING_AVERAGE
01-01-2013, 11:59 PM
السلام عليكم ورحمة الله
كيف حالك استاذ موفينج
مرفق مؤشر البيفوت قبل اضافة الدعوم والمقاومات ارجو ان تلفى عليه نظرة
عندىبعض الاسئلة ارجو ان يتسع صدرك لها:
انا اضفت اختيار اللون كمتغير خارجى وكذلك نوع الخط ولكنهم يظهرات كارقام فى نافذة الاختيار عند تشغيل المؤشر فما الخطا؟
السؤال الثانى البياتات التى يعتمد عليها المؤشر لا تتغير مع كل تك وبالتالى لسنا بحاجة الي دالة استارت فهل هذا صحيح؟
السؤال الاخير الا يوجد دليل بانواع اخطاء البرمجة التى يعطيها البرنامج ومقترحات حلولها؟
ان شاء الله سارفق المؤشر بعد اضافة الدعوم والمقاومات فى مشاركة اخرى
شكرا لك
وعليكم السلام ورحمة الله وبركاته
بعد الاطلاع علي تطبيقك فيه اخضاء خطيرة جدا
اولا الكود كما قلت يكتب داخل الدالة start لانها تتغير مع الوقت ولا يكتب داخل الدالة init
double close = iClose(0,PERIOD_D1,1);هذا الكود ليس صحيح اخي ينقصك 0 بعد 0 الاول
راجع الدروس
بالطبع اخي اللون سيضهر متغير صحيح لانك كتبت هذا
extern int pcolor = Yellow ;ونحن قلنا ان اللون متغير من نوع color
في مكان int ضع color
نوع الخط
extern int pcolormode = STYLE_SOLID;هذا الكود غير صحيح انت عرفت متغير من نوع int صحيح ثم اسندت اليه حروف ?????
راجع الدروس اخي
البينات التي يعتمد عليها المؤشر تتغير اخي لما يتغير اليوم
هي بينات تعتمد علي اغلاق وافتتاح وهاي ولو اليوم السابق لذا تحتاج 24 ساعة لتتغير
بعدما تنهي كتابة الكود اضغط علي compiler فيعطيك الاخضاء التي وقعت فيها
تصحيحها يعتمد علي مدي تمكنك من لغة البرمجة
بانتضار تصحيح اخطائك وارفاق المؤشر
MOVING_AVERAGE
02-01-2013, 12:01 AM
نتمنى الاستمرار اخى موفينج
وبالتوفيق
ان شاء الله اخي
واسف للتاخر في الرد كنت مشغول بتطوير بعض المؤشرات
MOVING_AVERAGE
02-01-2013, 12:03 AM
الله يبارك فيك و يرحم والديك و والدي رحمةواسعةودائمة
بارك الله فيك اخي ورحم الله جميع موتي المسلمين
والله ردك هو من جعلني اعود للموضوع
NTTnightmare
04-01-2013, 04:16 PM
السلام عليكم
شكرا أخ موفنج على الورشة الجميلة بالتوفيق
حسام ممدوح الصواف
04-01-2013, 09:25 PM
أنا يا أخى مبتدئ فىالفوركس وحتىالآن لم أحقق مكاسب وأخضى أنيصيبنى اليأس من المكسب وانا كبير فىالسن 47 سنة ولدى أولادفى الجامعةوكنت ارجوان يرزقنى الله منالفوركس اىدخل إضافى فهل أكرمك الله تساعدنى وتضع يدى على اول الطريق لقدانزلت كافةفديوهات الدكتور اسامةواستفدت منها كثير جدا ولكن اريد ان ابدأ بتوجهات من سيادتك تعلمالبرمجة يمكن يكون ربنا كاتب لىفيها خير الله يجازيككل خير أخوك المهندس حسام الصواف (إنشائى) و\احب الكومبيوتر و أنكانجهازى قديم جدا ومحتاج اغير الكى بورد ضرورى
MOVING_AVERAGE
04-01-2013, 10:28 PM
أنا يا أخى مبتدئ فىالفوركس وحتىالآن لم أحقق مكاسب وأخضى أنيصيبنى اليأس من المكسب وانا كبير فىالسن 47 سنة ولدى أولادفى الجامعةوكنت ارجوان يرزقنى الله منالفوركس اىدخل إضافى فهل أكرمك الله تساعدنى وتضع يدى على اول الطريق لقدانزلت كافةفديوهات الدكتور اسامةواستفدت منها كثير جدا ولكن اريد ان ابدأ بتوجهات من سيادتك تعلمالبرمجة يمكن يكون ربنا كاتب لىفيها خير الله يجازيككل خير أخوك المهندس حسام الصواف (إنشائى) و\احب الكومبيوتر و أنكانجهازى قديم جدا ومحتاج اغير الكى بورد ضرورى
ان شاء الله يا اخي تجد كل ما تحتاجه للتتعلم برمجة المؤشرات
اطلب او اسئل ما شئت وان شاء الله البي واجيب استفسراتك
MOVING_AVERAGE
04-01-2013, 10:30 PM
السلام عليكم
شكرا أخ موفنج على الورشة الجميلة بالتوفيق
بارك الله فيك اخي
وشكرا علي المرور العطر
MOVING_AVERAGE
04-01-2013, 10:35 PM
نكمل ان شاء الله الدورة
MOVING_AVERAGE
04-01-2013, 10:45 PM
قبل الدخول في المراحل القادمة لا بد من معرفة بعض الاساسيات المهمة
من بين هته الاساسيات المهمة العمليات التالية
MOVING_AVERAGE
04-01-2013, 10:51 PM
عملية الزيادة والتي نرمز لها ب
A++
حيث ان هذه الكتابة تعني زيادة قيمة 1 الي القيمة السابقة ل A
تفسير مبسط
اذا كانت قيمة A مثلا = 5
بعد كتابة
A++
تصبح قيمة A = 6
نفس الشئ بالنسبة لعملية الطرح
نستخدم الكتابة
A--
ومثل ما سبق تتغير قيمة A وتنقص ب 1
MOVING_AVERAGE
04-01-2013, 11:06 PM
عمليات المقارنة
وهي العمليات التي نستخدمها للمقارنة بين قيم المؤشرات
وهي اساس عمل اي مؤشر او اكسبريت
عملية المقارنة المساواة
وهذه العملية للمقارنة بين قيمتين اذا كانت الناتج صحيح ترجع لنا 1
واذا كان خاطئ ترجع لنا 0
كيف نستخدمها
الكتابة البرمجية للمقارنة المساواة كا التالي
A==Bوستفهم هذه العملية اكثر لما ندخل في الحلقة الشرطية
عملية المقارنة عدم المساواة
وهي لمقارنة عدم مساوات قيمتين
الكتابة البرمجية لها كالتالي
A!=Bعملية المقارنة اصغر
للمقارنة بين اصغر قيمتين
الكتابة البرمجية لها كالتالي
A<Bعملية المقارنة اصغر او يساوي
تجمع بين مقارنة اصغر قيمة او تساوي القيمتين
الكتابة البرمجية لها كالتالي
A<=Bعملية المقارنة اكبر
للمقارنة بين اكبر قيمتين
الكتابة البرمجية لها كالتالي
A>Bعملية المقارنة اكبر او يساوي
تجمع بين مقارنة اكبر قيمة او تساوي القيمتين
الكتابة البرمجية لها كالتالي
A>=Bفي انتضار اي استفسار قبل الدخول في الدالة الشرطية if
MOVING_AVERAGE
05-01-2013, 03:57 PM
قبل الدخول الي الدالة الشرطية if
نعرج علي شئ مهم جدا في عمليات المقارنة
المقارنة تحدث بين قيمتين او اكثر
فاذا كانت المقارنة بين 3 قيم مثلا
فمن المهم هنا الربط بين عمليات المقارنة
ومن ادوات الربط نستخدم التالي
اول اداة
&&
لربط عمليات المقارنة مع بعضها في نفس الوقت
وعملها مثل عمل حرف الواو في اللغة العربية
الربط بين عمليتين في نفس الوقت
اذا تحققت واحدة فقط فان الدالة ترجع لنا خطئ لان الربط لم يتحقق
وليكون الربط صحيح يشترط ان تتحقق العمليتين معا
ثاني اداة
||
لتنفيذ عملية علي الاقل من عمليات المقارمة
فان كانت عملية واحدة صحيحة فان الدالة ترجع لنا قيمة صحيحة
وعملها مثل عمل حرف او في اللغة العربية
ثالث اداة
!
وهي اداة لنفي العملية او عدم تحقق الشرط الذي بعدها
هي مثل حرف لا في اللغة العربية
في انتضار اي اسئلة
MOVING_AVERAGE
09-01-2013, 12:54 PM
ندخل ان شاء الله في الجملة الشرطية if
الجملة الشرطية if نستخدمها اذا اردنا تنفيذ عملية ما بعد او اثناء تحقق شرط معين
الهيكل العام للجملة الشرطية if يكون كالتالي
if()
لاتوجد نقطة فاصلة بعد قوسين الجملة if
نضع الشرط الذي نريد العمل بعده داخل اقواس الجملة if
نضع التنفيذ الشرط مباشرة بعد الجملة if
اذا كان تنفيذ الشرط فيه عدة سطور
نضعه بين حافضتين
ويصبح الهيكل النهائي ل if كالتالي
if(الشرط نضعه هنا )
{
جواب
}
في انتضار اي استفسار قبل البدء في امثلة if
NTTnightmare
09-01-2013, 01:24 PM
نتمنى الاستمرار اخى موفينج ويريت لو تعمل أمتلة لخطوط طول و عرض تتكون من 2 أو 3 شموع إذا أمكن
وبالتوفيق :1 (29):
MOVING_AVERAGE
09-01-2013, 02:15 PM
نتمنى الاستمرار اخى موفينج ويريت لو تعمل أمتلة لخطوط طول و عرض تتكون من 2 أو 3 شموع إذا أمكن
وبالتوفيق :1 (29):
ان شاء الله اخي سنكمل الدروس حتي الاحتراف
لم افهم طلبك اخي
خطوط علي اي اساس
+ ما نوع الخطوط افقية عمودية مائلة ؟؟؟؟
NTTnightmare
09-01-2013, 02:55 PM
بنسبة لفكرة المؤشر يرسم
خط ترند يتكون من
شمعتين high-close يساوي عدد من نقط وclose>open
المؤشر يرسم فقط على الشموع القريبة لنقل يومين
جزاك الله خيرا
MOVING_AVERAGE
10-01-2013, 04:09 PM
بنسبة لفكرة المؤشر يرسم
خط ترند يتكون من
شمعتين high-close يساوي عدد من نقط وclose>open
المؤشر يرسم فقط على الشموع القريبة لنقل يومين
جزاك الله خيرا
طلبك غير واضح اخي
علي كل هذا موضوع تعليم البرمجة لو تريد طلب مؤشر افتح موضوع واطلب فيه المؤشر مع الشرح بالتفصيل وبالصور
MOVING_AVERAGE
13-01-2013, 04:44 PM
نتابع ان شاء الله
استخدام الجملة if
مثال 1
اكتب برنامج بلغة mq4 يضهر علي الشارت رسالة مكتوب فيها نوع الشمعة السابقة
سانتضر اي محاولات ثم اكتب البرنامج ان شاء الله
مساعدة في كتابة البرنامج
نحتاج افتتاح واغلاق الشمعة لمعرفة نوعها
نحتاج عمليات المقارنة بين الافتتاح والاغلاق
نحتاج اضهار النتيجة علي الشارت
gozila
13-01-2013, 10:00 PM
لو سمحت لو عايز احدد ان
range bar الحالي اصغر او اكبر من اللي قبله
ممكن المساعدة
MOVING_AVERAGE
14-01-2013, 03:36 PM
لو سمحت لو عايز احدد ان
range bar الحالي اصغر او اكبر من اللي قبله
ممكن المساعدة
بالطبع اخي شئ بسيط جدا
اولا شئ لابد ان تفهم ماهو range
اذا كنت تقصد طول الشمعة كاملا يعني الفرق بين high و low
نستنتج ان
range=high-low
لكي نحسب range لابد ان تكون المتغيرات high و low ثابتة في الشمعة المحددة
يعني لا نستطيع حساب range الشمعة الحالية لانه متغير وغير ثابة
ممكن نحسب range الشمعة السابقة والتي قبل السابقة ونقارن بنهم
اذا كنت تقصد range للشموع لفترة زمنية محدد فهذا الامر يدخل فيه متغيرات للشمعة لم نصل اليها بعد
بما ان الموضوع تعليمي ياريت تحاول عمل المطلوب وساصحح لك الاخطء اخي
ان كنت تريد المؤشر اطلبه في موضوع منفصل
وياريت توضح الفكرة من استخدام الرنج علي الشارت ليستفيد الجميع
MOVING_AVERAGE
14-01-2013, 03:48 PM
نتابع ان شاء الله
استخدام الجملة if
مثال 1
اكتب برنامج بلغة mq4 يضهر علي الشارت رسالة مكتوب فيها نوع الشمعة السابقة
سانتضر اي محاولات ثم اكتب البرنامج ان شاء الله
مساعدة في كتابة البرنامج
نحتاج افتتاح واغلاق الشمعة لمعرفة نوعها
نحتاج عمليات المقارنة بين الافتتاح والاغلاق
نحتاج اضهار النتيجة علي الشارت
للاسف لم يحاول احد
المهم الحل هو كالتالي
open=Open[1];
close=Close[1];
if(open<close)
Comment("bar up ");
if(open>close)
Comment("bar down ");
MOVING_AVERAGE
14-01-2013, 04:01 PM
الشكل المكملة للجملة if
كما لا حظنا في المثال السابقة استخدمنا جملتين if
الاولي للشرط الاول
والثانية للشرط الثاني
ولاكن ممكن الاستغناء عن استعمال جملتين
لما يكون لدين شرطين او اكثر متعلقين ببعضهم
في هذه الحالة نستخدم
elseعوض استخدام الشرط الثاني
تطبيق عملي اكتب المثال السابق باستخدام التكملة else
ملاحضة
ليس خطئ ان تخطئ في التطبيق الخطئ ان لا تحاول التطبيق
وكل الناس تخطئ في البداية ثم يصبح الامر من البديهيات بالنسبة لك
ياريت الجميع يحاول
gozila
14-01-2013, 06:32 PM
اشكر حضرتك جدا علي سرعة الرد
لكن كنت عايز اعرف ازاي اكتب ان الهاي ناقص اللو للشمعة الحالية اصغر من الهاي ناقص اللو للشمعة السابقة
MOVING_AVERAGE
14-01-2013, 07:01 PM
اشكر حضرتك جدا علي سرعة الرد
لكن كنت عايز اعرف ازاي اكتب ان الهاي ناقص اللو للشمعة الحالية اصغر من الهاي ناقص اللو للشمعة السابقة
اخي ياريت ترجع لاول الدروس انا شرحت كل شئ وبطريقة بسيطة
وان لم تفهم ساعيد لك الشرح حتي تفهم كيف تكتب هذا الشرط
MOVING_AVERAGE
14-01-2013, 07:04 PM
في لغة MQ4 نعبر عن ما سبق كالتالي
سعر الافتتاح Open price
ينكننا تمثيل وكتابة سعر الافتتاح باحد الشكلين التاليين
double iOpen( string symbol, int timeframe, int shift)
حيث
string symbol
هذه الكلمة تعني اسم الشارت وهو عبارة عن متغير من نوع string
يكتب بين قوسين مزدوجين
مثلا "EURJPY"
نستطيع وضع في هذه الخانة اما اسم الشارت بين قوسين مزدزجين
او 0 وهي تعني ان المؤشر يعمل علي اي شارت
NULL وهي ايضا تعني ان المؤشر يعمل علي اي شارت
int timeframe
هذه الكلمة تعني اسم متغير من نوع صحيح وترمز للفريم الذي نعمل عليه
مثلا فريم الساعة او فريم 15 دقيقة
ويمكن كتابة في هذه الخانة
0 للعمل علي اي تايم فريم
PERIOD_M5 او 5 للعمل علي فريم 5 دقائق
PERIOD_M15 او 15 للعمل علي فريم 15 دقائق
PERIOD_M30 او 30 للعمل علي فريم 30 دقائق
PERIOD_H1 او 60 للعمل علي فريم 60 دقائق ساعة
PERIOD_H4 او 240 للعمل علي فريم 4 ساعات
PERIOD_D1 او 1440 للعمل علي فريم اليوم
PERIOD_W1 او 10080 للعمل علي فريم الاسبوع
PERIOD_MN1 او 43200 للعمل علي فريم الشهر
int shift
هذه الكلمة تعني متغير صحيح وهي ترمز لرقم الشمعة
حيث ان الشمعة الحالية يرمز لها بالرقم 0
والتي قبلها يرمز لها ب 1 وهكذا
بعض الامثلة
افتتاح شمعة الاسبوع الحالي علي شارت EURUSD
iOpen("EURUSD",PERIOD_W1,0);ارجوا طرح اي سؤال لمن لم يفهم لان هذه المعلومات تعتبر اساسيات ولن ارجع لها لما نتقدم في الدروس
حاول تفهم اخي هذا الدرس
ان تمكنت من فهمه سيسهل عليك كتابة الشرط
MOVING_AVERAGE
15-01-2013, 01:06 PM
للاسف لم يحاول احد
المهم الحل هو كالتالي
open=Open[1]; close=Close[1]; if(open<close)
Comment("bar up ");if(open>close)Comment("bar down ");
حل المثال بتطبيق else
نترك الشرط الاول عادي
بنا اننا برمجناه يعني نعرف معني الكتابة التي وضعناها
متي تكوزن الشمعة صاعدة ؟؟؟؟
تكون الشمعة صاعدة اذا كان اغلاق الشمعة اكبر من افتتاحها
وهذا هو الشرط الاول الذي وضعناه
اذا لم يتحقق الشرط الاول منطقيا
اما الاغلاق مساوي للافتتاح وهذا سناخذه في اخر كتابه للجملة if نتجاهله الان
واما ان يكون الاغلاق اصغر من الافتتاح وهذا الشرط يعني انا الشمعة نازلة
عند استخدام esle نحن نقصد اما افعل الشرط الاول if
else وفي حالة لم يتحقق الشرط الاول افعل كذا
برمجيا
open=Open[1];
close=Close[1];
if(open<close)
Comment(bar up);
else
Comment(bar down);
MOVING_AVERAGE
15-01-2013, 01:14 PM
اخر كتابه للجملة الشرطية if
اذا كان جواب الشرط له اكثر من احتمال
هنا نقوم بتجزئة الجواب الي عدة مراحل
ويتم هذا باستخدام
else if يعني اذا لم يتحقق الشرط الاول
ناخذ فقط جزء من باقي جواب الشرط ونضع عليه امر
تطبيق عملي للمثال السابق
المثال السابق فيه ثلاث حلات
الاولي الشمعة صاعدة
برمجيا
open=Open[1];close=Close[1];if(open<close)Comment(bar up);ناخذ جزء فقط من جواب الشرط للشمعة النازلة
else if(open>close)Comment(bar down);ناخذ باقي جواب الشرط
else Comment("open=close" );
MOVING_AVERAGE
15-01-2013, 01:18 PM
في انتضار الاسئلة التي لن تاتي بالطبع
الجملة الشرطية التالية هي الجملة
switch
ayoob
15-01-2013, 10:23 PM
السلام عليكم اخي الكريم ولله الان كيف شاهدة الموضع وجاري المتابعة من اول الصفحة وتحضير الاسئلة
ayoob
16-01-2013, 01:41 AM
الله يرحم والديك اخي عندي سؤل ان قمت بعمل اكسبيرات للماكد ولكن اريد ان اعرف كيفية تعريف حجم اللوت و الستوب والهدف في الدلة start #property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int StopLoss=20;
extern int TakeProfit=20;
extern double Lot=0.10;
extern int MagicNumber=15000;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Open price
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double m1,m2,m3,m4;
double SL,TP;
m1=iMACD("EURUSD",5,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
m2=iMACD("EURUSD",5,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
{
if(m2<0&&m1>0)
OrderSend(Symbol(),OP_BUY,Lot,Ask,33,TP,SL,"AYOOB",MagicNumber,0,Green);
}
if(m2>0&&m1<0){
OrderSend(Symbol(),OP_SELL,Lot,Bid,33,TP,SL,"AYOOB",MagicNumber,0,Red);
}
}
//----
return(0);
MOVING_AVERAGE
16-01-2013, 02:58 AM
الله يرحم والديك اخي عندي سؤل ان قمت بعمل اكسبيرات للماكد ولكن اريد ان اعرف كيفية تعريف حجم اللوت و الستوب والهدف في الدلة start #property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int StopLoss=20;
extern int TakeProfit=20;
extern double Lot=0.10;
extern int MagicNumber=15000;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Open price
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double m1,m2,m3,m4;
double SL,TP;
m1=iMACD("EURUSD",5,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
m2=iMACD("EURUSD",5,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
{
if(m2<0&&m1>0)
OrderSend(Symbol(),OP_BUY,Lot,Ask,33,TP,SL,"AYOOB",MagicNumber,0,Green);
}
if(m2>0&&m1<0){
OrderSend(Symbol(),OP_SELL,Lot,Bid,33,TP,SL,"AYOOB",MagicNumber,0,Red);
}
}
//----
return(0);
اخي نحن لم نصل بعد الي الاكسبريت مازلنا في المؤشرات لاكن لانك سددت ثمن الدور اليك الجواب
اول شئ نضع هذا الكود في الدالة init للتعامل مع البروكر 4 و 5 ارقام
double point;
int digits,Q;
ثم
int init()
{
Firstlot=Lots ;
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);
}
MOVING_AVERAGE
16-01-2013, 03:05 AM
داخل الدالة start
نعرف متغيرين
double SL,TP;
ثم داخل اقواس الشرط نضع
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
بالنسبة لعملية buy
و نضع داخل اقواس الشرط الثاني
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
MOVING_AVERAGE
16-01-2013, 03:09 AM
بالنسبة للوت انت عرفته في اول البرنامج ولا تحتاج تعريفه مرة اخري
MOVING_AVERAGE
16-01-2013, 03:10 AM
لو تريد شرح الاكواد بالتفصيل الممل انا حاضر
MOVING_AVERAGE
16-01-2013, 08:54 PM
قبل الدخول في الجملة الشرطية switch
نتطرق اولا الي الكلمة
Break;
هذه الكلمة توضع لانهاء الشرط والخروج الفوري من الحلقة
ayoob
16-01-2013, 08:59 PM
لو تريد شرح الاكواد بالتفصيل الممل انا حاضر
اهلا اخي بارك لله فيك علي ما تقدمة ياريت بس شوية شرح في جزء تعريف الستوب في الدلة Start
MOVING_AVERAGE
16-01-2013, 09:05 PM
اهلا اخي بارك لله فيك علي ما تقدمة ياريت بس شوية شرح في جزء تعريف الستوب في الدلة Start
انا شرحت لك اخي كيف تضيف الستوب لوز والتيك بروفيت
لا اعرف اين الاشكال بالتحديد
MOVING_AVERAGE
16-01-2013, 09:07 PM
اهلا اخي بارك لله فيك علي ما تقدمة ياريت بس شوية شرح في جزء تعريف الستوب في الدلة Start
ارفق الكود الذي كتبته والاشكال الذي وقعت فيه ليكون الشرح مختصر ومفيد اكثر
ayoob
17-01-2013, 04:23 PM
بارك لله فيك اخي هد هو الكواد وان شاء لله يكون صحيح
extern int StopLoss=0;
extern int TakeProfit=0;
extern double Lot=0.1;
extern int MagicNumber=14000;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Open price
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
{
double SL,TP;
double MACD=iMACD("EURUSD",PERIOD_M15,12,26,9,MODE_CLOSE,MODE_MAIN,0);
double MACD1=iMACD("EURUSD",PERIOD_M15,12,26,9,MODE_CLOSE,MODE_MAIN,1);
if(MACD<0&&MACD1>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,33,SL,TP,"AYOOB",MagicNumber,0,Green);
}
if(MACD>0&&MACD1<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,33,SL,TP,"AYOOB",MagicNumber,0,Red);
}
}
//----
return(0);
ayoob
18-01-2013, 01:18 AM
السلام عليكم هد تطبيق لي مؤشر البيفوات :1 (77):
double HI=iHigh(0,PERIOD_D1,1);
double CL=iClose(0,PERIOD_D1,1);
double LW=iLow(0,PERIOD_D1,1);
double Pivot=(CL+HI+LW)/3;
double R1=2*Pivot-LW;
double S1=2*Pivot-HI;
double R2=Pivot+(R1-S1);
double R3=HI+2*(Pivot-LW);
double S2=Pivot-(R1-S1);
double S3=LW-2*(HI-Pivot);
datetime t=iTime(0,PERIOD_D1,0);
ObjectCreate("Pivot",OBJ_HLINE,0,t,Pivot);
ObjectSet("Pivot",OBJPROP_COLOR,Yellow);
ObjectCreate("R1",OBJ_HLINE,0,t,R1);
ObjectSet("R1",OBJPROP_COLOR,Red);
ObjectCreate("R2",OBJ_HLINE,0,t,R2);
ObjectSet("R2",OBJPROP_COLOR,Red);
ObjectCreate("R3",OBJ_HLINE,0,t,R3);
ObjectSet("R3",OBJPROP_COLOR,Red);
ObjectCreate("S1",OBJ_HLINE,0,t,S1);
ObjectSet("S1",OBJPROP_COLOR,Green);
ObjectCreate("S2",OBJ_HLINE,0,t,S2);
ObjectSet("S2",OBJPROP_COLOR,Green);
ObjectCreate("S3",OBJ_HLINE,0,t,S3);
ObjectSet("S3",OBJPROP_COLOR,Green);
ayoob
18-01-2013, 02:39 AM
السلام عليكم وهد تطبيق لي درس اغلاق وافتتاح الشموع اد كان الافتتاح اكبر من الاغلاق قم بي عمل تنبية ومعة لافتة BUY واد كان الاغلاق اقل من الافتتاح قم بي عمل تنبية ومعة لافتة Sell واد كان الاغلاق يساوي الافتتاح قم بعمل لافتة ومعة open==close
double D=Open[1];
double B=Close[1];
if(B>D)
Alert("BUY");
if(B<D)
Alert("SEll");
if(B==D)
Alert("Open=Cloes");
}
:1 (77):
MOVING_AVERAGE
19-01-2013, 12:36 AM
بارك لله فيك اخي هد هو الكواد وان شاء لله يكون صحيح
extern int StopLoss=0;
extern int TakeProfit=0;
extern double Lot=0.1;
extern int MagicNumber=14000;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Open price
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
{
double SL,TP;
double MACD=iMACD("EURUSD",PERIOD_M15,12,26,9,MODE_CLOSE,MODE_MAIN,0);
double MACD1=iMACD("EURUSD",PERIOD_M15,12,26,9,MODE_CLOSE,MODE_MAIN,1);
if(MACD<0&&MACD1>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,33,SL,TP,"AYOOB",MagicNumber,0,Green);
}
if(MACD>0&&MACD1<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,33,SL,TP,"AYOOB",MagicNumber,0,Red);
}
}
//----
return(0);
صحيح في البروكر 4 ارقام فقط في بروكر 5 ارقام ستجد مشاكل
ارجع الي مشاركتي السابقة ستجد الحل
2- دقق في شروط فتح الصفقة اضن انك عكستها
MOVING_AVERAGE
19-01-2013, 12:39 AM
السلام عليكم وهد تطبيق لي درس اغلاق وافتتاح الشموع اد كان الافتتاح اكبر من الاغلاق قم بي عمل تنبية ومعة لافتة BUY واد كان الاغلاق اقل من الافتتاح قم بي عمل تنبية ومعة لافتة Sell واد كان الاغلاق يساوي الافتتاح قم بعمل لافتة ومعة open==close
double D=Open[1];
double B=Close[1];
if(B>D)
Alert("BUY");
if(B<D)
Alert("SEll");
if(B==D)
Alert("Open=Cloes");
}:1 (77):
للاسف هو صحيح لاكن غير كامل لان الدالة alert تكرر التنبيه طالما الشرط محقق
يعني التنبيه سيبقي يتكرر كل ما يتحرك السعر
فيه طريقة لنجعلها تنبه مرة واحدة فقط
ساذكرها لما نصل اليها
عودة الي الدورة
MOVING_AVERAGE
19-01-2013, 01:00 AM
بعدما تعرفنا علي الكلمة break
ندخل الي الجملة switch ةهي تشبه كثيرا الجملة if لاكنها اكثر اختصار منها
الهيكل العام للدالة switch
switch()
{
}
نكتب داخل اقواس switch المتغير مثلا x الذي نريد تنفيذ اوامر مختلفة علي حسب قيمه
وداخل الحاضنتين
نكتب قيم x مع الاوامر التي نريد
MOVING_AVERAGE
19-01-2013, 12:04 PM
مثال علي الدالة switch
نريد عمل مؤشر يضهر علي الشارت الفريم المستخدم في حالت اخترنا فريم 15 دقيقة فقط
ولا يضهر شئ في حالة الفريمات الاخري
لتنفيذ هذا المؤشر نستخدم الدالة
Period()
وهذه الدالة ترجع لنا تايم فريم الشارت الحالي
فيكون استخدام switch كالتالي
switch(Period())
{
case 15:
Comment("time = 15");
break;
default:
Comment("");
}
case
يعني في حالة القيمة التي تاتي بعده
default
يعني في حالة عدم تحقق القيم السابقة
في انتضار اي استفسار
ayoob
20-01-2013, 02:39 AM
السلام عليكم اخي بي النسبة للدلة case تم التحديد بها الفريم والدلة default ان لم تتحقق ان الفريم الدي تم تعريفة في الدلةcase هو الصحيح لن يطهر علي الشارت صحيح
هد تطبيق بسيط جعلتة يطهر علي فريم الساعة فقط
{
switch(Period())
{
case 60:
Comment("AYOOB Time =1H");
break;
default:
Comment("");
}
}
MOVING_AVERAGE
20-01-2013, 11:12 AM
السلام عليكم اخي بي النسبة للدلة case تم التحديد بها الفريم والدلة default ان لم تتحقق ان الفريم الدي تم تعريفة في الدلةcase هو الصحيح لن يطهر علي الشارت صحيح
هد تطبيق بسيط جعلتة يطهر علي فريم الساعة فقط
{
switch(Period())
{
case 60:
Comment("AYOOB Time =1H");
break;
default:
Comment("");
}
}
تطبيقك صحيح اخي
:1 (77):
MOVING_AVERAGE
20-01-2013, 03:06 PM
الحلقات التكرارية
هي حلقة تكرر نفس العمل اكثر من مرة علي حسب الاوامر التي نريدها كمبرمجين وتنتهي الحلقة في حالة انتهاء شروط تكرارها
يوجد نوعين من الحلقات التكرارية
الحلقة for
الحلقة while
MOVING_AVERAGE
20-01-2013, 03:13 PM
نبدء بالخلقة الاكثر اهمية
ونجدها كثيرا جدا في المؤشرات
بل لا يخلو اي مؤشر منها تقريبا
ويمكن تلخيض كتابتها كما يلي
for(x;y;z)
{
}حيث x بداية الحلقة
y نهاية الحلقة
z التغير المتتالي للحلقة
الموضوع بارد جدا ولا ردود رغم المشاهدات الكثيرة
الاغلبية تريد السمكة فقط لا تريد صيدها
ayoob
21-01-2013, 12:03 AM
السلام عليكم اخي متابع معاك بس ياريت مثال علي الحلقة for
MOVING_AVERAGE
21-01-2013, 12:07 AM
السلام عليكم اخي متابع معاك بس ياريت مثال علي الحلقة for
ساضع الامثلة وتكون بسيطة ان شاء الله
سمير محمد ارمان
21-01-2013, 12:42 AM
ساضع الامثلة وتكون بسيطة ان شاء الله
ياباشا ماشاء الله عليك
موضوع ممتاز ممتاز بجد
وانا بصراحة بتعلم منه كثير
جزاك الله خير وجعله الله فى ميزان حسناتك
ارجو عدم التوقف
نريد التعلم
بتوفيق اخى الكريم
ayoob
21-01-2013, 12:46 AM
ياباشا ماشاء الله عليك
موضوع ممتاز ممتاز بجد
وانا بصراحة بتعلم منه كثير
جزاك الله خير وجعله الله فى ميزان حسناتك
ارجو عدم التوقف
نريد التعلم
بتوفيق اخى الكريم
+1http://www.fx-arabia.com/vb/images/icons/icon7.gif
MOVING_AVERAGE
21-01-2013, 01:22 AM
مثال عن الحلقة for
هذا المثال بسيط لاكن يحتاج قليل من التركيز
نريد كتابت علي الشارت كلمة اكثر من مرة
مثلا fx-arabia fx-arabia fx-arabia
هنا انا كررت هذه الكلمة fx-arabia
3مرات واضهرتها علي الشارت
ناتي لتحليل العمل اولا ثم نبرمج المؤشر
اولا يلزمنا متغير من نوع string نخزن في الكتابه fx-arabia
يلومنا متغير اخر من نوع string نخزن فيه التكرارات
يلزمنا متغير اخير لكي يكرر لي الكتاب كما اريد انا
اولا
التصريح بالمتغير الاول
string f="fx-arabia ";
التصريح بالمتغير الثاني
string d="";
التصريح بعدد المرات التي اريد ان تضهر الكثابه
extern int N=3;
نكتب هذه الحلقة داخل الدالة start
for(int i=0;i<N;i++)
{
d=d+f;
}
Comment(d);
سيكتب لنا المؤشر fx-arabia
N مرة
حيث N وضعته متغير خارجي يمكن التحكم فيه
لو وضعته 5 يكتب fx-arabia 5 مرات
المؤشر في المرفقات
هذا استخدام بسيط للحلقة for
شرح كود for
الحلقة for وضعنا فيها قيمة ابتدائية i=0
وقيمة نهائية i<N
وزيادة كل مرة ب 1
في انتضار اي اسئلة
MOVING_AVERAGE
21-01-2013, 01:37 AM
المؤشر
brave_mind
21-01-2013, 04:57 PM
تحية كبيرة جدا جدا لصاحب هذا الموضوع الرائع
الاستاذ MOVING_AVERAGE
وبعد اذن استاذنا انا جمعت كل الدروس فى ملف واحد بصيغة pdf
حتى يستطيع القارىء متابعة الشرح فى المشاركات القادمة
الملف
http://www.mediafire.com/?8u5e5mh06ctmzhr
MOVING_AVERAGE
21-01-2013, 07:07 PM
تحية كبيرة جدا جدا لصاحب هذا الموضوع الرائع
الاستاذ MOVING_AVERAGE
وبعد اذن استاذنا انا جمعت كل الدروس فى ملف واحد بصيغة pdf
حتى يستطيع القارىء متابعة الشرح فى المشاركات القادمة
الملف
http://www.mediafire.com/?8u5e5mh06ctmzhr
بارك الله فيك اخي
ayoob
21-01-2013, 10:22 PM
السلام عليكم اخي مش فاهم ماد تعني بي d+d=fو ماد تعني بي i<h وماد تعني القيمة الابتدئية i=0
MOVING_AVERAGE
21-01-2013, 11:25 PM
السلام عليكم اخي مش فاهم ماد تعني بي d+d=fو ماد تعني بي i<h وماد تعني القيمة الابتدئية i=0
تمام اول سؤال
الدالة for كتبناها كا التالي
for(int i=0;i<N;i++)
}
d=d+f;
}
ماذا تعني هذه الكتابة
كما قلنا من قبل اول خانة في الخلقة for نكتب فيها القيمة الابتدائية للحلقة
هنا كتبنا القيمة الابتدائية للحلقة i=0
القيمة الوسطي هي القيمة النهائية للحلقة
i<N
و N عرفناها من قبل انها تساوي 3
يعني القيمة النهائية للحلقة هي i < 3
اخر خانة هي عملية الزيادة وكما شرختها من قبل اي اننا نضيف قيمة 1 الي القيمة السابقة ل i
d هو متغير من نوع string يعني ممكن يكون مجموعة حروف
لم نضع فيه شئ يعني قيمته فارغة
لو نعمل
Comment(d);
لن يضهر شئ
f متغير من نوع string فيه هذه الكلمة fx-arabia
الي الان لم ندخل في الية عمل for
1- تبدء الحلقة for من القيمة 0
d=d+f
يعني قيمة d اصبحت تساوي قيمة d السابقة + قيمة f
قيمة d السابقة فارغة قيمة f = fx-arabia
تصبح قيمة d = fx-arabia
تصل الحلقة الي الحاصنة الاخيرة فتعيد اختبار الشروط
بحيث i اصبحت = 1
وقيمة i مازالت اصغر من 3
يعيد تنفيذ d=d+f
حيث
قيمة d السابقة تساوي fx-arabia
و قيمة f = fx-arabia
تصبح قيمة d = fx-arabia fx-arabia
تصل الحلقة الي الحاصنة الاخيرة فتعيد اختبار الشروط
بحيث i اصبحت = 2
وقيمة i مازالت اصغر من 3
يعيد تنفيذ d=d+f
حيث
قيمة d السابقة تساوي fx-arabia fx-arabia
و قيمة f = fx-arabia
تصبح قيمة d = fx-arabia fx-arabia fx-arabia
تصل الحلقة الي الحاصنة الاخيرة فتعيد اختبار الشروط
بحيث i اصبحت = 3
اي ان شرط التكرار هنا غير صحيح فتخرج من الحلقة
وفي النهاية قيمة d التي خرجنا بها من الحلقة هي
d = fx-arabia fx-arabia fx-arabia
فلما نضهرها علي الشارت تضهر هذه الكتابة
MOVING_AVERAGE
22-01-2013, 01:41 PM
هل المثال علي حلقة for مفهوم او اضيف مثال اخر
gozila
22-01-2013, 03:14 PM
استاذ موفينج افريج محتاج اعمل الفكرة ديه مؤشر ضروري جدا لو تسمح ممكن المساعدة
if(High[0]-Low[0]<High[1]-Low[1] && Volume[0]>Volume[1] ) Alert
MOVING_AVERAGE
22-01-2013, 04:58 PM
استاذ موفينج افريج محتاج اعمل الفكرة ديه مؤشر ضروري جدا لو تسمح ممكن المساعدة
if(High[0]-Low[0]<High[1]-Low[1] && Volume[0]>Volume[1] ) Alert
حسب المؤشر اخي
ان كنت تستخدم حلقة تكرارية للمرور بجميع الشموع هنا لن تضع رقم الشمعة بل ستضع قيمة الشمعة
2- لديك خطئ في التحليل
High[0]
و
Low[0]
تعني هاي الشمعة الاخيرة ولو الشمعة الاخيرة وهي متغيرة مع الوقت الي حد انتهاء الشمعة
فمن الافضل عدم استخدام الشمعة الاخيرة
وبصفة عامة
تفضل الكود مع تغير الشمعة 0 ب 1 و الشمعة 1 ب 2
double spread2=High[2]-Low[2];
double spread1=High[1]-Low[1];
double vol2=Volume[2];
double vol1=Volume[1];
if(spread1<spread2&&vol1>vol2)
Alert("Hello");
gozila
22-01-2013, 05:45 PM
شكرا استاذ موفينج افريج علي سرعة رد حضرتك
عندي استفسار
تقصد ايه حضرتك بقيمة الشمعة
انا كنت عايز احدد انه لو الشمعة الحالية الاغلاق اعلي من السابقة تتم المقارنة او الاغلاق اسفل من السابقة تتم المقارنة...يعني عايز اقارن شمعتين او بارين من نفس الاتجاه ...يعني اقارن اتنين شمعتين صاعدين
او اتنين شمعتين هابطين لكن مقارنش شمعة صاعدة بشمعة هابطة.....يا ريت لو بالكود
ayoob
22-01-2013, 08:49 PM
هل المثال علي حلقة for مفهوم او اضيف مثال اخر
ياريت مثال اخرعلي الشموع اخي
zarymask
22-01-2013, 09:37 PM
moving average
جزاك الله خير
سأبدأ من بداية الدروس الى ان اصل للدروس الجديدة
MOVING_AVERAGE
22-01-2013, 11:49 PM
شكرا استاذ موفينج افريج علي سرعة رد حضرتك
عندي استفسار
تقصد ايه حضرتك بقيمة الشمعة
انا كنت عايز احدد انه لو الشمعة الحالية الاغلاق اعلي من السابقة تتم المقارنة او الاغلاق اسفل من السابقة تتم المقارنة...يعني عايز اقارن شمعتين او بارين من نفس الاتجاه ...يعني اقارن اتنين شمعتين صاعدين
او اتنين شمعتين هابطين لكن مقارنش شمعة صاعدة بشمعة هابطة.....يا ريت لو بالكود
لم افهم المطلوب جيدا
علي كل تابعنا في الدروس القادمة ساضع حلقة تكرارية علي الشموع
ومنها يمكنك ان تقارن اي شموع مثل ما تريد
MOVING_AVERAGE
22-01-2013, 11:50 PM
ياريت مثال اخرعلي الشموع اخي
المثال علي الشموع سيكون هو الدرس القادم ومنه نستطيع عمل اي شئ واي مؤشر
MOVING_AVERAGE
22-01-2013, 11:52 PM
moving average
جزاك الله خير
سأبدأ من بداية الدروس الى ان اصل للدروس الجديدة
ان شاء الله تستفاد من الدروس ولا تنساني من الدعاء لي وللوالدين بارك الله فيك
ayoob
23-01-2013, 07:07 PM
السلام عليكم هد تطبيق بسيط علي الحلقة ولكن عندي استفسار كل ما يتحرك السعر تتكرر الحلقة الاسم ثلاتة مرات؟
string A="AYOOB";
string B="";
extern int h=3;
{
for(int i=0;i<h;i++)
{
B=B+A;
}
Comment(B);
return(0);
}
http://www.fx-arabia.com/vb/uploaded/8360_11358957251.png
MOVING_AVERAGE
23-01-2013, 08:52 PM
السلام عليكم هد تطبيق بسيط علي الحلقة ولكن عندي استفسار كل ما يتحرك السعر تتكرر الحلقة الاسم ثلاتة مرات؟
string A="AYOOB";
string B="";
extern int h=3; {
for(int i=0;i<h;i++)
{
B=B+A;
}
Comment(B);
return(0);
}http://www.fx-arabia.com/vb/uploaded/8360_11358957251.png
نعم اخي كل ما يتحرك السعر تعيد الدالة نفسها
zarymask
24-01-2013, 01:19 AM
تطبيق عملي
افتح صفحة برنامج جديد
واكتب علي الشارت الاسم الذي تريد ان تراه لما تتاجر
تطبيقي في المرفقات انتضر تطبيقاتكم
تلميذ جديد
http://i.istockimg.com/file_thumbview_approve/21582050/2/stock-illustration-21582050-smart-student.jpg
الواجب الأول :1 (77):
//+------------------------------------------------------------------+
//| moe.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
comment("thanks for your efforts");
return(0);
}
//+------------------------------------------------------------------+
اللهم ارزق والد ووالدة اخينا moving average الفردوس الاعلى انك على كل شيئ قدير
MOVING_AVERAGE
24-01-2013, 03:45 PM
ندخل في اهم شئ في برمجة المؤشرات
دالة تكرار علي كل الشموع
تكتب هذه الدالة داخل الدالة start
وهي دالة for ولاكن باعددات معينة
MOVING_AVERAGE
24-01-2013, 03:51 PM
هذه الدالة ستار
int start()
{
return(0);
}
كل عملنا سيكون هنا
لما نقول نعرف متغير خارج الدالة start
يعني خارج هذه الدالة
بالنسبة للحلقة for التي ستمر علي كل الشموع سنكتبها داخل الدالة ستار
نكتبها بدون قيمة ابتدائية ولا نهائية
تكون كالتالي
int start()
{
for(i = ; i ; i)
{
}
return(0);
}
MOVING_AVERAGE
24-01-2013, 03:53 PM
سؤال قبل كتابة الكود
كيف ستمر for علي كل الشموع
ياريت نسمع ارائكم
ayoob
24-01-2013, 09:54 PM
يتم اخد قيمة الشمعة رقم 0 الي اخر شمعة موجودة علي الشارت
MOVING_AVERAGE
25-01-2013, 06:40 PM
يتم اخد قيمة الشمعة رقم 0 الي اخر شمعة موجودة علي الشارت
تمام للمرور علي كل الشموع ناخذ القيمة الابتدائية ل i هي 0
القيمة النهائية ل i هي عدد شموع الشارت
والزيادة في i هي 1
اخذنا الزيادة في i هي 1 لان الشموع تاخذ الترتيب 0 1 2 3 4 5 6 7
وهكذا
MOVING_AVERAGE
25-01-2013, 06:43 PM
تصبح الكتابة السابقة للحلقة كالتالي
int start()
{
for(i=0;i<x;i++)
{
// حيث x
//تمثل عدد الشموع علي الشارت
}
}
MOVING_AVERAGE
26-01-2013, 06:43 PM
كيف نعرف عدد الشموع علي الشارت ؟؟؟؟
لمعرفة عدد الشموع علي الشارت نستخدم دالة تحسب لنا عدد الشموع الموجودة تلقائيا
هذه الدالة هي
Bars
اذا نحسن الكتابة السابقة فتصبح
int start()
{
int x=Bars;
int i;
For(i=0;i<=x;i++)
{
}
return(0);
}
MOVING_AVERAGE
26-01-2013, 06:52 PM
لاكن لكي تصبح اللحلقة سريعة لا نعيد العمليات التي قمنا بها من قبل
قنستخدم معرف اخر يضهر لنا الشمعات التي حسبت من قبل
هذا المعرف يكتب كالتالي
int counted_bars=IndicatorCounted();
ولكي تبقي الحلقة فور سريعة وسلسة خصوصا اننا نتعامل مع تغيرات سريعة جدا للسعر
سنمررها فقط علي الشموع الجديدة
وبما ان لدينا كل الشموع
والشموع التي حسبت من قبل
فالشموع الجديدة هي نتيجة الطرح
نحسن الكتابة السابقة فتصبح
int start()
{
int counted_bars=IndicatorCounted();
int x=Bars-counted_bars;
int i;
For(i=0;i<=x;i++)
{
}
return(0);
}
قربنا من كتابة النواة لاي مؤشر
MOVING_AVERAGE
26-01-2013, 07:02 PM
هنا بقي لنا نناقش حلات الخطئ التي ممكن ان تصادفنا
اهم حالة هي
عدد الشموع المحسوبة غير موجود هنا نخرج لا ننفذ شئ
ونترجم هذه الكتابة الي
if(counted_bars<0) return(-1);
واذا كانت عدد الشموع المحسوبة اكبر من 0 و تشكلة شمعة جديدة هنا يعني ان اخر شمعة قد حسبت فننقص 1 لكي نتعامل مع الجديد فقط
الترجمة البرمجية
if(counted_bars>0) counted_bars--;
نحسن الكتابة النهائية للحلقة for التي تمر علي كل الشموع فتصبح
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int x=Bars-counted_bars;
For(int i=0;i<=x;i++)
{
}
return(0);
}
هذه الكتابة الاخيرة مهمة جدا ولن نجد مؤشر لا يحتوي عليها
وهي اساس كل العمل
وكل ما سياتي بعدها سهل اذا فهمنا كيف تتنقل هذه الحلقة بين الشموع
في التالي شرح كيف تتنقل الحلقة
وماهي العلاقة بين i والشمعة الضاهرة علي الشارت
MOVING_AVERAGE
28-01-2013, 04:02 PM
ناتي الي اهم دروس الدورة
كيف نمثل افتتاح واغلاق وهاي ولو الشمعة الحالية + الشمعة السابقة في داخل الحلقة التكرارية for
اتفقنا علي الشكل النهائي للحلقة التكرارية
وسنستخدمه كما سبق لنا وكتبناه
الان
للشمعة الحالية 4 متغيرات نريد ان نعرفها
الشمعة السابقة 4 متغيرات نريد ان نعرفها
اذن يلزمني 8 متغيرات خارجية لاضع فيها القيم المختلفة
كيف احدد نوع هذه المتغيرات
يحدد نوع هذه المتغيرات خسب المتغير الاساسي الذي سنضعه فيها
مثلا الافتتاح هو متغير من اللنوع
double
فيلزمني تعريف المتغير الذي ساضع فيه الافتتاح علي انه
double
وهكذا بالنسبة للبقية
كما سبق وذكرنا يمكن التصريح بالافتتاح بطريقتين
اما
Open[0]
او
iOpen(0,0,0)
وشرحنا كل الارقام داخل الكتابه
الان نحن في داخل حلقة تكرارية
بدون اي تعقيدات سنعمل كالتالي
الشمعة الحالية هي في الترقيم الطبيعي تساوي 0
داخل الحلقة سنكتبها بدلالة i فقط
الشمعة السابقة هي في الترقيم الطبيعي تساوي 01
داخل الحلقة سنكتبها بدلالة i+1 فقط
وهكذا
تمرين
اكتب المتغيرات 4 للشمعة الحالية والسابقة بدلالة i
بطريقة التصريح 1 و 2
MOVING_AVERAGE
29-01-2013, 12:15 AM
حل التمرين السابق
الطريقة 1
int start()
{
int x,i;
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++)
{
//من اجل الشمعة 0
double open0=Open[i];
double close0=Close[i];
double high0=High[i];
double low0=Low[i];
//من اجل الشمعة 1
double open1=Open[i+1];
double close1=Close[i+1];
double high1=High[i+1];
double low1=Low[i+1];
}
return(0);
}
الطريقة 2
int start()
{
int x,i;
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++)
{
//من اجل الشمعة 0
double open0=iOpen(0,0,i);
double close0=iClose(0,0,i);
double high0=iHigh(0,0,i);
double low0=iLow(0,0,i);
//من اجل الشمعة 1
double open1=iOpen(0,0,i+1);
double close1=iClose(0,0,i+1);
double high1=iHigh(0,0,i+1);
double low1=iLow(0,0,i+1);
}
return(0);
}
MOVING_AVERAGE
29-01-2013, 12:20 AM
بعد ان عرفنا كيف نكتب الشمعة الحالية والسابقة واي شمعة نريد العمل عليها
سناتي الي مقارنة الشموع
ونستعمل في هذه الحالة طرق المقارنة التي تطرقنا الها سابقا
مثلا نريد مقارنة الحجم الكلي للشمعة السابقة التي تحمل الرقم 1 يعني high - low
نقارنة بالشمعة التي تحمل الرقم 2
انتضر مشاركة اكثر منكم شباب
MOVING_AVERAGE
29-01-2013, 12:34 AM
حل المطلوب السابق يكون كالتالي
1 الحل باستخدام كتابة علي الشارت فقط
int start()
{
int x,i;
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++)
{
//من اجل الشمعة 1
double spread1=iHigh(0,0,i+1)-iLow(0,0,i+1);
//من اجل الشمعة 2
double spread2=iHigh(0,0,i+2)-iLow(0,0,i+2);
// نقارن هنا بين حجم الشمعتين
if(spread1>spread2)
Comment(" bar1 > bar2");
else if(spread1<spread2)
Comment(" bar1 < bar2");
else
Comment("bar1 = bar2");
}
return(0);
}
MOVING_AVERAGE
29-01-2013, 03:36 PM
وصلنا الي استخدام تنبيه بواسطة الدالة
Alert
الصيغة الهامة للدالة هي
Alert();
يمكننا وضع داخل الدالة متغير او متغيرين او اكثر
يفصل بين كل متغير والاخر فاصلة
يمكن ان ياخذ المتخير اي نوع من الانواع المذكورة سابقا
مثال للدالة مع تنبيه
Alert("hello");
MOVING_AVERAGE
29-01-2013, 03:40 PM
حل المثال السابق باستخدام الدالة
for(i =0 ; i<x ; i++)
{
//من اجل الشمعة 1
double spread1=iHigh(0,0,i+1)-iLow(0,0,i+1);
//من اجل الشمعة 2
double spread2=iHigh(0,0,i+2)-iLow(0,0,i+2);
// نقارن هنا بين حجم الشمعتين
if(spread1>spread2)
Alert(" bar1 > bar2");
else if(spread1<spread2)
Alert(" bar1 < bar2");
else
Alert("bar1 = bar2");
}
return(0);
}
لاكن هنا يبقي لدينا مشكل وهو تكرار التنبيه طالما الشرط محقق
وسيسبب لنا ازعاج كبير
ماهو العمل برايكم شباب
Mohamed_Amr
29-01-2013, 03:42 PM
الله ينورك عليك استاذنا الحبيب
جزاك الله كل خير أخي موفنج عل هذا الموضوع المهم
يقول نبينا عليه الصلاة والسلام : من سلك طريقا يلتمس فيه علما سهل الله له به طريقا إلى الجنة
فأنت مأجور إن شاء الله فلا تزعل لو لم تجد مشاركة واسعة من الأعضاء وخصوصا في مواضيع البرمجيات
لا تيأس من قلة المشاركات وواصل فطالب العلم سيبحث عن موضوعك اليوم وغدا لأنه يحتاجه وأنت جعلك الله سببا في حاجة أخيك هذا
أنا شخصيا كنت أنفر من البرمجة إجمالا لأني كنت أضنها متعبة وطريقها طويل وهي تهم المتخصصون في البرامج فقط
لكن لما قرأت موضوعك وطريقتك السلسة في إيصال المعلومة وصبرك في انتضار تطبيقات الإخوة بدأت أستأنس بالموضوع وأتابع عبر الصفحات
فكلمة شكرا لا تفيك حقك فجزاك الله خير عن الجميع و فتح لك أبواب الخير وغفر لك ولوالديك ولجميع المسلمين
وعذرا علي الاطالة
وتقبل تحياتي
MOVING_AVERAGE
31-01-2013, 05:17 PM
الله ينورك عليك استاذنا الحبيب
جزاك الله كل خير أخي موفنج عل هذا الموضوع المهم
يقول نبينا عليه الصلاة والسلام : من سلك طريقا يلتمس فيه علما سهل الله له به طريقا إلى الجنة
فأنت مأجور إن شاء الله فلا تزعل لو لم تجد مشاركة واسعة من الأعضاء وخصوصا في مواضيع البرمجيات
لا تيأس من قلة المشاركات وواصل فطالب العلم سيبحث عن موضوعك اليوم وغدا لأنه يحتاجه وأنت جعلك الله سببا في حاجة أخيك هذا
أنا شخصيا كنت أنفر من البرمجة إجمالا لأني كنت أضنها متعبة وطريقها طويل وهي تهم المتخصصون في البرامج فقط
لكن لما قرأت موضوعك وطريقتك السلسة في إيصال المعلومة وصبرك في انتضار تطبيقات الإخوة بدأت أستأنس بالموضوع وأتابع عبر الصفحات
فكلمة شكرا لا تفيك حقك فجزاك الله خير عن الجميع و فتح لك أبواب الخير وغفر لك ولوالديك ولجميع المسلمين
وعذرا علي الاطالة
وتقبل تحياتي
بارك الله فيكم اخواني
MOVING_AVERAGE
31-01-2013, 05:25 PM
كيف نتخلص من التنبيه المستمر
نفكر كمبرمجين
لابد ان يتحقق الشرط مرة واحدة فقط يعمل تنبيه ثم يراجع الشرط فيجده غير محقق لا يعمل تنبيه
حتي يتحقق مرة اخري فيعيد التنبيه
من الوسائل المستخدمة لهذا الغرض والتي استخدمها شخصيا
الربط بوقت الشمعة
كيف ذلك
يعني اضع متغير ما ولا اعطيه اي قيمة
اضيف في شروط تنفيذ التنبيه ان قيمة هذ المتغير لا تساوي قيمة وقت الشمعة
في اول الامر سينفذ لنا التنبيه لان قيمة المتغير 0 لم نعطه قيمة من قبل
بعد عمل اول تنبيه نعطي هذا المتغير قيمة تساوي وقت الشمعة الحالي
تعيد الحلقة نفسها وتراجع الشروط
تجد ان المتغير اصبح يملك نفس قيمة وقت الشمعة الحالي فلا تنفذ التنبيه مرة اخري
واجب
لو فهمت الكتابة فوق
ترجمها الي لغة MQL4
اوراق الخريف
31-01-2013, 09:03 PM
بارك الله فيك
وغفر لك ولوالديك
هذه المرة الاولى التي انتبه للموضوع فيها
عمل ممتاز انا مازلت في الصفحة الخامسة لكن ان شاء اله ستجدني هنا
واياك ان تتوقف عن الشرح قبل ان تعطي كل ما عندك
بالتوفيق
وساحضر مجموعة استفسارات لاني كذلك غير محترف برمجة رغم اني اقوم بعمل برمجة لبعض الاكواد
لكن اطمح للاحتراف لاستطيع تطبيق كل ما يدور في راسي بشكل حرفي
بالتوفيق يا صديقي
MOVING_AVERAGE
02-02-2013, 01:26 AM
ننتقل الي البرمجة الفعلية للمؤشرات
ونبدء علي بركة الله بمؤشر تقاطع الموفينج
مع اضهار سهم لحضة التقاطع + تنبيه صوتي
مع امكانية التحكم بكل اعدادات الموفينج
alzaaem
02-02-2013, 03:53 PM
أخي الكريم , متى تبدأ بموضوع برمجة الاكسبرت؟
تحياتي
سمير محمد ارمان
02-02-2013, 04:59 PM
ننتقل الي البرمجة الفعلية للمؤشرات
ونبدء علي بركة الله بمؤشر تقاطع الموفينج
مع اضهار سهم لحضة التقاطع + تنبيه صوتي
مع امكانية التحكم بكل اعدادات الموفينج
متابع معك ان شاء الله
ارجو لك التوفيق
MOVING_AVERAGE
02-02-2013, 08:32 PM
أخي الكريم , متى تبدأ بموضوع برمجة الاكسبرت؟
تحياتي
قريبا ان شاء الله ساعمل دورة الاكسبريتات
متابع معك ان شاء الله
ارجو لك التوفيق
بارك الله فيك اخي سمير
MOVING_AVERAGE
02-02-2013, 09:00 PM
نبدء علي بركة الله
اولا كيف يمكننا منادات خط الموفينج افريج في MQL4
الموفينج هو خطئ تمثل قيمته متوسط السعر لدور نختاره من اعدادات الموفينج
يعني هذا المتوسط بالضررورة سيكون عدد من نوع double
اول شئ نحجز متغير من نوع double لنضع فيه الموفينج الذي نريده
ويكون التصريح بالموفينج كالتالي
double mov=iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
وفيما يلي سنشرح كل برمتر وحده
MOVING_AVERAGE
02-02-2013, 09:07 PM
الحد الاول
string symbol
ويعني متغير من توع string
وهنا يمكننا وضع اسم الشارت الذي نريد العمل عليه
اذا كنا نريد عمل مؤشر يشتغل علي EURUSD
ساضع مكان اول حد الكتابة التالية
double mov=iMA( "EURUSD", int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
اذا كنت اريد عمل مؤشر يقرء البينات من اي شارت يوضع علية
ساجع اول حد = 0 او NULL كما شرحت في اول الدروس
double mov=iMA( NULL, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift);
MOVING_AVERAGE
02-02-2013, 09:12 PM
الحد الثاني
int timeframe
وهو متغير من نوع صحيح
تحمل قيمته الوقت الذي نريد العمل عليه
وهو مشروح في اول الدروس
نفضل دائما وضعه 0 لكي يعمل علي اي شارت يوضع عليه
MOVING_AVERAGE
02-02-2013, 09:18 PM
الحد الثالث
int period
متغير من نوع صحيح
وهذا الحد نقصد به الدور الذي نريد العمل به
مثلا موفينج 50 يعني الدور هنا 50 ونضعه في هذا المكان
لكي نجعل الدور متغير خارجي يمكن التحكم به من اعددات
نعرفه خارج الدالة start
كالتالي
extern int PErioD=50;
ونضعه في دالة مندات الموفينج كالتالي
double mov=iMA( NULL, 0, PErioD, int ma_shift, int ma_method, int applied_price, int shift);
هل كل شئ واضح الي الان ؟؟؟؟
MOVING_AVERAGE
04-02-2013, 12:25 AM
نكمل علي بركة الله
MOVING_AVERAGE
04-02-2013, 12:33 AM
الحد الرابع
int ma_shift
متغير من نوع int
هذا المتغير نقصد به الازاحة لخط الموفينج
في اغلب الاحيان نتركه 0
اذا وضعنا مثلا 2 سنجد ان خط الموفينج تحرك بمسافة شمعتين الي الامام
واذا وضعناه -3 مثلا نجد ان الموفينج تحرك الي الخلف بمسافة 3 شنعات
في اغلب الاحيان لا نحتاج تعريف خارجي لهذا المتغير وهو ياخذ الرقم 0
ويصبح الكود السابق كالتالي
double mov=iMA( NULL, 0, PErioD, 0, int ma_method, int applied_price, int shift);
MOVING_AVERAGE
04-02-2013, 12:40 AM
الحد الخامس
int ma_method
متغير من نوع صحيح int
يمثل هذا المتغير نوع الموفينج
مثلا عند قولنا موفينج 50 سمبل او موفينج 50 اكسبنشل
لكل موفينج كتابه معينة
والحد الخامس هو الذي يبين لنا اما سمبل او اكسبنشل وفيما يلي القيم التي يستطيع اخذها الحد الخامس
1 بالنسبة للموفينج simple
Simple moving average
يمكن ان ياخذ
int ma_method
القيمة 0 او MODE_SMA
وكتطبيق علي الكود السابق
double mov=iMA( NULL, 0, 50, 0, 0, int applied_price, int shift);
او
double mov=iMA( NULL, 0, 50, 0, MODE_SMA, int applied_price, int shift);
هذه الكتابة لم تكتمل بعد لاكن الي حد الان نفهم اننا نشتغل علي موفينج 50 سمبل
MOVING_AVERAGE
04-02-2013, 12:46 AM
2- بالنسبة للموفينج Exponential
Exponential moving average
يمكن ان ياخذ الحد
int ma_method
القيمة 1 او MODE_EMA
وكتطبيق علي الكود السابق
double mov=iMA( NULL, 0, 50, 0, 1, int applied_price, int shift);
او
double mov=iMA( NULL, 0, 50, 0, MODE_EMA, int applied_price, int shift);
في هذا المثال نفهم اننا نشتغل علي موفينج 50 اكسبنشل
MOVING_AVERAGE
04-02-2013, 12:49 AM
3- بالنسبة للموفينج Smoothed
Smoothed moving average
يمكن ان ياخذ الحد
int ma_method
القيمة 2 او MODE_SMMA
وكتطبيق علي الكود السابق
double mov=iMA( NULL, 0, 50, 0, 2, int applied_price, int shift);
او
double mov=iMA( NULL, 0, 50, 0, MODE_SMMA, int applied_price, int shift);
في هذا المثال نفهم اننا نشتغل علي موفينج 50 سموث
MOVING_AVERAGE
04-02-2013, 01:09 AM
4- بالنسبة للموفينج Linear weighted
Linear weighted moving average
يمكن ان ياخذ الحد
int ma_method
القيمة 3 او
MODE_LWMA
وكتطبيق علي الكود السابق
double mov=iMA( NULL, 0, 50, 0, 3, int applied_price, int shift);
او
double mov=iMA( NULL, 0, 50, 0, MODE_LWMA, int applied_price, int shift);
في هذا المثال نفهم اننا نشتغل علي موفينج 50 Linear weighted
MOVING_AVERAGE
04-02-2013, 01:11 AM
بالمختصر
الحد
int ma_method
يمكن ان يحمل 4 قيم وكل قيمة تحدد لنا نوع من انواع الموفينج كما ذكرنا سابقا
MOVING_AVERAGE
04-02-2013, 01:18 AM
لكي نجعل هذا المتغير خارجي ويمكن التحكم به من الاعددات الخارجية للمؤشر
سنعرفه خارج الدالة start
كالتالي
extern int ma_method=0;
ونعطيه القيمة الابتدائية 0 يعني موفينج سمبل
حتي الان عرفنا متغيرين خارج الدالة start
extern int PErioD=50;
ويكون كتابة الكود كا التالي
double mov=iMA( NULL, 0, PErioD, 0, ma_method, int applied_price, int shift);
الكود لم يكتمل بعد
نحن قلنا ان قيمة
ma_method
تاخذ 0 او 1 او 2 او 3 فقط
ماذا لو وضع المستخدم قيمة اكبر من هذه القيم
يمكننا ببساطة اجبار المستخدم علي ادخال واحدة من هذه القيم
وسنتطرق الي ذللك في الدروس المتقدمة نوع ما
MOVING_AVERAGE
04-02-2013, 01:21 AM
سانتضر اي اسئلة او شئ لم يفهم
الهذلي
04-02-2013, 07:08 AM
اخي MOVING_AVERAGE
الله يجزيك بالجنه انت ومن تحب
لكن اخي ياليت ياليت ياليت ولو في ذالك تعب عليك
انك تجمع الشرح في ملف pdf لانه شرح جدا جميل وسلس ويفهم من المره الاولي
شاكر لك تعبك والله يكتب اجرك
اخوك
الهذلي
MOVING_AVERAGE
04-02-2013, 04:36 PM
اخي MOVING_AVERAGE
الله يجزيك بالجنه انت ومن تحب
لكن اخي ياليت ياليت ياليت ولو في ذالك تعب عليك
انك تجمع الشرح في ملف pdf لانه شرح جدا جميل وسلس ويفهم من المره الاولي
شاكر لك تعبك والله يكتب اجرك
اخوك
الهذلي
والله اخي لا اعرف كيفية رفعه في ملف pdf
وارجو من الاخوة ان يرفعو الدروس في ملف pdf
MOVING_AVERAGE
04-02-2013, 04:42 PM
الحد السادس
int applied_price
متغير من نوع int
يمثل هذا الحد القيمة التي نحسب علي اساسها المتوسط الحسابي
مثلا يمكن ان ياخذ قيمة الاغلاقات فقط او الافتتاحات فقط وهكذا وفيما يلي
قيم التي ممكن ان ياخذها هذا الحد
MOVING_AVERAGE
04-02-2013, 04:48 PM
يمكن ان ياخذ الحد السادس
int applied_price
قيم الاغلاقات وذلك باعطائه القيم
0 او PRICE_CLOSE
تطبيق علي الكود السابق
double mov=iMA( NULL, 0, PErioD, 0, ma_method,0, int shift);
او
double mov=iMA( NULL, 0, PErioD, 0, ma_method, PRICE_CLOSE, int shift);
MOVING_AVERAGE
04-02-2013, 04:49 PM
يمكن ان ياخذ الحد السادس
int applied_price
قيم الافتتاح وذلك باعطائه القيم
1 او PRICE_OPEN
تطبيق علي الكود السابق
double mov=iMA( NULL, 0, PErioD, 0, ma_method,1, int shift);
او
double mov=iMA( NULL, 0, PErioD, 0, ma_method, PRICE_OPEN, int shift);
MOVING_AVERAGE
04-02-2013, 04:55 PM
وكاختصار لقيم الحد السادس ساضعها كلها
قيم الهاي
2 او PRICE_HIGH
قيم اللو
3 او PRICE_LOW
قيم منتصف الشمعة
4 او PRICE_MEDIAN
قيم الهاي + اللو + الاغلاق / 3
5 او PRICE_TYPICAL
قيم الهاي + اللو + الاغلاق + الاغلاق / 4
6 او PRICE_WEIGHTED
لكي نضع هذا الحد كمتغير خارجي نستطيع التحكم به نعرفه خارج الدالة start
بنفس الخطواة مثل الحدود السابقة
في اغلب الاحيان ياخذ الحد السادس القيمة 0 للاغلاقات
MOVING_AVERAGE
04-02-2013, 04:59 PM
الحد الاخير
int shift
هذا الحد يمثل رقم الشمعة
وتم شرحه من قبل
تطبيق عملي اكتب كود للموفينج 7 اكسبنشل يعتمد علي الاغلاقات
واكتب كود للموفينج 15 سمبل يعتمد علي الاغلاقات
الشمعة السابقة لكلا الموفينجين
ارجو التفاعل مع المطلوب
الهذلي
04-02-2013, 06:03 PM
MOVING_AVERAGE
الله يكتب اجرك اخي واستاذي
ملاحظة حبيت اقولها لك
اتمنا منك طرح الدروس دون الالتفات لهل متابع لك ام لا لربمي هناك من تابع موضوعك ولو بعد سنه ثم يكتب لك اجره
ولربما من تابع موضوعك بعد موتك فياتيك اجرك وانت في قبرك لكن احتسب الاجر من الله دون ان يكسلك ابليلس عنه لن
ابليس مقصده من تكسيلك ان يمنعك من الاجر اللذي ان شاءالله يكتب لك
اخي واصل ولا تلتفت خلفك
بارك الله فيك
MOVING_AVERAGE
05-02-2013, 12:17 AM
MOVING_AVERAGE
الله يكتب اجرك اخي واستاذي
ملاحظة حبيت اقولها لك
اتمنا منك طرح الدروس دون الالتفات لهل متابع لك ام لا لربمي هناك من تابع موضوعك ولو بعد سنه ثم يكتب لك اجره
ولربما من تابع موضوعك بعد موتك فياتيك اجرك وانت في قبرك لكن احتسب الاجر من الله دون ان يكسلك ابليلس عنه لن
ابليس مقصده من تكسيلك ان يمنعك من الاجر اللذي ان شاءالله يكتب لك
اخي واصل ولا تلتفت خلفك
بارك الله فيك
بارك الله فيك اخي
MOVING_AVERAGE
05-02-2013, 12:20 AM
حل المثال السابق
موفينج اكسبنشل 7 للشمعة السابقة
double mov=iMA( NULL, 0,7, 0, 1, 0, i+1);
موفينج سمبل 15 للشمعة السابقة
double mov=iMA( NULL, 0,15, 0, 0, 0, i+1);
سؤال كيف نعرف لحضة التقاطع بين الموفينج 7 و 15
MOVING_AVERAGE
05-02-2013, 12:31 AM
http://www.fx-arabia.com/vb/uploaded/8190_01360013414.jpg
Lama-FX
05-02-2013, 01:35 AM
http://www.fx-arabia.com/vb/uploaded/8190_01360013414.jpg
مرحبا اخي MOVING_AVERAGE
يعطيك العافية على مجهودك وعطائك وشكرا للمجهود الذي تقدمة
انا مليش بالبرمجة
بس دخلت لاقلك دوختني كل يوم صورة (التعريف)
ممكن اساعدك
اصلي اختصاصي جرفك
MOVING_AVERAGE
05-02-2013, 01:40 AM
مرحبا اخي MOVING_AVERAGE
يعطيك العافية على مجهودك وعطائك وشكرا للمجهود الذي تقدمة
انا مليش بالبرمجة
بس دخلت لاقلك دوختني كل يوم صورة (التعريف)
ممكن اساعدك
اصلي اختصاصي جرفك
ههههه بارك الله فيك اخي انا احب الجديد والتغير
كل اسبوع اغير الصورة
الهذلي
05-02-2013, 09:43 PM
السلام عليكم ورحمة الله وبركاته
اخواني الحمد لله تعلمة كيف اعمل ملف pdf
وهذه تجميع الدورة من الصفحه 1 الى الصفحه 22
4shared folder - My 4shared (http://www.4shared.com/folder/uzLkV0Kk/_online.html)
حبية اسئل استاذي هل الدورة لحد الان انتهت ام يوجد بقيه
MOVING_AVERAGE
05-02-2013, 11:05 PM
السلام عليكم ورحمة الله وبركاته
اخواني الحمد لله تعلمة كيف اعمل ملف pdf
وهذه تجميع الدورة من الصفحه 1 الى الصفحه 22
4shared folder - My 4shared (http://www.4shared.com/folder/uzLkV0Kk/_online.html)
حبية اسئل استاذي هل الدورة لحد الان انتهت ام يوجد بقيه
بارك الله فيك اخي
الدورة مازالت مستمرة
MOVING_AVERAGE
05-02-2013, 11:10 PM
http://www.fx-arabia.com/vb/uploaded/8190_01360013414.jpg
كيف نحدد التقاطع برمجيا
نري وضعية الخطوط وترتيبها قبل التقاطع
نري وضعية الخطوط وترتيبها بعد التفاطع لنعرف التقاطع
MOVING_AVERAGE
05-02-2013, 11:24 PM
كتابة الموفينج في الشمعة قبل السابقة
ولنفرض انها شمعة قبل التقاطع
الموفينج 7
double mov7_2=iMA( NULL, 0,7, 0, 1, 0, i+2);
الموفينج 15
double mov15_2=iMA( NULL, 0,15, 0, 0, 0, i+2);
كتابة الموفينج في الشمعة السابقة
ولنفرض انها شمعة بعد التقاطع
الموفينج 7
double mov7_1=iMA( NULL, 0,7, 0, 1, 0, i+1);
الموفينج 15
double mov15_1=iMA( NULL, 0,15, 0, 0, 0, i+1);
ترتيب الموفينج اذا كان الاتجاه نازل
الموفينج 15 اعلي من الموفينج 7
ترتيب الموفينج اذا كان الاتجاه صاعد
الموفينج 15 اسفل الموفينج 7
يعني دائما الموفينج الاصغر هو الذي تتبعه حركة السعر
MOVING_AVERAGE
05-02-2013, 11:33 PM
ناخذ امثلة من الشارت لتقاطعات و نكتبها بدلالة الشمعة السابقة والتي قبلها
http://www.fx-arabia.com/vb/uploaded/8190_01360096030.jpg
في هذا المثال كان الاتجاه نازل
يعني الموفينج 15 اكبر من الموفينج 7
ثم اصبح صاعد
يعني الموفينج 15 اصغر من الموفينج 7
الترجمة البرمجية
double mov7_2=iMA( NULL, 0,7, 0, 1, 0, i+2);
double mov7_1=iMA( NULL, 0,7, 0, 1, 0, i+1);
double mov15_2=iMA( NULL, 0,15, 0, 0, 0, i+2);
double mov15_1=iMA( NULL, 0,15, 0,0, 0, i+1);
if(mov7_2<mov15_2&&mov7_1>mov15_1)
{
//اصبح الاتجاه صاعد
}
ان شاء الله يكون شرط تقاطع الموفينج مفهوم وحاضر لاي استفسرات
MOVING_AVERAGE
07-02-2013, 02:57 PM
اضن ان شرط التقاطع مفهوم
الان ان شاء الله بعدما فهمنا كيف نعبر عن التقاطع برمجيا يمكننا عمل اي شئ في لحضة التقاطع
عمل تنبيه واضن الامر بسيط لاننا عمل مؤشر للتنبيه من قبل
عمل كتابه علي الشارت والامر بسيط لاننا عمل كتابه من قبل
رسم سهم علي الشارت وهذا ما سنوضحه اكثر ان شاء الله
وبعدها نبرمج اكسبريت لهذا المؤشر في الدورة الاخري
MOVING_AVERAGE
12-02-2013, 02:35 PM
الاسهم
الاسهم هي كائنات رسومية يمكننا رسمها في لغة mq4 بطريقتين
اما بواسطة ObjectCreat
او بواسطة الكائنات الرسومية التي ندمجها في المصفوفات
MOVING_AVERAGE
12-02-2013, 02:37 PM
طريقة رسم الاسهم بواسطة الكائنات الرسومية
تعتبر من اكثر الطرق المستخدمة في رسم الاسهم
كيف نستخدم هذه الطريقة
MOVING_AVERAGE
12-02-2013, 02:41 PM
لرسم اي كائن علي الشارت يجب ان نعلم البرنامج اننا سنستخدم كائنات رسومية
مثلا لرسم سهم نازل و سهم صاعد
نحتاج كائنين علي الشارت
لاعلام البرنامج اننا سنستخدم كائنين علي الشارت نستعمل الجملة التالية
#property indicator_buffers 2
اقصي حد للكائنات الرسومية في مؤشر هو 8 ولا نستطيع استخدام اكثر من هذا العدد
MOVING_AVERAGE
12-02-2013, 02:49 PM
بعد اعلام البرنامج اننا سنستخدم كائنين علي الشارت يمكننا التحكم بالوان هته الكائنات
وهذه الخطوة مهمة جدا جدا جدا
لاننا سنستعمل هذه الالوان عند برمجة الاكسبريت
سنستخدم لونين
الاول ازرق للسهم الصاعد
والثاني احمر للسهم النازل
يتم ترجمت ما سبق كالاتي
#property indicator_color1 Red
#property indicator_color2 Blue
لا يهم ترتيب الالوان في هذه المرحلة
اذا نعيد ما تم كتابته خارج الدالة start
ويفضل ان يكونو في الاعلي تحت نوع نافذة البرماند
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
هذه الكتابة تعني اننا نستخدم نافدة الشارت
سنستخدم كائنين علي نافذة الشارت
لون كائن احمر
لون الكائن الاخر ازرق
adel asran
12-02-2013, 08:39 PM
السلام عليكم اخى الغالى هل هذا نهاية مجهودك الرائع ام هناك تكلمة موضوعك في مكان اخر
MOVING_AVERAGE
13-02-2013, 03:14 PM
السلام عليكم اخى الغالى هل هذا نهاية مجهودك الرائع ام هناك تكلمة موضوعك في مكان اخر
الدورة مازالت مستمرة
ساحاول الكتابة اليوم ان شاء الله
MOVING_AVERAGE
13-02-2013, 04:11 PM
بعدما ان اعلمنا البرنامج اننا سنرسم كائنين علي الشارت
لابد الان من ربط هذين الكائنين بمصفوفتين
وقبل الربط نعرف مصفوفتين من نوع double
والتعريف يكون كالتالي
double CrossUp1[];
double CrossDown1[];
كل مصفوقة اعطيتها اسم خاص بها
اذا حتي الان كتبنا التالي
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
double CrossUp1[];
double CrossDown1[];
MOVING_AVERAGE
13-02-2013, 04:12 PM
كل هذه الكتابات تكون خارج الدالة start
hai1tham
14-02-2013, 09:08 PM
اخى الفاضل اريد التعمق اكثر فى البرمجه ارجو الافاده
MOVING_AVERAGE
15-02-2013, 01:07 PM
تابع معنا اخي ان شاء الله اليوم اكمل المؤشر الاول
MOVING_AVERAGE
15-02-2013, 01:10 PM
بعدما اعلمنا البرنامج اننا سنستخدم كائنين علي الشارت
وعرفنا مصفوفتين
ناتي الان لربط الكائن بالمصفوفة
واعطاء الكائن الشكل والنوع الذي سيظهر به علي الشارت
النوع يمكن للكائن ان يكون سهم, خط , هستوغرام ....
الشكل حسب النوع الذي تم اختياره
وعند اختيار اسهم نجد انواع اشكال كثيرة جدا للسهم
MOVING_AVERAGE
15-02-2013, 01:15 PM
تحديد نوع الكائن
لتحديد نوع الكائن نكتب التالي داخل الدالة
init
SetIndexStyle( int index, int type, int style=EMPTY, int width=EMPTY, color clr=CLR_NONE)
يمكن كتابة هذه الجملة الاخيرة بخانتين فقط
MOVING_AVERAGE
15-02-2013, 01:17 PM
شرح الجملة الاخيرة
int index
رقم الكائن الذي نتعامل معه في الجملة
مثلا عندنا في مثالنا كائنين
فالكائن الاول ياخذ الرقم 0
والكائن الثاني ياخذ الرقم 1
MOVING_AVERAGE
15-02-2013, 01:21 PM
int type
نوع الكائن الذي نريد اضهاره علي الشارت
ولكي نضهر سهم علي الشارت نستخدم الكلمة التالية
DRAW_ARROW
يعني الكتابة الي حد الان ستكون كالتالي
SetIndexStyle(0, DRAW_ARROW,
للكائن الاول
SetIndexStyle(1, DRAW_ARROW,
للكائن الثاني
MOVING_AVERAGE
15-02-2013, 01:30 PM
int style=EMPTY
هذه الكتابة لن تهمنا في حالة الاسهم
وسنتكتبها كالتالي
EMPTY
يمكننا التوقف الان وعدم اكمال باقي الخانات لو نريد
الكتابة الي حد الان
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
في هذه الكتابة عرفنا الانواع التي سنرسمها علي الشارت
انا انصح بالكتابة الي هنا فقط
MOVING_AVERAGE
15-02-2013, 01:32 PM
int width=EMPTY
هذه الكتابة للتحكم في حجم الكائن
color clr=CLR_NONE
وهذه الكتابة للتحكم في لون الكائن
MOVING_AVERAGE
15-02-2013, 01:33 PM
بما اننا اخترنا الاسهم فسيكون لها اشكال كثيرة جدا
MOVING_AVERAGE
15-02-2013, 01:41 PM
الكائن الاول لونه احمر
والكائن الثاني لونه ازرق
خسب الكتابات السابقة
الان نحن نريد ربط السهم النازل بالكائن الاول
والسهم الصاعد بالكائن الثاني
كما قلنا الكائن الاول هو 0
والكائن الثاني هو 1
لكي نربط الاشكال بالكائنات نستعمل التالي
SetIndexArrow( int index, int code)
حيث
int index
رقم الكائن
int code
كود الكائن
ويمكننا في هذه الخانة وضع اعداد ما بين 33 الي 255
وكل عدد له شكل معين
انا استخدم
الاعداد 233 للسهم الصاعد
234 للسهم النازل
اذا عملية تحديد الشكل ستكون كالتالي
SetIndexArrow(0, 234);
SetIndexArrow(1, 233);
وكل الكتابة التي شرحناها هي
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
حتي الان قمنا بتحديد نوع الكائن وشكل الكائن حسب اللون
MOVING_AVERAGE
15-02-2013, 01:45 PM
اخر شئ في داخل الدالة init
هو ربط الكائن بالمصفوفة التي عرفناها من قبل
ويتم الربط بواسطة الجملة
SetIndexBuffer( int index, double array[])
حيث
int index
رقم الكائن
double array[])
اسم المصفوفة
هنا يجب وضع اسم المصفوفة بدون
[]
نرجع الي مثالنا
MOVING_AVERAGE
15-02-2013, 01:54 PM
في مثالنا وضعنا
الكائن رقم 0 سهم احمر ونازل للاسفل فمن المنطقي ان نسميه
CrossDown1
الكائن رقم 1 بسهم ازرق وسهم صاعد الي الاعلي فمن المنطقي ان نسميه
CrossUp1
ترجمة ما سبق الي البرنامج
SetIndexBuffer(1, CrossUp1);
SetIndexBuffer(0, CrossDown1);
كل الكتابة السابقة هي
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);
MOVING_AVERAGE
15-02-2013, 01:57 PM
يعني كتابتنا العامة للكود وادخال كائنين علي الشارت وتحديد نوعهم وشكلهم ولونهم
ستكون
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
double CrossUp1[];
double CrossDown1[];
//+------------------------------------------------------------------+
//| 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);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
MOVING_AVERAGE
15-02-2013, 02:01 PM
لكي نعمل مؤشر احترافي لابد ان تضهر لنا خطوط الموفينجات علي الشارت
ولكي نضهر خطوط الموفينجات علي الشارت سنعيد نفس عملية الاسهم لاكننا بتغير نوع الكائن الي خط بدل السهم
وازالة شكل الخط لان الخط ليس له شكل
MOVING_AVERAGE
15-02-2013, 02:01 PM
في انتضار اي اسئلة لكي نكمل المؤشر
MOVING_AVERAGE
15-02-2013, 02:58 PM
لاضهار خطوط الموفينج سنستعمل كائنين اخرين علي الشارت
فتصبح الكتابة الاولي كالتالي
#property indicator_buffers 4
يعني سنستخدم 4 كائنات
2 للاسهم و 2 لخطوط الموفينج
vBulletin® v3.8.8