النتائج 151 إلى 165 من 205
الموضوع: هيا نصنع مؤشر بأيدينا
- 04-09-2006, 07:03 PM #151
مشاركة: هيا نصنع مؤشر بأيدينا
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ثم ماذا
يوجد مشكلة فى كتابة الكود . هل من مساعد ؟؟؟؟؟؟؟؟؟؟؟
- 05-09-2006, 02:39 AM #152
مشاركة: هيا نصنع مؤشر بأيدينا
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ثم ماذا
هذا الكود ماذا يعنى
علما بان السطر الازرق هو اول سطر تم كتابته يدويا
اما باقى الاسطر البرتقالى كتبت اليا بمعرفة البرنامج
كود://---- buffersdouble ExtMapBuffer1[]; //+------------------------------------------------------------------+
و لكن كيف عرفت انها مصفوفة و لم تقل متغير ؟
لانها متبوعة بالاقواس []
- 05-09-2006, 02:40 AM #153
مشاركة: هيا نصنع مؤشر بأيدينا
ثم ماذا؟؟؟؟؟
- 05-09-2006, 02:47 AM #154
مشاركة: هيا نصنع مؤشر بأيدينا
ثم ماذا
هذا الكود ماذا يعنى
كود://| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); string short_name = "Your first indicator is running!"; IndicatorShortName(short_name); //---- return(1); } //+------------------------------------------------------------------+
- 05-09-2006, 02:24 PM #155
مشاركة: هيا نصنع مؤشر بأيدينا
المشاركة الأصلية كتبت بواسطة ahmed hanafy
- 05-09-2006, 11:39 PM #156
مشاركة: هيا نصنع مؤشر بأيدينا
و الان جاء دورها
اولا الدلة init() 1
اول دالة تعمل في البرنامج( المؤشر ) قبل اي دالة أخرى .
كود:int init()
و تكون مسبوقة بالرمزINT و يليها ()
يجب هنا وضع قيم المتغيرات الأبتدائية للمؤشر بين قوسين {} .
كود:{ SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); string short_name = "Your first indicator is running!"; IndicatorShortName(short_name); //---- return(1); }
- 05-09-2006, 11:50 PM #157
مشاركة: هيا نصنع مؤشر بأيدينا
طيب و المعنى
اولا : SetIndexStyle(0,DRAW_LINE)
و معناها اننا سنقوم برسم خط واحد فقط ؟
ازاى ؟
الرقم صفر يمثل عدد الخطوط المرسومة
جميل قوى و هو صفر يعنى واحد ؟
نعم . فالارقام المسموح بها فى هذا المكان ثمانية اى اننا يمكن ان نرسم ثمانية خطوط تبدأ من الصفر حتى 7 . يبقى لو خط واحد نكتب صفر و لو خطين زى الاستوكستيك نكتب 1 و لو 3 خطوط زى ADX نكتب 2 و هكذا و هكذا
اما جملة DRAW_LINE ( لرسم خط ) طيب و ايه كمان ممكن نكتبه
DRAW_SECTION ( لرسم قطع او نقط )
DRAW_HISTOGRAM ( لرسم الهيستوجرام )
DRAW_ARROW ( لرسم سهم )
DRAW_NONE (بدون رسم اي شئ )
- 06-09-2006, 12:05 AM #158
مشاركة: هيا نصنع مؤشر بأيدينا
ثانيا : SetIndexBuffer(0,ExtMapBuffer1)
و معناها لدينا مؤشر واحد سنأخذ القيم التى سترسم من المصفوفة ExtMapBuffer1
بمعنى ادق :
في حالة مؤشرنا هذا , فالمصفوفة ستوفر القيم من المتغير ExtMapBuffer1 لتقوم برسم خط واحد على الشارت
- 06-09-2006, 12:12 AM #159
مشاركة: هيا نصنع مؤشر بأيدينا
ثالثا
string short_name = "Your first indicator is running!";
تقوم بتحديد اسم المؤشر الذى سيكتب على الشاشه اثناء تشغيله. اخترنا العبارة Your first indicator is runningو يمكنك اختيار اى عبارة اخرى
رابعا
IndicatorShortName(short_name)
نحن نخبر البرنامج بان هذه العبارة هى التى ستكتب على الشاشة عند التشغيل
وبقيت RETURN وهي الجملة المسئولة عن انهاء الدالة ()init وتمرير البرنامج الى الدالة ()start لتبدأ عملها .
- 06-09-2006, 04:42 PM #160
مشاركة: هيا نصنع مؤشر بأيدينا
و الان جاء دورها
ثانيا
دالة انتهاء المؤشر () deinit :
هذه اخر دالة يستدعيها المؤشر , هنا يمكنك وضع اوامر نهاية البرنامج
كود:int deinit(){ //---- //---- return(0); }
- 06-09-2006, 05:00 PM #161
مشاركة: هيا نصنع مؤشر بأيدينا
و الان وصلنا النهاية
ثالثا
دالة start() 1
كما عرفنا سنقضي تقريبا %90 من حياتنا البرمجية داخل اقواس الدالة ()start . وذلك لأنها أهم دالة من الدوال الرئيسية في لغة MQL4 .
وعلى عكس الدالتين السابقتين ()init و ()deinit . فهي لا تنتهي مرة واحدة من طرف المستخدم , وانما كل مرة يتحرك فيها السعر على الشارت الموضوع فيه المؤشر , تعمل هذه الدالة .
دالة ()start مثل جميع دوال MQL4 تعود بنتيجة محددة returtn . حيث ان (0)return معناها انه لا يوجد اخطاء , واي قيمة أخرى غير 0 فهي خاطئة ويتم الأنتقال الى جزء أخر .
- 06-09-2006, 05:06 PM #162
مشاركة: هيا نصنع مؤشر بأيدينا
و الان وصلنا النهاية
انظر لهذا الكود و تأمل معناه :
كود://| Custom indicator iteration function |//+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- check for possible errors if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; int pos=Bars-counted_bars; double dHigh , dLow , dResult; Comment("Hi! I'm here on the main chart windows!"); //---- main calculation loop while(pos>=0) { dHigh = High[pos]; dLow = Low[pos]; dResult = dHigh - dLow; ExtMapBuffer1[pos]= dResult ; pos--; } //---- return(0); } //+------------------------------------------------------------------+
- 06-09-2006, 05:06 PM #163
مشاركة: هيا نصنع مؤشر بأيدينا
و سيتم شرحه فى المشاركة القادمة
- 06-09-2006, 07:16 PM #164
مشاركة: هيا نصنع مؤشر بأيدينا
الدالة الهامة جداstart()1
و تكون مسبوقة بالرمزINT و يليها ()
يجب هنا وضع قيم المتغيرات الأبتدائية للمؤشر بين قوسين {} .
كما فى السطر الاول من الكود
int start() 1
- 06-09-2006, 11:51 PM #165
مشاركة: هيا نصنع مؤشر بأيدينا
الدالة الهامة جداstart()1
اما السطر الثانى
كود:int counted_bars=IndicatorCounted();
هنا نحن عرفنا متغير ما على انه عدد صحيح int وسميناه ( counted_bars ) واسندنا له قيمة محددة وهي الدالة ( int IndicatorCounted() ) ... ( اي ان القيمة الناتجة من هذه الدالة ستعود الى هذا المتغير .)
وهي الدالة التي ستعود بقيمة ما (عدد صحيح) وهذه القيمة هي عدد الشموع المحسوبة عن طريق مؤشرنا هذا ( مثلا المتوسط المتحرك 5 , عدد الشموع هنا 5 ) لكن في حالة مؤشرنا هنا واحد فقط .
مع بداية تشغيل المؤشر على الشارت سيحسب القيمة 0 وذلك لأنه لم يقم بحساب اي عدد من الشموع بعد .
بعد ذلك يقوم بحساب الشموع (البارات) الموجودة على الشارت .
اما الكود
كود:if (counted_bars<0) return(-1);
فعمله هو
هذه الجملة ( counted_bars ) تحمل القيمة الناتجة من الدالة ()int IndicatorCounted ومن ثم تقوم الجملة الشرطية بعملها .
يجب ان تكون القيمة اكبر من او تساوي 0 اما ان تكون اصغر من الصفر فهذا معناه ان هناك خطأ وسيتم انهاء الدالة ( في مثال المتوسط 5 لم يجد المؤشر 5 شموع على الشارت ليقوم بحساباته ولن يظهر على الشارت )
وهذا ما يعنيه السطر اعلاه
و كذلك
;--if (counted_bars>0) counted_bars
هنا إذا جائت النتيجة صحيحة . وعدد البارات اكبر من الصفر ( اي ان عدد البارات على الشارت اكبر من المطلوب في المؤشر ).
سيتم انقاص قيمة واحد من الناتج ( -- هي للإنقاص , راجع درس العمليات ) وبإنقاصها ستعود الدالة للحساب والمقارنة من جديد ( وهكذا يتم اصدار قيمة بعد قيمة لرسم المؤشر متصلا على الشارت مع كل شمعة ).
آخر تعديل بواسطة ahmed hanafy ، 06-09-2006 الساعة 11:56 PM
المواضيع المتشابهه
-
لماذا نزرع الطمع بأيدينا في انفسنا
By الجاويش in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 28آخر مشاركة: 26-04-2008, 06:56 PM -
نبينا يهان .. والحل بأيدينا
By HERO_0 in forum استراحة اعضاء المتداول العربيمشاركات: 9آخر مشاركة: 29-01-2008, 04:22 PM -
كيف نصنع التمبلت ارجوا المساعده
By hatem1 in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 2آخر مشاركة: 11-12-2007, 08:17 AM -
كيف نصنع اكسبيرت ارجوا من الخبراء الرد ؟
By المرجوووج in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 2آخر مشاركة: 03-09-2006, 03:02 AM -
كيف نبرمج اشراء والبيع آلي وصنع اكسبريت؟
By DO_LAR in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 49آخر مشاركة: 09-12-2005, 06:06 AM