1 مرفق
رد: كود العمل فى وقت معين
شوف حبيبي
والله اخوك ماله في الاكسبيرتات
بس هذا اكسبيرت هيدج فيه ميزه زمن البدء والانتهاء اكيد بيفيدك في عمل اكسبيرتك
رد: كود العمل فى وقت معين
السلام عليكم
طلبت من الكود أن يعيد القيمة 0
إذا لم يتحقق الشرط 7 أصغر من 17
و بما أن الشرط 7 أصغر من 17 دائما
فالكود يعيد القيمة 0 دائما
بما أنك تريد العمل في الساعات المحصورة بين
7 و 17 لماذا لا تجعل الكود هكذا ؟
كود:
if( Hour() <= FromHourTrade
|| Hour() > ToHourTrade )
{Comment("Non-Trading Hours!");return(0);}
رد: كود العمل فى وقت معين
اقتباس:
المشاركة الأصلية كتبت بواسطة a7med920
السلام عليكم
مستر دولار والاخوه المبرمجين
عندى اكسبيرت بسيط اريد ان ادخل عليه العمل فى اوقات معينه فاضفت الكود التالى ضمن الداله ستارت
كود:
if (UseHourTrade){
if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))){
Comment("Non-Trading Hours!");
return(0);
}
}
كود:
extern bool UseHourTrade = false;
extern int FromHourTrade = 7;
extern int ToHourTrade = 17;
اما هذا الاخير فهو تعريف للمتغيرات
واصبح الاكسبيرت لا يعمل نهائيا مع انى عند عمل كومبايل لا يخرج اى اخطاء
ما هو السبب برجاء الافاده وشكرا لتعاونكم الدائم معى
الكود صحيح راجع مره أخرى الإكسبرت فربما أن الشروط هي التي لم تتحقق
رد: كود العمل فى وقت معين
اقتباس:
المشاركة الأصلية كتبت بواسطة shift
السلام عليكم
طلبت من الكود أن يعيد القيمة 0
إذا لم يتحقق الشرط 7 أصغر من 17
و بما أن الشرط 7 أصغر من 17 دائما
فالكود يعيد القيمة 0 دائما
بما أنك تريد العمل في الساعات المحصورة بين
7 و 17 لماذا لا تجعل الكود هكذا ؟
كود:
if( Hour() <= FromHourTrade
|| Hour() > ToHourTrade )
{Comment("Non-Trading Hours!");return(0);}
إذا إستخدمت الكود بهذه الطريقه فلن يعمل بشكل صحيح إذا جعلت على سبيل المثال FromHourTrade =20 و ToHourTrade =3
فإذا كان التوقيت الحالي 22 فهو ما زال توقيت عمل الإكسبرت لكن راجع الشرط الذي وضعته
كود PHP:
Hour() > ToHourTrade
بالتالي لن يعمل الإكسبرت
لكن الشروط الحاليه التي وضعها
كود PHP:
(FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade)
إذا لم يتحقق شرط أن توقيت البدايه أقل من توقيت النهايه و الساعة الحاليه أكبر من ساعة البدايه وأقل من ساعة النهايه
أو
كود PHP:
(FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade)
توقيت البدايه أكبر من توقيت النهايه والتوقيت الحاليه أكبر من ساعة البدايه أو التوقيت الحالي أقل من ساعة النهايه وهذا الكود حل مشكله إذا كان بداية العمل أكبر من نهاية العمل
فمثلا إذا جعلنا FromHourTrade =20 و ToHourTrade =3 ففي هذه الحاله سوف يقارن الإكسبرت التوقيت بالحاله الثانيه
فإذا كان الوقت الحاله أكبر من ساعة البدايه والوقت الحالي 23 فبالتالي الشرط صحيح أو التوقيت الحالي أقل من ساعة النهايه فإذا كان التوقيت 2 فالشرط أيضا صحيح
ثم إستخدام الرمز ! فإذا لم تتحقق الشرط السابقه سوف يعود بالقيمه 0 أما إذا تحققت أن التوقيت هو توقيت عمل الإكسبرت فسوف يكمل عمله
وهذا الكود أدق من الكود الإعتيادي
كود PHP:
if(!(Hour()>=StartHour&&Hour()<=EndHour)){
Comment("Non-Trading Hours!");
return(0);
}
فإذا كان توقيت بداية عمل الإكسبرت 20 وتوقيت نهاية العمل 3 فإذا قارنا الشرط إذا كانت الساعة الحاليه لنفرض أنها 22 أكبر من ساعة البدايه 20 و الساعة الحاليه 22 أقل من نهاية العمل 3 بالتالي لم يتحقق الشرط الثاني
لذلك أضفنا الجزء الثاني في الكود الأول وهو إذا كان توقيت البدايه أكبر من توقيت النهايه
حيث انه حل مشكلة
رد: كود العمل فى وقت معين
فعلا الكود طلع صحسيح وطلعت انا اجرب على اكسبيرت منتهى الصلاحيه وفعلا اشتغل معايا ولكن مازالت هناك مشكلة
انا اريد ان اجعل الاكسبيرت مثلا النهايه له الساعه 9 صباحا ومازالت هناك صفقات مفتوحه اريد ان يتابعها ويغير من التارجت وكل شيئ واول ما يغلق الصفقات لا يعمل مره اخرى يعنى لو قفل الصفقات الساعه 9:40 لا يفتح صفقات تانيه لانى لاحظت اول لما الساعه تيجى 9 ينهى الاكسبيرت عمله ويترك الصفقات بدون متابعه ففكرت انى اضع الشرط الخاص بالوقت قبل الداله OrderSend باى وسيل اى قبل اوامر البيع والشراء فهل هذا صحيح ام لا ؟ لو خطأ ماذا افعل شكرا للتعاون االدئم معى
رد: كود العمل فى وقت معين
اقتباس:
المشاركة الأصلية كتبت بواسطة a7med920
فعلا الكود طلع صحسيح وطلعت انا اجرب على اكسبيرت منتهى الصلاحيه وفعلا اشتغل معايا ولكن مازالت هناك مشكلة
انا اريد ان اجعل الاكسبيرت مثلا النهايه له الساعه 9 صباحا ومازالت هناك صفقات مفتوحه اريد ان يتابعها ويغير من التارجت وكل شيئ واول ما يغلق الصفقات لا يعمل مره اخرى يعنى لو قفل الصفقات الساعه 9:40 لا يفتح صفقات تانيه لانى لاحظت اول لما الساعه تيجى 9 ينهى الاكسبيرت عمله ويترك الصفقات بدون متابعه ففكرت انى اضع الشرط الخاص بالوقت قبل الداله OrderSend باى وسيل اى قبل اوامر البيع والشراء فهل هذا صحيح ام لا ؟ لو خطأ ماذا افعل شكرا للتعاون االدئم معى
نعم صحيح
رد: كود العمل فى وقت معين
بالفعل غيرت مكان الشرط من داله ستارت الى ما قبل اوامر الشراء والبيع وجدت شيئ غريب جدا الاكسبيرت نظام مضاعفات اول لما اجربه على البكا تست يعمل اوردر باى واوردر سيل ولا يضع اوامر معلقه الا وقت تحقق الوقت ولا يلغيها الا وقت انتهاء الوقت ولكن انا اريد ان يبدا جميع اجزاء الاكسبيرت فى الوقت المحدد ويتوقف عن وضع عمليات بيع وشرا بعد انتهاء الوقت ويتابع ويعمل modefy للعمليات المفتوحه بعد انتهاء الوقت وبمجرد ان تغلق لا يفعل اى شيئ اخر
اذن انا عندى جزء الاوامر الحيه وجزء الاوامر المعلقه وجزء التعديل وجزء ستارت اين اضع داله شرط الدخول؟
رد: كود العمل فى وقت معين
الان جربت ان اضع الكود فى الاوردر باى والاوردر سيل والاوردر باى ليميت والاوردر سيل ليميت وتحقق ان الاكسبيرت يبدا فعلا كاملا بكل مشتملاته فى ساعه معينه وبعد انتهاء الفتره يقف ولكن مازالت الاوردرات سيل تتفعل فقط ما هو الخطأ؟
رد: كود العمل فى وقت معين
أرفق الإكسبرت لكي نستطيع مساعدتك ولا فكيف سنعرف ما تتكلم عنه
رد: كود العمل فى وقت معين
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
أرفق الإكسبرت لكي نستطيع مساعدتك ولا فكيف سنعرف ما تتكلم عنه
والله لو ارفقت الاكسبيرت لم اتعلم شيئ ولكن اخر لما حتعب حضطر ارفقه انا عاوز تشجيع عشان اتعلم مش عاوز كل حاجة على الجاهز انت استاذ ولازم نتعلم منك بصراحه وااقل واجب من تجاهى انى اسعى واتعلم تقديرا لتعبك بصراحه
اشكرك لمساعدتك اخ اسامه
رد: كود العمل فى وقت معين
اقتباس:
المشاركة الأصلية كتبت بواسطة a7med920
والله لو ارفقت الاكسبيرت لم اتعلم شيئ ولكن اخر لما حتعب حضطر ارفقه انا عاوز تشجيع عشان اتعلم مش عاوز كل حاجة على الجاهز انت استاذ ولازم نتعلم منك بصراحه وااقل واجب من تجاهى انى اسعى واتعلم تقديرا لتعبك بصراحه
اشكرك لمساعدتك اخ اسامه
ما أقصده هو أننا حاليا لا نعلم كيف قمت بترتيب الأكواد في الإكسبرت لذلك لن نستطيع مساعدتك بشكل كامل لكن بكل حال الداله الخاصه بالوقت السابق ذلك إذا وضعتها في أي مكان وكان التوقيت غير توقيت عمل الإكسبرت فعندما تقوم الداله بمقارنة التوقيت ولم يتحقق الشرط فسوف تنهي عمل الداله الحالي وتعود للعمل من البدايه مره أخرى وهذا وظيفة الأمر return وعلى هذا الأساس يجب أن تضع الكود ويمكنك التعديل في الداله حسب ما تريد وحتى تتناسب مع كيفية عمل الإكسبرت