2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
نعم صحيح بارك الله فيك
قمت بالتعديل على الإكسبيرت بالطريقتين أستاذي العزيز قبرجاء الإطلاع عليهما و إخباري إن كان هناك ما يمنعهما من العمل لأني واجهتني مشكلة في النسخة 2.1 أنه يعمل جيدا في صفقات الشراء ويفتح صفقات عادي جدا أثناء عمل الفيجوال باك تيست و لكن لا يفتح صفقات بيع نهائيا ... أظن أن المشكلة عندي في المنصات أو الويندوز ربما لأنها ليست المشكلة الأولى التي تواجهني ومع إكسبيرتات أخرى .. فرجاء الإطلاع و بارك الله فيك و في مالك و صحتك .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
السبب لأنك جعلت MaxTrades =3 فبالتالي هذا الشرط لن يفيد في حال أغلقت الإكسبرت وقمت بفتحه أيضا شرط
لن يفيد لأن قيمة T سوف تتغير عند تفعيل الإكسبرت مره أخرى وهذا هو السبب
لذلك يمكنك بدلا من إستخدام متغير T أن تستخدم المتغيرات العامة Global Variables
مثلا عند فتح الصفقه سوف تجعل
كود PHP:
GlobalVariableSet("T",Time[0]);
وعند المقارنه سوف تقارن
كود PHP:
GlobalVariableGet("T")!=Time[0]
وهذه المتغيرات لن تحذف أو تتغير قيمتها حتى إذا أغلقت المنصه إلا إذا قمت بحذفها أنت
كود PHP:
GlobalVariableDel("T")
وبالتالي سوف تحل المشكله لكن تأكد من أن تجعل إسم المتغيرات مثلا
كود PHP:
GlobalVariableSet("T"+Symbol(),Time[0]);
لماذا ؟
حتى إذا وضعت الإكسبرت على أكثر من عمله يكون لكل عمله المتغير الخاص به
إذا كنت لا تريد إستخدام هذه المتغيرات يمكنك بإستخدام الدوال بدلا من المتغير T سوف تستخدم دالة تقوم بمعرفة توقيت فتح آخر صفقه
كود PHP:
datetime LastOpenendOrder(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderOpenTime());
}
}
return(0);
}
ثم تضع الشرط
كود PHP:
Time[0]>LastOpenendOrder()
أخي أسامه أريد أن أستخدم هذا المتغير
كود PHP:
GlobalVariableGet("T"+Symbol())!=Time[0]
بدلا من
بأي إكسبيرت أبرمجه ... فهل أترك و أستخدم هذا التعريف الخارجي
كما هو أم أحذفه ..؟؟
و أستخدم بدلا منه هذا
وهل يؤثر هذا المتغير على عمل الإكسبيرت لإحتفاظة بالقيم ؟؟؟
وشكرا جزيلا ..
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
لاحظ الخطأ لديك في شروط أوامر البيع
كود PHP:
&& ObjectType("buy")==OBJ_TREND
أليس المفروض أنك ستبحث عن ترند البيع وليس ترند الشراء فإسم الترند سيكون sell وليس buy
نعم أخي أسامه ... لم أغير ال buy ل sell و لم أنتبه ... بارك الله في صحتك و عملك .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
أنت أساسا لن تحتاج إلى أي متغير لإن المتغيرات العامه Global Variables لا تحفظ القيم مباشرة في الميتاتريدر ولا تحفظها في متغيرات الإكسبرت
تمام أخي أسامه ... يعني الآن لو إستخدمت في الشروط
كود PHP:
GlobalVariableGet("T"+Symbol())!
وخارجيا
هذا يغني عن الكود الآخر و الإكسبيرت لن يفتح صفقات أيضا بشكل متتالي ؟؟؟؟
وشكرا جزيلا
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Julien145
إخوني أبحت عن كود يمكنني من تحديد نوع الإوردر المفتوح بيع أو شراء و شكرا جزيلا !!!
كود PHP:
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)Print(i," Order is Buy");
if(OrderType()==OP_SELL)Print(i," Order is Sell");
}
وضع إنت الأمر إللي هيتنفذ بدل من الأمر Print
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
أستاذ أسامة
لو عايز أخلي الإكسبيرت يبحث تحقق شروط المؤشر في عدد معين من الشموع
يعني لو عندي مؤشر في نافذة منفصلة أسفل الشارت
لو شراء المؤشر بيكون أزرق =1 والأحمر رقم كبير جدا
ولو بيع المؤشر بيكون أحمر = 1 والأزرق رقم كبير جدا
أنا بقى عايز أخليه بدل ما يبحث بالشكل ده
كود PHP:
double Confirm2_B=iCustom(Symbol(),0,"confirm2",0,1);
double Confirm2_R=iCustom(Symbol(),0,"confirm2",1,1);
عايزة أعرف متغير خاجي ConfirmBars بحيث ممكن تغيره
بحيث لو ConfirmBars = 3 مثلا
يبقى هيبحث لو أخر 3 نقاط في المؤشر زرقاء يشتري ولو أخر 3 نقاط حمراء يبيع
والكلام ده في 6 مؤشرات ( وكمان الـ 6 مؤشرات ليها متغيرات خارجية منطقية بحيث أختار يبحث شروط المؤشرات كلها ولا عدد معين منها )
بحث الشروط يكون إزاي ؟
مرفق الإكسبيرت لمحاولتي
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
تمام أخي أسامه ... يعني الآن لو إستخدمت في الشروط
كود PHP:
GlobalVariableGet("T"+Symbol())!
وخارجيا
هذا يغني عن الكود الآخر و الإكسبيرت لن يفتح صفقات أيضا بشكل متتالي ؟؟؟؟
وشكرا جزيلا
لن تحتاج لتعريف int T; لإن GlobalVariableSet تحفظ قيمتها في الميتا تريدر نفسه لمدة 4 أسابيع من أخر إستخدام للمتغير المحفوظ
يعني إنت لو بعد أمر الأوردر سيند وضعت
كود PHP:
GlobalVariableSet("T"+Symbol()+OrderLots(),Time[0]);
يبقى إنت كده حفظت متغير في الميتا تريدر نفسه
المتغير هو كود PHP:
"T"+Symbol()+OrderLots()
يعني ده كله إسم المتغير
يعني لو العملة اليورو دولار وحجم اللوت للصفقة 0.1 يبقى إنت كده عملت متغير في الميتا بإسم
TEURUSD0.1
وقيمته ستكون الخانة الأخيرة[Time[0
وعندما تحتاج إلى إستدعائه تستدعيه بالشكل ده
كود PHP:
GlobalVariableGet("T"+Symbol()+OrderLots())
فيعود بقيمة[Time[0
حتى أنك ممكن تستدعيه في إكسبيرت أخر لإنه يستدعي قيمته من الميتا
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
لن تحتاج لتعريف int T; لإن GlobalVariableSet تحفظ قيمتها في الميتا تريدر نفسه لمدة 4 أسابيع من أخر إستخدام للمتغير المحفوظ
أستاذ يوسف ، اذا لم يتم تعريف int T فـ المتغيرات الخارجية سيظهر الخطـأ التالى بعد عمل الكومبايل
كود PHP:
'T' - variable not defined
!!
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
أستاذ يوسف ، اذا لم يتم تعريف int T فـ المتغيرات الخارجية سيظهر الخطـأ التالى بعد عمل الكومبايل
كود PHP:
'T' - variable not defined
!!
لأ يا أخي يبقى إنت أكيد عامل حاجة غلط
جرب كده إعمل إكسبيرت جديد ( فاضي خالص )
وإكتب في إستارت
كود PHP:
GlobalVariableSet("T"+Symbol()+OrderLots(),Time[0]);
GlobalVariableGet("T"+Symbol()+OrderLots());
وإعمل Compile
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
لأ يا أخي يبقى إنت أكيد عامل حاجة غلط
جرب كده إعمل إكسبيرت جديد ( فاضي خالص )
وإكتب في إستارت
كود PHP:
GlobalVariableSet("T"+Symbol()+OrderLots(),Time[0]);
GlobalVariableGet("T"+Symbol()+OrderLots());
وإعمل Compile
أخيرا وجدت سبب ظهور خطـأ 'T' - variable not defined :doh:
كلامك صحيح وانا المشكلة كانت لدى انى استخدمت T فـ شرط آخر فـ الاكسيبرت ولم أعرف ذلك الا الآن ، ولذلك كانت تظهر رسالة خطـأ عدم تعريف T .
اشكرك بشدة يا استـاذ يوسـف :asvc:
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
لن تحتاج لتعريف int T; لإن GlobalVariableSet تحفظ قيمتها في الميتا تريدر نفسه لمدة 4 أسابيع من أخر إستخدام للمتغير المحفوظ
يعني إنت لو بعد أمر الأوردر سيند وضعت
كود PHP:
GlobalVariableSet("T"+Symbol()+OrderLots(),Time[0]);
يبقى إنت كده حفظت متغير في الميتا تريدر نفسه
المتغير هو كود PHP:
"T"+Symbol()+OrderLots()
يعني ده كله إسم المتغير
يعني لو العملة اليورو دولار وحجم اللوت للصفقة 0.1 يبقى إنت كده عملت متغير في الميتا بإسم
TEURUSD0.1
وقيمته ستكون الخانة الأخيرة[Time[0
وعندما تحتاج إلى إستدعائه تستدعيه بالشكل ده
كود PHP:
GlobalVariableGet("T"+Symbol()+OrderLots())
فيعود بقيمة[Time[0
حتى أنك ممكن تستدعيه في إكسبيرت أخر لإنه يستدعي قيمته من الميتا
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
أستاذ يوسف ، اذا لم يتم تعريف int T فـ المتغيرات الخارجية سيظهر الخطـأ التالى بعد عمل الكومبايل
كود PHP:
'T' - variable not defined
!!
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
لأ يا أخي يبقى إنت أكيد عامل حاجة غلط
جرب كده إعمل إكسبيرت جديد ( فاضي خالص )
وإكتب في إستارت
كود PHP:
GlobalVariableSet("T"+Symbol()+OrderLots(),Time[0]);
GlobalVariableGet("T"+Symbol()+OrderLots());
وإعمل Compile
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
أخيرا وجدت سبب ظهور خطـأ 'T' - variable not defined :doh:
كلامك صحيح وانا المشكلة كانت لدى انى استخدمت T فـ شرط آخر فـ الاكسيبرت ولم أعرف ذلك الا الآن ، ولذلك كانت تظهر رسالة خطـأ عدم تعريف T .
اشكرك بشدة يا استـاذ يوسـف :asvc:
شكرا جزيلا أخي يوسف ,,, و شكرا أخي سبايدر
و أنا في الحقيقه كنت سأسأل نفس سؤالك لأني قد أخذت هذا الكود من إكسبيرتك الأخير وحاولت إلغاء التعريف الخارجي فكان يظهر لي أيضا خطأ خند الكومبايل ,,,
شكرا جزيلا ياشباب و بالتوفيق