النتائج 1 إلى 4 من 4
- 10-05-2010, 10:47 PM #1
إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)
بناء على طلب أحد الأعضاء لشرح كيفية تحديد الفرق بين توقيت البروكر وتوقيت جرينتش بطريقة أوتوماتيكية قررت شرح الطريقه في موضوع مستقل
ملحوظه يجب أن يكون توقيت الكمبيوتر صحيح لأنه من خلاله سنقوم بمعرفة توقيت جرينتش
تقوم الفكره على إيجاد توقيت جرينتش وتوقيت البروكر ثم يكون الفرق بينهم هو الإختلاف أو كما يسمى GMT offset والذي تستخدمه أغلب إكسبرتات الإسكالبينج التي تعتمد على العمل فترة معينه ونظرا لإختلاف فرق التوقيت من بروكر لآخر فيتم إستخدام هذا الكود لتحديد التوقيت أوتوماتيكيا
وسنستخدم أحد مكتبات الدل الموجوده في الويندوز وهي مكتبة kernel32.dll
في البداية سنقوم بإستدعاء مكتبة الدل والأكواد المكتوبه بداخلها عن طريق الأمر import#
كما في الكود التالي
كود PHP:#import "kernel32.dll"
int GetTimeZoneInformation(int& TZInfoArray[]);
#import
كود PHP:extern bool AutomaticGMT_Offset=true;
extern int GMT_OffsetHour=0;
extern int StartHour = 7;
extern int EndHour = 20;
extern bool UseHourTrading= true;
سنقوم بكتابة الكود لمعرفة فرق التوقيت بين البروكر وتوقيت جرينتش
كود PHP:if (AutomaticGMT_Offset == TRUE) {
if (!(IsTesting() || IsOptimization())) {
int GMT_Shift=0;
int TZ_Info[43];
int DST = GetTimeZoneInformation(TZ_Info);
if (DST != 0)
GMT_Shift = TZ_Info[0];
if (DST == 2)
GMT_Shift += TZ_Info[42];
int GMTt = TimeLocal() + GMT_Shift * 60;
GMT_OffsetHour = ((TimeCurrent() - GMTt)/3500);
}
}
كود PHP:if (!(IsTesting() || IsOptimization()))
كود PHP:int GMT_Shift=0;
int TZ_Info[43];
int DST = GetTimeZoneInformation(TZ_Info);
if (DST != 0)
GMT_Shift = TZ_Info[0];
if (DST == 2)
GMT_Shift += TZ_Info[42];
ويأخذ المتغير DST ثلاثة قيم 0 و 1 و 2
0 تعني أن المنقطة غير معروفه وقد تعطي الساعه توقيت خاطئ
1 للتوقيت الغير متغير أو المناطق الزمنيه القياسيه
2 للتوقيت الصيفي
لن أشرح هذا الجزء أكثر لأنه يتعلق بملف الدل الذي قمنا بإستدعائه
ثم سيصبح توقيت جرينتش بالشكل التالي
كود PHP:int GMT = TimeLocal() + GMT_Shift * 60;
كود PHP:GMT_OffsetHour = ((TimeCurrent() - GMT)/3500);
والجزء الأخير الخاص بوضع شرط الدخول أو عدم الدخول سيكون كالآتي
كود PHP:if(UseHourTrading){
if (!((StartHour+GMT_OffsetHour < EndHour+GMT_OffsetHour && TimeHour(TimeCurrent()) >= StartHour+GMT_OffsetHour && TimeHour(TimeCurrent()) < EndHour+GMT_OffsetHour) || (StartHour+GMT_OffsetHour > EndHour+GMT_OffsetHour && TimeHour(TimeCurrent()) >= StartHour+GMT_OffsetHour ||
TimeHour(TimeCurrent()) < EndHour+GMT_OffsetHour)))
{
Comment("Non-Trading Hours!");
return(0);
}
}
كود PHP:if (AutomaticGMT_Offset == TRUE) {
if (!(IsTesting() || IsOptimization())) {
int GMT_Shift=0;
int TZ_Info[43];
int DST = GetTimeZoneInformation(TZ_Info);
if (DST != 0)
GMT_Shift = TZ_Info[0];
if (DST == 2)
GMT_Shift += TZ_Info[42];
int GMT = TimeLocal() + GMT_Shift * 60;
GMT_OffsetHour = ((TimeCurrent() - GMT)/3500);
}
}
if(UseHourTrading){
if (!((StartHour+GMT_OffsetHour < EndHour+GMT_OffsetHour && TimeHour(TimeCurrent()) >= StartHour+GMT_OffsetHour && TimeHour(TimeCurrent()) < EndHour+GMT_OffsetHour) || (StartHour+GMT_OffsetHour > EndHour+GMT_OffsetHour && TimeHour(TimeCurrent()) >= StartHour+GMT_OffsetHour ||
TimeHour(TimeCurrent()) < EndHour+GMT_OffsetHour)))
{
Comment("Non-Trading Hours!");
return(0);
}
}
آخر تعديل بواسطة MR.dollar ، 10-05-2010 الساعة 10:53 PM
- 11-05-2010, 09:27 PM #2
رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)
جزاك الله ألف خير أخي الكريم مس دولار
وجعله في ميزان حسناتك وأثابك ورزقك من حيث لا تحتسب
ورفع قدرك في الدنيا والآخرة يارب العالمين
ما تتخيل قد اش أفدتني تحية كبيرة لك يا اخي
في حفظ الرحمن / هاشمية
- 11-05-2010, 10:59 PM #3
رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)
جزاك الله كل خير اخي اسامة
حقيقة لقد استفدت من هذا الكود
ولقد بحثت عن مؤشرات اخرى ووجدت المؤشر الموجود في المرفقات
وهناك شيء آخر
هذا الكود
كود PHP:GMT_OffsetHour = ((TimeCurrent() - GMTt)/3500);
يجب استبداله بهذا الكود
كود PHP:GMT_OffsetHour = ((TimeCurrent() - GMTt)/3600);
اليس كذلك ؟
لأن 3600 عبارة عن 60 ثانية مضروبة في 60 دقيقة
تحياتي
- 11-05-2010, 11:28 PM #4
رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)
بالفعل بارك الله فيك على تصحيح الخطأ
وحتى إذا كانت 3500 فسوف تعطي نتيجه صحيحه أيضا لأن GMT_OffsetHour تم تعريفه على أنه متغير صحيح فبالتالي لن تكون هناك فواصل وسيتم تقريب الرقم بالتالي ستكون النتيجه 3500 هي نفسها 3600
ولكن طبعا كتابة الكود بشكل سليم هي الأصح
تحياتي لك
المواضيع المتشابهه
-
موضوع تعليمي لموجات اليوت
By Fawzi Alhamed in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 112آخر مشاركة: 12-09-2010, 03:15 PM -
اريد شركه ميتاتريدر توقيتها توقيت جرينتش
By تكفيني الذكرى in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 4آخر مشاركة: 30-09-2009, 11:31 PM -
توقيت جرينتش
By بحار الفوركس in forum استفسارات وأسئلة المبتدئينمشاركات: 8آخر مشاركة: 09-06-2008, 02:04 PM -
موضوع تعليمي: تحت التجربة
By صاحب سمو المشاعر in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 3آخر مشاركة: 07-12-2007, 04:41 PM -
كيف نوحد بين توقيت البروكر وتوقيت الافتتاح للسوق
By mercury_man in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 0آخر مشاركة: 01-08-2007, 10:40 AM