1 مرفق
اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
السلام عليكم
ارفقت لكم اول اكسبيرت ابرمجه وللاسف لم يعمل :no3:
فكرة الاكسبيرت هي : اذا اغلق السوق بصعود يوم امس وفالاكسبيرت سوف يبحث عن شمعات صاعده يزيد وبشرط يزيد طولها (الفرق بين الافتتاح والاغلاق) عن 10 نقاط, فأذا وجد شمعه يزيد طولها عن 10 نقاط وايضا شمعه الديلي في اليوم السابق كانتت صاعده فسيدخل شراء بتحديد ربح وخساره (سوف نحددهما لاحقا).
نفس الشئ مع البيع......
انا برمجته على الخمس دقائق عملة اليورو دولار منصة خمسة منازل
ارفقت لكم الاكسبيرت الذي برمجته ارجو ان تتصفحوا الكود وتخبروني اين اخطائي:hands:
شكرا
1 مرفق
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
اقتباس:
المشاركة الأصلية كتبت بواسطة bank_forex
السلام عليكم
ارفقت لكم اول اكسبيرت ابرمجه وللاسف لم يعمل :no3:
فكرة الاكسبيرت هي : اذا اغلق السوق بصعود يوم امس وفالاكسبيرت سوف يبحث عن شمعات صاعده يزيد وبشرط يزيد طولها (الفرق بين الافتتاح والاغلاق) عن 10 نقاط, فأذا وجد شمعه يزيد طولها عن 10 نقاط وايضا شمعه الديلي في اليوم السابق كانتت صاعده فسيدخل شراء بتحديد ربح وخساره (سوف نحددهما لاحقا).
نفس الشئ مع البيع......
انا برمجته على الخمس دقائق عملة اليورو دولار منصة خمسة منازل
ارفقت لكم الاكسبيرت الذي برمجته ارجو ان تتصفحوا الكود وتخبروني اين اخطائي:hands:
شكرا
مرفق التعديل
1 مرفق
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
مرفق التعديل
ويوجد خطأ أخر في دالة 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);
أولا يجب أن يكون الماجيك نمبر عدد صحيح بدون علامات التنصيص يعني مثلا 10001
وبالنسبة للتيك بروفت والأستوب لوز يجب أن يكون سعر من زوج العملة يعني مثلا 1.3050
فإنت لازم تعرف متغير خارجي للأستوب لوز والتيك بروفت تضع فيه عدد النقاط المرغوبة ثم تقوم بتحويلها في الإكسبيرت إلى سعر
بالشكل ده مثلا:
تعرف متغيرين خارجيين
كود PHP:
extern int StopLoss=20;
extern int TakeProfit=20;
ثم تجعل الإكسبيرت يقوم بالعمليات الحسابية لحساب التيك بروفت والأستوب لوز لكل عملية
أولا في دالة إستارت
ثم قبل عملية الشراء
كود 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;}
مرفق
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
اقتباس:
المشاركة الأصلية كتبت بواسطة bank_forex
السلام عليكم
ارفقت لكم اول اكسبيرت ابرمجه وللاسف لم يعمل :no3:
فكرة الاكسبيرت هي : اذا اغلق السوق بصعود يوم امس وفالاكسبيرت سوف يبحث عن شمعات صاعده يزيد وبشرط يزيد طولها (الفرق بين الافتتاح والاغلاق) عن 10 نقاط, فأذا وجد شمعه يزيد طولها عن 10 نقاط وايضا شمعه الديلي في اليوم السابق كانتت صاعده فسيدخل شراء بتحديد ربح وخساره (سوف نحددهما لاحقا).
نفس الشئ مع البيع......
انا برمجته على الخمس دقائق عملة اليورو دولار منصة خمسة منازل
ارفقت لكم الاكسبيرت الذي برمجته ارجو ان تتصفحوا الكود وتخبروني اين اخطائي:hands:
شكرا
السلام عليكم ورحمة الله وبركاته .........
اولا انا قرأت مشاركتك وقرأت الكود و اعتذر عن رأيي مقدما ينقصه الكثير من التنظيم البرمجي ,,,,,, انا اخي الكريم مبتدئ جدا فيالبرمجه ولاحظت انه منقوص جدا جدا .......علي كل حل لنعيد ترتيب الافكار وان شاء الله سوف يكون سهل جدا كتابته
انت تقول اولا الاكسبيرت فكرته اذا اغلق السوق صعود يوم امس ....حسنا برمجيا ما معني صعود هذه ؟؟؟؟هل تقصد ان يوم امس كان صاعدا ؟؟؟؟؟ بمعني مثلا اليوم هو 26 /5 اي انك تقصد شمعة يوم 25 / 5 مثلا كاانت صاعده ؟؟؟؟
هل هذا ما تقصده من ان الاكسبيرت يحدد اذا اغلق علي صعود ام انه هناك وجهة نظر اخري لك عن انه اغلق علي صعود ؟؟؟؟؟
هذا اولا
ثاانيا
الاكسبيرت يبحث عن شمعه طولها اكثر من 10نقاط ...... هذه النقطه لوحدها معناها برمجيا انك تكتب loop تبحث عن الشموع بالشروط التي تريدها وانت في الاكسبيرت لم تكتب اي حلقه من الاساس ثم انك تريد ان تبحث في اي شموع ........... هل تريد ان تبحث في شموع الايام السابقه كلها ام اليوم الجديد فقط ام ماذا بالظبط ؟؟
ارجو اجابة هذه النقاط لانها محورية جدا في كتابة الكود ........
رد:اول اكسبيرت ابرمجه وللاسف لم يعمل - ارجو المساعدة
اقتباس:
المشاركة الأصلية كتبت بواسطة bank_forex
شكرا على المعلومات القيمه
بارك الله فيك, لقد قرأت الكود ورأيت بأنك برمجته كما طلبت بالضبط
واجهتني مشكلة واحده عندما عملت باك تيست بأنه يفتح فقط صفقه واحده ولا يفتح صفقات اخرى بعد اغلاق الصفقه الاولى
كيف نقدرنعملوا بأنه يستمر بالعملولا يتوقف عند اغلاق اول صفقه؟
شكرا
يبقى هنستغني عن المتغير LastOrder
وتقوم بتعريف متغير خارج الدوال مثلا
وتجعله يأخذ قيمة الوقت الحالي بعد فتح بيع أو شراء
وتجعل من شروط البيع والشراء أن : && 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];
}
وبالتالي سيفتح صفقة إذا تحققت الشروط مع كل إفتتاح شمعة جديدة