النتائج 31 إلى 45 من 192
الموضوع: أصنع أكسبرتك بنفسك
- 08-11-2011, 08:04 PM #31
نبدأ أولا بالنظر لصندوق الأعدادت للمؤشر كما بالصور التالية ويكون الكود الذي سنجربه هو
كود:iCustom(NULL,0,"Laguerre",0.7,950,0,0)
- 08-11-2011, 08:10 PM #32
الخطوة التالية نعمل سكربت الأختبار ونضعه بالمجلد script ونشغله مرتين مرة للشمعة الحالية 0 ومرة علي بعد 5 شمعات ونقارن النتائج مع وجود المؤشر بملف المؤشرات
كود:#property show_confirm int start() { double Test; Test=iCustom(NULL,0,"Laguerre",0.7,950,0,0); Alert(Test); return(0); }كود:#property show_confirm int start() { double Test; Test=iCustom(NULL,0,"Laguerre",0.7,950,0,5); Alert(Test); return(0); }
سنجد النتائج متطابقة يعني الكود المطلوب هو
كود:iCustom(NULL,0,"Laguerre",0.7,950,0,0)
- 08-11-2011, 08:13 PM #33
مجهود متميز،
ارجوا ان يستفيد الاخوه من هذا العمل،
الله بارك فيك.
- 08-11-2011, 10:24 PM #34
وبعد أن عرفنا كود المؤشر نعمل الأكسبرت.
كود:extern int Takeprofit=60; extern int StopLoss=60; extern double Lot=0.1; extern int Magic=5489; double R; int init() { return(0); } int deinit() { Comment(""); return(0); } int start() { Comment("LaguerreEA"); int T; for (int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if ((OrderType() == OP_BUY||OrderType() == OP_SELL)&& T< OrderTicket()) { T= OrderTicket(); } } } R= iCustom(NULL,0,"Laguerre",0.7,950,0,0); if(R>0.75&&T==0) // Buy { T=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-StopLoss*Point,Ask+Takeprofit*Point,"",Magic,0,Red); if(T<0){ Sleep(5000); RefreshRates(); Print(GetLastError()); } } if(R<0.15&&T==0) //Sell { T=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+StopLoss*Point,Bid-Takeprofit*Point,"",Magic,0,Red); if(T<0){ Sleep(5000); RefreshRates(); Print(GetLastError()); } } return(0); }كود:extern int Takeprofit=60; extern int StopLoss=60; extern double Lot=0.1; extern int Magic=5489; double R;
كود:int deinit() { Comment(""); return(0); } int start() { Comment("LaguerreEA");
كود:int T; for (int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if ((OrderType() == OP_BUY||OrderType() == OP_SELL)&& T< OrderTicket()) { T= OrderTicket(); } } }
كود:R= iCustom(NULL,0,"Laguerre",0.7,950,0,0);
كود:if(R>0.75&&T==0) // Buy { T=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-StopLoss*Point,Ask+Takeprofit*Point,"",Magic,0,Red);
Ask وهو سعر الطلب و Bid هو سعر العرض .
و Point تساوي 0.0001 أو 0.00001 أو0.01 علي حسب الشركة والعملة . .
كود:if(T<0){ Sleep(5000); RefreshRates(); Print(GetLastError()); } }آخر تعديل بواسطة Ram22 ، 08-11-2011 الساعة 10:28 PM
- 08-11-2011, 10:46 PM #35
أن شاء الله. ولا تكفي تعلم لغة MQL4 لمن يريد أن يصنع أكسبرتات ناجحة فلابد من تعلم لغات أخري فيوجد مبرمجين أجانب يصنعون برامج تقارن أستراتيجيات كثيرة ثم تختار أفضلها وتعد الأكسبرت اللازم لها بسرعة والمقارنة علي سنوات سابقة وعمل مثل هذا لا بد من تعلم لغات أخري غير MQL4 كي يتم عمله.
- 08-11-2011, 10:51 PM #36
- 09-11-2011, 02:43 AM #37
متابع معك اخى الكريم
سوف ابدأ التطبيق ابتداء من يوم السبت القام لانى الان اتابع من خارج منزلى .. على السريع يعنى
تقبل كامل احترامى استاذنا الكريم
- 09-11-2011, 07:36 PM #38
اين انت اليوم استاذنا الكريم ؟
متابع معك اخى رامى ومنتظر تكمله دروسك الجميله
تقبل ودى اخى
- 09-11-2011, 08:10 PM #39الدوال الفرعية
الدالة الفرعية هي دالة تكون مسؤلة عن مهمة معينة بداخل الأكسبرت ويتم أستدعاء النتائج الي الدالة الرئيسية وتساعد علي تنظيم العمليات داخل الأكسبرت وبناء الأكسبرت المعقد جزء جزء.
وممكن تكون بهذا الشكل
كود:bool LastLow(int t,double r) { bool G; // Code return(G); }
كود:void LastLow(int t,double r) { bool G; // Code }كود:double LastLow(int t,double r) { double G; // Code return(G); }
- 09-11-2011, 08:21 PM #40
توجد لغات كثيرة مثل #C و ++C و فجول بيسك وماتلاب وكل لغة لها مميزاتها وعيوبها يعني ++C صعبة جدا وممتازة جدا والفجول بيسك سهلة وبها عيوب و #C تختلف عن MQL4 ولكن بها نوع من الشبه . والميزة باللغات الأخري أنك لو أتقنتها تستطيع عمل برنامج يحلل ويختبر ويعمل أكسبرت بمعرفتك وتعمل باك تست للأستراتيجيات بها الميزات التي تريدها .
- 09-11-2011, 08:36 PM #41
مثال : أعمل أكسبرت يقوم بأخبارنا أين يتحرك السعر الأن بالنسبة للمؤشر الموجود بالصورة بأستخدام الدوال الفرعية ويظهر لنا صندوق يخبرنا عن مكان السعر .
- 09-11-2011, 09:20 PM #42
الخطوة الأولي نعد الكود الذي نحتاجه لأستدعاء المؤشر ويكون عندنا خمسة أكواد نحتاج أن نختبرها
كود:R1= iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,0,0);
كود:R2=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,1,0);
كود:R3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,2,0);
كود:R3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,3,0);
كود:R3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,4,0);
- 09-11-2011, 09:25 PM #43
- 09-11-2011, 09:51 PM #44
الخطوة التالية نعمل أسكربت الأختبار ونجرب الأكواد الخمسة السابقة
كود:#property show_confirm int start() { double R1,R2,R3,R4,R5; R1=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,0,0); R2=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,1,0); R3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,2,0); R4=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,3,0); R5=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,4,0); Alert("المتغير الأول "+R1); Alert("المتغير الثاني "+R2); Alert("المتغير الثالث "+R3); Alert("المتغير الرابع "+R4); Alert("المتغير الخامس "+R5); return(0); }
أدني خط هو
كود:iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,4,0)
كود:iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,2,0)
كود:iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,0,0)
كود:iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,1,0)
كود:iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,3,0)
- 09-11-2011, 11:01 PM #45
ويكون الأكسبرت هو
كود:int T; double Line1,Line2,Line3,Line4,Line5; int init() { Alarm(); return(0); } int start() { Alarm(); return(0); } int Pricenow(double price){ int Q; Lines(); if(price > Line4)Q=1; if(price < Line4&&price>Line2)Q=2; if(price < Line2&&price>Line1)Q=3; if(price < Line1&&price>Line3)Q=4; if(price < Line3&&price>Line5)Q=5; if(price < Line5)Q=6; return(Q); } void Lines(){ Line1=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,0,0); Line2=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,1,0); Line3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,2,0); Line4=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,3,0); Line5=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,4,0); } void Alarm(){ T=Pricenow(Bid); if(T==1)Alert("السعر يتحرك فوق المؤشر"); if(T==2)Alert("السعر يتحرك تحت الخط العلوي وفوق الخط قبل العلوي"); if(T==3)Alert("السعر يتحرك فوق خط المركزوتحت الخط الذي قبله"); if(T==4)Alert("السعر يتحرك تحت خط المركز وفوق الخط الذي قبله"); if(T==5)Alert("السعر يتحرك مابين الخط الأخير والذي قبله"); if(T==6)Alert("السعر يتحرك تحت المؤشر"); }
ولتسهيل عمله قمنا بتقسيم الشارت لستة مناطق مرقمة من 1 الي 6 وتقوم هذه الدالة الفرعية بأرسال أرقام تبين مكان السعر
كود:int Pricenow(double price){ int Q; Lines(); if(price > Line4)Q=1; if(price < Line4&&price>Line2)Q=2; if(price < Line2&&price>Line1)Q=3; if(price < Line1&&price>Line3)Q=4; if(price < Line3&&price>Line5)Q=5; if(price < Line5)Q=6; return(Q); }
كود:void Lines(){ Line1=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,0,0); Line2=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,1,0); Line3=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,2,0); Line4=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,3,0); Line5=iCustom(NULL,0,"Center of Gravity",125,2,0,2,1102,4,0); }
كود:void Alarm(){ T=Pricenow(Bid); if(T==1)Alert("السعر يتحرك فوق المؤشر"); if(T==2)Alert("السعر يتحرك تحت الخط العلوي وفوق الخط قبل العلوي"); if(T==3)Alert("السعر يتحرك فوق خط المركزوتحت الخط الذي قبله"); if(T==4)Alert("السعر يتحرك تحت خط المركز وفوق الخط الذي قبله"); if(T==5)Alert("السعر يتحرك مابين الخط الأخير والذي قبله"); if(T==6)Alert("السعر يتحرك تحت المؤشر"); }