النتائج 151 إلى 165 من 205
الموضوع: هيا نصنع مؤشر بأيدينا
- 04-09-2006, 07:03 PM #151
مشاركة: هيا نصنع مؤشر بأيدينا
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ثم ماذا
يوجد مشكلة فى كتابة الكود . هل من مساعد ؟؟؟؟؟؟؟؟؟؟؟
- 05-09-2006, 02:39 AM #152
مشاركة: هيا نصنع مؤشر بأيدينا
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ثم ماذا
هذا الكود ماذا يعنى
علما بان السطر الازرق هو اول سطر تم كتابته يدويا
اما باقى الاسطر البرتقالى كتبت اليا بمعرفة البرنامج
قمنا فى هذا السطر بتعريف مصفوفة باسم ExtMapBuffer1 يوضع فيها قيم المؤشر و هى من النوع ارقام غير صحيحة ( بفاصلة عشرية) و الدليل انها مسبوقة بكلمة doubleكود://---- 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
الأكثر زيارة
رد مع اقتباس