النتائج 1 إلى 10 من 10
الموضوع: السلام عليكم طلب كود
- 23-04-2012, 06:42 PM #1
السلام عليكم طلب كود
السلام عليكم ورحمة الله وبركاته
اخي مستر دولار والخبراء فى البرمجه كنت قد طلبت كود مساعد للتوقيت اليومي فى موضوع ثاني
استخدم اكسبرت اومر معلقه باى وسل استوب كل المطلوب فى حال فعلنا التوقيت اليومي ونفترض كان من 7 الى 17 لو وصل الساعه 17 وكان عنده صفقات مفتوحه يكمل فتح باى وسل استوب الى ان يغلق الصفقات المفتوحه ولو اغلق الصفقات يوقف عن العمل الى بكره الساعه 7 وثم يعاود العمل
حاولت اضافة كود الى كود التوقيت ولاكن شكله عنيد ما يسمع الكلام
شكرا مقدما
- 23-04-2012, 07:49 PM #2
- 23-04-2012, 10:08 PM #3
نخدمك فى الافرااااااااح حاولت من قبل ولاكن ما نفع معي احتمال ما اخلى الكود مكانه الصحيح هل ممكن ضبط الاكسبرت او حتى المحاوله
المطلوب فى حال تم تفعيل خيار التوقيت UseTimeFilter ترو يعمل طول الفتره المتاحه وعند انهاء الوقت ينظر الى الصفقات الموجوده فى حال عنده صفقات يكمل عمله طبيعى وضع اومر معلقه حتى اغلاق الصفقات ومن ثم ينتظر الى اليوم الثاني وجزاك الله خير
مرفق الاكسبرت
- 23-04-2012, 11:03 PM #4
- 23-04-2012, 11:28 PM #5
- 24-04-2012, 08:19 AM #6
اخي Prog_Man صارت معي مشكله وهذه المششكله غير موجوده فى الباك تست فقط على التداول على الديمو وهي عند وصول الربح المحدد الاكسبرت لا يغلق جميع الصفقات المعلقه والمفتوحه ولاكن يكتفى باغلاق جزء بسيط من الصفقات ثم يعاود فتح اومر معلقه وينسى الباقيي شكله فيه الزهايمر لا يتعدى صفقتيني او ثلاث ويوقف شو الحل فى رايك مع العلم انى ركبت جميع الاكواد الموجوده فى المنتدى من دون فايده
- 24-04-2012, 09:00 AM #7
هذا لأن في الباك التيست كل شي مثالي وخاصة في الاستجابة للأوامر لكن في التداول على اللايف (ديمو أو حقيقي)
فهناك عوامل أخرى تأثر مثل استجابة السيرفر أو سرعة الإنترنت وهذا ما يسبب تجاهل الإكسبرت لإغلاق بعض الأوامر وخاصة أنك محدد عدد المحاولات له بـ 10 محاولات للإغلاق وعند خروج البرنامج من الأمر while وقد أغلق بعض الأوامر فإن الربح قل وعند العودة مرة أخرى للشرط فلن يتحقق فيكمل مسيرته
التعديل
ملاحظة : جربته فقط على الباك تيست.كود PHP:if((Profit(OP_BUY)+Profit(OP_SELL)>=USD_Profit&&CloseInUSD_Profit)||(Profit(OP_BUY)+Profit(OP_SELL)<=USD_Loss&&CloseInUSD_Loss)||
(UseCloseDaily&&Hour()==Close_Hour)||(Hour()==WeeklyClose_Hour&&UseWeeklyClose&&DayOfWeek()==5)||a>0)
{
a=1;
while(a>0)
{
CloseAllOrders();DeletePendingOrders();
if(orderscnt(OP_BUY)+orderscnt(OP_SELL)+orderscnt(OP_BUYSTOP)+orderscnt(OP_SELLSTOP)==0) a=0;
}
if(a>0)return(0);
}
هذا والله أعلم
- 24-04-2012, 10:01 AM #8
اسمحلى عاد ناوى اتعبك لانى اشوف فيك الخبره فى هذا المجال
وصحيح مثل ما قلت المشكله من السيفر ومدى الاستجابه من ملاحظتى للاكسبرت عند الاغلاق يقوم باغلاق الاومر المعلقه قبل وبداء اغلاق بعض العقود قد تغلق كامله وفى اغلب الاوقات لازم يخلى كم عقد المشكله اتوقع انا معطين الاكسبرت امر فى حال عدم وجود صفقات معلقه يفتح صفقه معلقه وعند الاغلاق الصفقات المعلقه يكتشف انه ما عنده صفقات معلقه ويحاول يفتح صفقات معلق ويصير ضغط على السيفر وخاصه مثل ما شفت مخليله عدة محاولات لفتح الصفقه هل ممكن نخلى الاكسبرت ينام دقائق ويرتاح لحين الاغلاق بعدها يبداء عمله
شئ اخر يمكن شفت انا مخلى اغلاق الاومر المعلقه اذا كانت اكبر من 1 والسب انى حصلت الاكسبرت فاتح اكثر من امر معلق وما عرفت احلها الا بهدذا الكود
if(orderscnt(OP_SELLSTOP)>1||orderscnt(OP_BUYSTOP) >1)DeletePendingOrders();
- 24-04-2012, 08:01 PM #9
مرحبا بك أخي
نعم الإكسبرت عند عدم وجود صفقة معلقة من نوع BuyStop أو SellStop يضع أمر معلق
أما بخصوص جعل الإكسبرت في حالة انتظار هناك امر في اللغة هو
لكن هو لن ينفع لأنه سيوقف عمل الاكسبرت بالكامل للفترة المحددهكود:void Sleep( int milliseconds)
أما الحل الذي اتبعته في التعديل السابق هو إضافة متغير a عند تحقق شرط الإغلاق للأوامر وإعطائه قيمة أكبر من صفر و منع الإكسبرت من التقدم مادام قيمة a أكبر من صفر ويرجع a إلى صفر عند حذف جميع الاوامر
لا أعلم إن كنت جربته وعمل بشكل جيد أو لا؟؟؟
أما بخصوص فتح الإكسبرت أكثر من صفقة معلقة فعلى ما أظن بسبب هذا الكود
حيث عند فشل وضع الأمر المعلق وإعطاء المتغير ticket =-1 فهنا سيدخل حلقة while وشرطها أن تقف حين تكون قيمة ticket أكبر من أو يساوي صفر وهذا لن يحدث لأنه لم يسند إلى المتغير ticket أي قيمة داخل الحلقةكود: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++;}
آسف على الإطالة لكن أحببت أن أوضح ما يحصل
على العموم مرفق الإكسبرت فيه تعديل ما ذكرت
والله الموفق
- 24-04-2012, 10:35 PM #10
جزاك الله خير اخي Prog_Man لك الشكر والتقدير اخي الكريم ما قصرت بحاول اعدل على الداله CloseAllOrders لانى اختبرت السابق ونفس المشكله مخصص الربح 500 ووصل الربح الى 2000 ولا اغلق ولاكن وجدت انه اغلق الصفقات المعلقه كذا مره وعند ما اغلقت الميتاتريدير ورجعت فتحته اغلق شكله عنده مشاكل عائليه هههه وما انتبه وبعد ان شاء الله بختبر هذا بكره اذن الله ونشوف تحياتي
الأكثر زيارة
رد مع اقتباس