اقتباس:
المشاركة الأصلية كتبت بواسطة uae forex
اسمحلى عاد ناوى اتعبك لانى اشوف فيك الخبره فى هذا المجال
وصحيح مثل ما قلت المشكله من السيفر ومدى الاستجابه من ملاحظتى للاكسبرت عند الاغلاق يقوم باغلاق الاومر المعلقه قبل وبداء اغلاق بعض العقود قد تغلق كامله وفى اغلب الاوقات لازم يخلى كم عقد المشكله اتوقع انا معطين الاكسبرت امر فى حال عدم وجود صفقات معلقه يفتح صفقه معلقه وعند الاغلاق الصفقات المعلقه يكتشف انه ما عنده صفقات معلقه ويحاول يفتح صفقات معلق ويصير ضغط على السيفر وخاصه مثل ما شفت مخليله عدة محاولات لفتح الصفقه هل ممكن نخلى الاكسبرت ينام دقائق ويرتاح لحين الاغلاق بعدها يبداء عمله
شئ اخر يمكن شفت انا مخلى اغلاق الاومر المعلقه اذا كانت اكبر من 1 والسب انى حصلت الاكسبرت فاتح اكثر من امر معلق وما عرفت احلها الا بهدذا الكود
if(orderscnt(OP_SELLSTOP)>1||orderscnt(OP_BUYSTOP) >1)DeletePendingOrders();
مرحبا بك أخي
نعم الإكسبرت عند عدم وجود صفقة معلقة من نوع BuyStop أو SellStop يضع أمر معلق
أما بخصوص جعل الإكسبرت في حالة انتظار هناك امر في اللغة هو
كود:
void Sleep( int milliseconds)
لكن هو لن ينفع لأنه سيوقف عمل الاكسبرت بالكامل للفترة المحدده
أما الحل الذي اتبعته في التعديل السابق هو إضافة متغير a عند تحقق شرط الإغلاق للأوامر وإعطائه قيمة أكبر من صفر و منع الإكسبرت من التقدم مادام قيمة a أكبر من صفر ويرجع a إلى صفر عند حذف جميع الاوامر
لا أعلم إن كنت جربته وعمل بشكل جيد أو لا؟؟؟
أما بخصوص فتح الإكسبرت أكثر من صفقة معلقة فعلى ما أظن بسبب هذا الكود
كود:
ticket= OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(Ask+Step*point,Digits),Slippage*Q,SL,TP,"ALSHAMSIEA",MagicNumber,0,Blue);
while(ticket<0&&Try<OpenOrderTry){
if(IsTradeAllowed())OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(Ask+Step*point,Digits),Slippage*Q,SL,TP,"ALSHAMSIEA",MagicNumber,0,Blue);Sleep(2000);Try++;}
حيث عند فشل وضع الأمر المعلق وإعطاء المتغير ticket =-1 فهنا سيدخل حلقة while وشرطها أن تقف حين تكون قيمة ticket أكبر من أو يساوي صفر وهذا لن يحدث لأنه لم يسند إلى المتغير ticket أي قيمة داخل الحلقة
آسف على الإطالة لكن أحببت أن أوضح ما يحصل
على العموم مرفق الإكسبرت فيه تعديل ما ذكرت
والله الموفق