النتائج 346 إلى 360 من 663
- 27-04-2012, 06:32 PM #346
فائدة الدالة
أنها تعود بعدد العمليات المفتوحة بواسطة الإكسبيرت
والمفروض في نهايتها بتضع
كود PHP:return(cnt);
-------------------------
والدالة ليست في deinit
راجع الإكسبيرت مرة أخرى ستجد أن الدالة مكتوبة بعد deinit
ستجد أقواس الدالة deinit مغلقة قبل الدالة الخارجية
يعني الدالة مكتوبة خارج أي دوال ولكن موضوعة فوق إستارت ( وده عادي ممكن تعمل أي دالة في أي مكان حتى لو فوق حقوق الطبع والحفظ طالما إنك كاتبها خارج الدوال الرئيسية )
لاحظ الدالة deinit أقواسها مغلقة قبل الدالة الأخرى ( وممكن تحذف الدالة deinit تماما بأقواسها وستجد أنها لا تؤثر على عمل الإكسبيرت طالما أنك لن تستخدمها )
كود PHP:void deinit()
{}
int orderstotal(){
int cnt=0;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
---------------------
مرفق الإكسبيرت وقارن بين الإتنينآخر تعديل بواسطة xcv114 ، 27-04-2012 الساعة 06:36 PM
- 27-04-2012, 07:05 PM #347
جزاك الله خيرا , ولدى بعض الأسئلة
لقد استخدمت الدالة
كود PHP:int orderstotal()
كود PHP:int orderscnt()
والاثنين لهما نفس المعنى , ولكن المتغيركود PHP:cnt
علاقة بالدالةكود PHP:int orderscnt()
- لماذا تم تعريف دالةكود PHP:deinit
كود PHP:void
- باقى الأخطـاء تم معرفتهـا وكثرة الأقواس تسبب لى مشكلةآخر تعديل بواسطة spiders101 ، 27-04-2012 الساعة 07:13 PM
- 27-04-2012, 07:08 PM #348
اتمنى ان يتم ارسال الدرس السادس و ملف الفيديو لانه حتى الان لم يصل على الايميل
- 27-04-2012, 07:38 PM #349
بالنسبة لإسم الدالة لن يختلف عادي
حتى لو سميتها ibrahim()
طالما أنك ستكتب في شرط الشراء ibrahim()<maxorders
بس أنا بكتبها orderstotal بحيث تكون بتدل على محتواها عشان بعد كده لما أرجع للإكسبيرت بعد فترة تكون قراءة الإكسبيرت سهلة
ونفس الكلام على cnt تقدر تكتب مكانها أي حاجة مثلا yousef بس لازم في نهاية الدالة yousef++
المهم إنت تختار إسم للمتغير أو الدالة بحيث ما تتلخبطش بعد كده
---------------------------------------------
------------------------
السؤال التاني بالنسبة للدالة deinit
انا عادة بعرفها void لإني لا أضع في نهايتها return;
وعادة أستخدمها فقط لحذف الكومنتات
يعني مثلا لو كتبت في إستارت
كود PHP:int start()
{
Comment ("Programmed by Spider");
}
طبعا سيظهر عندك الكومنت فوق على الشمال
بس لو حذفت الإكسبيرت سيظل الكومنت مكتوب على الشارت
طيب عشان تخلي الكومنت يتحذف لما تحذف الإكسبيرت تستخدم
كود PHP:void deinit() {
Comment("");
}
لإن كما تعلم الدالة deinit تعمل عند نهاية عمل الإكسبيرت
وإستخدمناها بالشكل ده void deinit() لإننا لا نريد منها أن تعود بأي قيمةآخر تعديل بواسطة xcv114 ، 27-04-2012 الساعة 07:47 PM
- 27-04-2012, 08:18 PM #350
- 27-04-2012, 08:24 PM #351
معلش سؤال غبي شوية و ياريت تسحملوني لاني للاسف مطبقتش كتير من الاول فحاليا بعاني من مشكلات فالتطبيق
انا لغاية دلوقتي مش فاهم معني كلمة ان دالة deinit تعود بقيمة معينة مثلا.... يعني لو حد يتكرم و يوضحلي كدا بمثال عملي بسيط...
و شكرا جزيلا ليكم
- 27-04-2012, 08:33 PM #352
- 27-04-2012, 09:25 PM #353
- 27-04-2012, 09:42 PM #354
تمام وضحت الفكره , لكن انا اضم صوتى لأخى أحمد بخصوص جملـة - لإننا لا نريد منها أن تعود بأي قيمة -
مامعنى الجملة السابقة , كيف ستعود دالة deinit بأى قيمة كانت ,, لأنها تعمل عند توقف الاكسيبرت اى لانحتاج لأى قيم أخرى من اى دالة بعد توقف الاكسيبرت !!
وسؤال أخر اذا سمحت لى أخى العزيز ,,
الاكسيبرت المرفق خاص بمؤشر البرابولك سار ولدى سؤال عن قيمةكود PHP:Open[1]
كود PHP:if(sar<Open[1])
وما الفرق بينكود PHP:sar<Open[1]
كود PHP:sar<Open[0]
- 27-04-2012, 09:42 PM #355
شوف الموضوع بسيط
إنت أحيانا تحتاج من الدالة أن تعود بقيمة بحيث تستخدم القيمة دي في دالة أخرى
----------------------------------------
في دالة مش بنحتاج منها إنها تعود بأي قيمة في نهاية عملها
مثل الدالة دي
كود PHP:void deinit() {
Comment("");
}
طيب في حالة إنك في الإكسبيرت محتاج تعرف عدد العقود المفتوحة عشان الإكسبيرت يعرف إذا كان يفتح صفقة ولا يكتفي
فإنت عايز تقول للإكسبيرت مثلا
إشتري لو العقود المفتوحة أقل من 10
طيب الإكسبيرت هيعرف إزاي عدد العقود المفتوحة ؟
نعمل دالة خارجية تعود بقيمة العقود المفتوحة
كود PHP:int orderstotal(){
int cnt=0;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
( خد بالك OrdersTotal() الموجودة في الحلقة... دي دالة محجوزة تعود بقيمة إجمالي العقود... غير إسم الدالة الخارجية int orderstotal() وإللي هنستخدمها عشان نعرف عدد العقود المفتوحة بواسطة الإكسبيرت فقط )
كود PHP:for(int i =0;i<=OrdersTotal();i++)
ولدينا شروط ليبدأ البحث والتعرف على العمليات المفتوحة بواسطة الإكسبيرت وهي :
إذا كان رمز العملة = رمز العملة وإذا كان الماجيك نمبر = الماجيك نمبر ( إذا فهي مفتوحة بواسطة الإكسبيرت )
كود PHP:if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber())
-------------------------------------
------------------
يعني
لو عندنا 15 عملية مفتوحة منهم 10 بواسطة الإكسبيرت و5 فتحناهم يدوي وملهمش علاقة بالإكسبيرت
يبقى الدالة هتبدأ العد
cnt = 1 ثم تعود للبداية ( لكن المرة دي ستبدأ على اساس cnt =1 )
تجد العقد الثاني : فإذا وافق الشروط ........ إذا cnt++ ويصبح
cnt=2 ثم تعود للبداية
وهكذا،،،،،،،،،،،،،،،
حتى تصل cnt=10 ( وطبعا لن تحسب الـ 5 عقود المفتوحين يدوي لإنهم لا يطابقوا الشروط )
---------------------
يبقى دلوقتي إحنا عملنا دالة تعود بقيمة العقود المفتوحة بواسطة الإكسبيرت
----------------
ناقص بقى نستخدمها
هنروح على دالة إستارت مثلا ونستدعي الدالة الخارجية عشان نعرف قيمة العقود المفتوحة
ونعملها مثلا شرط للشراء
كود PHP:int start(){
if(rsi>50){
if(orderstotal()<10){
if(stoploss==0){sl=0;}else{sl=Ask-stoploss*Point;}
if(takepofit==0){tp=0;}else{tp=Ask+takepofit*Point;}
OrderSend(Symbol(),OP_BUY,1,Ask,50,sl,tp,"EA",MagicNumber,0,Lime);
فيجد أن القيمة التي تعود بها الدالة 10
فيتوقف الإكسبيرت عن فتح عقود أخرى
- 27-04-2012, 10:08 PM #356
[Open[0 تعني إفتتاح الشمعة الحالية
[Open[1 تعني إفتتاح الشمعة السابقة
[Open[2 تعني لإتتاح الشمعة قبل السابقة
وهكذا
الخطأ عندك إنك عرفت الباربوليك سار للشمعة الحالية ( رقم 0 إللي في النهاية ده يعني إنت بتجيب قيمة السار للشمعة الحالية )
كود PHP:double sar=iSAR(NULL,0,Step,Maximum,0);
كود PHP:if(sar<Open[1])
هل قيمة السار عند الشمعة الحالية 0 أقل من إفتتاح الشمعة السابقة ( فيشتري في الشمعة الحالية )
طيب لو وضعت [sar<Open[0
نفس الكلام
الإكسبيرت هيقارن هل قيمة السار عند الشمعة الحالية 0 أقل من إفتتاح الشمعة الحالية ( فيشتري من الشمعة الحالية )
---------------------------
لكن إنت لو عايز تقول لو قيمة السار للشمعة السابقة أقل من إفتتاح الشمعة السابقة
إشتري من إفتتاح الشمعة الحالية
يبقى لازم تغير الـ shift لرقم الشمعة المؤخوذ منه قيمة السار
يبقى بالشكل ده
كود PHP:double sar=iSAR(NULL,0,Step,Maximum,1);
if(sar<Open[0])
كود PHP:double sar=iSAR(NULL,0,Step,Maximum,0);
if(sar<Open[0])
آخر تعديل بواسطة xcv114 ، 27-04-2012 الساعة 10:19 PM
- 27-04-2012, 10:26 PM #357
أخـى xcv114
شكرا جزيلا لك وفيت وكفيت , بارك الله فيك وجزاك الله كل خيـر .
- 27-04-2012, 10:57 PM #358
أخى العزيز , بخصوص ماذكرت عن ترتيب الشموع , بعد التجربه وعمل الباك تست وجدت العكس كالتالى ...
[Open[0 تعني إفتتاح الشمعة الحالية
[Open[1 تعني إفتتاح الشمعة التالية
[Open[2 تعني إفتتاح الشمعة بعد التالية
وهكذا
وقد ذكر فـ المعلومات عن دالةكود PHP:Open[]
ارجو رأيك هل ماسبق ذكره صحيح ام لا !!
- 27-04-2012, 11:32 PM #359
يا أخي عد الشموع يبدأ من الشمعة الحالية ( من اليمين ) وإنت راجع حتى سنة 1970
------------------
مفيش حاجة إسمها الشمعة التالية
يعني الشمعة الحالية دائما تأخذ الرقم 0 والشمعة السابقة 1
وعند إفتتاح شمعة جديدة
الشمعة الجديدة تأخذ الرقم 0 ........ والشمعة إللي كانت 0 تأخذ الرقم 1
-----------------------------------
لو على الكلام إللي إنت بتقوله
يبقى أنا هرجع بالشارت لأول شمعة في سنة 1970
وأبدأ العد في الشموع من أول سنة 1970 لغاية الشمعة الحالية
عشان أعرف رقم الشمعة الحالية
-----------------------------------------
ولو تذكر في شرح الويبنار
أستاذ أسامة
كتب على الشارت على الشمعة الحالية 0 والسابقة 1 وإللي قبلها 2 وإللي قبلها 3 وإللي قبلها 4
يعني إتجاه العد يكون من اليمين للشمال
----------------> --------------> --------------->
----------------> --------------> --------------->
- 28-04-2012, 12:16 AM #360
شكرا جزيلا ليك يا استاذ xcv بجد شرح اكتر من رائع و مميز ما شاء الله عليك