النتائج 1 إلى 8 من 8
- 26-05-2013, 05:13 AM #1
اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
السلام عليكم
ارفقت لكم اول اكسبيرت ابرمجه وللاسف لم يعمل
فكرة الاكسبيرت هي : اذا اغلق السوق بصعود يوم امس وفالاكسبيرت سوف يبحث عن شمعات صاعده يزيد وبشرط يزيد طولها (الفرق بين الافتتاح والاغلاق) عن 10 نقاط, فأذا وجد شمعه يزيد طولها عن 10 نقاط وايضا شمعه الديلي في اليوم السابق كانتت صاعده فسيدخل شراء بتحديد ربح وخساره (سوف نحددهما لاحقا).
نفس الشئ مع البيع......
انا برمجته على الخمس دقائق عملة اليورو دولار منصة خمسة منازل
ارفقت لكم الاكسبيرت الذي برمجته ارجو ان تتصفحوا الكود وتخبروني اين اخطائي
شكرا
- 26-05-2013, 06:48 AM #2
- 26-05-2013, 09:41 AM #3
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
ويوجد خطأ أخر في دالة OrderSend
أنت جعلت الأستوب لوز والتيك بروفت 200 وجعلت الماجيك نمبر متغير نصي " 436"
كود PHP:OrderSend(Symbol(),OP_BUY, 1,Ask, 3, 200, 200, "", "436", 0, Lime);
OrderSend(Symbol(),OP_SELL, 1,Bid, 3, 200, 200, "", "345", 0, Red);
وبالنسبة للتيك بروفت والأستوب لوز يجب أن يكون سعر من زوج العملة يعني مثلا 1.3050
فإنت لازم تعرف متغير خارجي للأستوب لوز والتيك بروفت تضع فيه عدد النقاط المرغوبة ثم تقوم بتحويلها في الإكسبيرت إلى سعر
بالشكل ده مثلا:
تعرف متغيرين خارجيين
كود PHP:extern int StopLoss=20;
extern int TakeProfit=20;
أولا في دالة إستارت
كود PHP:double SL,TP;
كود PHP:if (StopLoss==0){SL=0;}else {SL=Ask-StopLoss*point;}
if (TakeProfit==0){TP=0;} else {TP=Ask+TakeProfit*point;}
كود PHP:if (StopLoss==0){SL=0;} else {SL=Bid+StopLoss*point;}
if (TakeProfit==0){ TP=0;} else {TP=Bid-TakeProfit*point;}
- 26-05-2013, 02:08 PM #4
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
السلام عليكم ورحمة الله وبركاته .........
اولا انا قرأت مشاركتك وقرأت الكود و اعتذر عن رأيي مقدما ينقصه الكثير من التنظيم البرمجي ,,,,,, انا اخي الكريم مبتدئ جدا فيالبرمجه ولاحظت انه منقوص جدا جدا .......علي كل حل لنعيد ترتيب الافكار وان شاء الله سوف يكون سهل جدا كتابته
انت تقول اولا الاكسبيرت فكرته اذا اغلق السوق صعود يوم امس ....حسنا برمجيا ما معني صعود هذه ؟؟؟؟هل تقصد ان يوم امس كان صاعدا ؟؟؟؟؟ بمعني مثلا اليوم هو 26 /5 اي انك تقصد شمعة يوم 25 / 5 مثلا كاانت صاعده ؟؟؟؟
هل هذا ما تقصده من ان الاكسبيرت يحدد اذا اغلق علي صعود ام انه هناك وجهة نظر اخري لك عن انه اغلق علي صعود ؟؟؟؟؟
هذا اولا
ثاانيا
الاكسبيرت يبحث عن شمعه طولها اكثر من 10نقاط ...... هذه النقطه لوحدها معناها برمجيا انك تكتب loop تبحث عن الشموع بالشروط التي تريدها وانت في الاكسبيرت لم تكتب اي حلقه من الاساس ثم انك تريد ان تبحث في اي شموع ........... هل تريد ان تبحث في شموع الايام السابقه كلها ام اليوم الجديد فقط ام ماذا بالظبط ؟؟
ارجو اجابة هذه النقاط لانها محورية جدا في كتابة الكود ........
- 26-05-2013, 06:10 PM #5
شكرا على المعلومات القيمه
بارك الله فيك, لقد قرأت الكود ورأيت بأنك برمجته كما طلبت بالضبط
واجهتني مشكلة واحده عندما عملت باك تيست بأنه يفتح فقط صفقه واحده ولا يفتح صفقات اخرى بعد اغلاق الصفقه الاولى
كيف نقدرنعملوا بأنه يستمر بالعملولا يتوقف عند اغلاق اول صفقه؟
شكرا
- 26-05-2013, 06:14 PM #6
السلام عليكم
في البدايه اعذرني على لخبطة الكود لانني اول مره بعمل اكسبيرت
اليوم السابق صاعد : اذا كاناليوم الجمعه بكون قصدي بأنه سعر الاغلاق اعلى من سعر الافتتاح في يوم الخميس
لا نحتاج الى loop لاننا لا نبحث عن شمعات وانما دائما نفحص اذا كانت الشمعه الاخيره التي اغلقت الفرق بين الافتتاح والبيع اكثر منعشرة نقاط
- 26-05-2013, 06:31 PM #7
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
يبقى هنستغني عن المتغير LastOrder
وتقوم بتعريف متغير خارج الدوال مثلا
كود PHP:int time;
وتجعل من شروط البيع والشراء أن : && time!=Time[0])
يعني التعديل يكون بالشكل ده
كود PHP:if (UP==true && Close[1]-Open[1]>CandleLenght*point && time!=Time[0])
{
if (StopLoss==0){SL=0;}else {SL=Ask-StopLoss*point;}
if (TakeProfit==0){TP=0;} else {TP=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY, 1,Ask, 30, SL, TP, "", MagicNumber, 0, Lime);
time=Time[0];
}
if (UP==false && Open[1]-Close[1]>CandleLenght*point && time!=Time[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, 1,Bid, 30, SL, TP, "", MagicNumber, 0, Red);
time=Time[0];
}
- 26-05-2013, 07:18 PM #8