النتائج 1 إلى 4 من 4
  1. #1
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)

    بناء على طلب أحد الأعضاء لشرح كيفية تحديد الفرق بين توقيت البروكر وتوقيت جرينتش بطريقة أوتوماتيكية قررت شرح الطريقه في موضوع مستقل

    ملحوظه يجب أن يكون توقيت الكمبيوتر صحيح لأنه من خلاله سنقوم بمعرفة توقيت جرينتش

    تقوم الفكره على إيجاد توقيت جرينتش وتوقيت البروكر ثم يكون الفرق بينهم هو الإختلاف أو كما يسمى GMT offset والذي تستخدمه أغلب إكسبرتات الإسكالبينج التي تعتمد على العمل فترة معينه ونظرا لإختلاف فرق التوقيت من بروكر لآخر فيتم إستخدام هذا الكود لتحديد التوقيت أوتوماتيكيا

    وسنستخدم أحد مكتبات الدل الموجوده في الويندوز وهي مكتبة kernel32.dll
    في البداية سنقوم بإستدعاء مكتبة الدل والأكواد المكتوبه بداخلها عن طريق الأمر import#
    كما في الكود التالي
    كود PHP:
    #import "kernel32.dll"
    int  GetTimeZoneInformation(intTZInfoArray[]);
    #import 
    سنقوم بتعريف متغيرات خارجيه الخاصه بتفعيل إستخدام فرق التوقيت بشكل أوتوماتيكي أو يدويا وتحديد ساعة البدايه والنهايه في قسم المتغيرات الخارجيه أعلى الإكسبرت
    كود PHP:
    extern bool AutomaticGMT_Offset=true;
    extern int  GMT_OffsetHour=0;
    extern int StartHour 7;
    extern int EndHour 20;
    extern bool  UseHourTradingtrue
    بداخل الداله start
    سنقوم بكتابة الكود لمعرفة فرق التوقيت بين البروكر وتوقيت جرينتش
    كود 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); 
    وسيكون OffsetHour هو فرق التوقيت بالساعه

    والجزء الأخير الخاص بوضع شرط الدخول أو عدم الدخول سيكون كالآتي
    كود 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
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  2. #2
    الصورة الرمزية هاشمية
    هاشمية غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    19

    افتراضي رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)

    جزاك الله ألف خير أخي الكريم مس دولار
    وجعله في ميزان حسناتك وأثابك ورزقك من حيث لا تحتسب
    ورفع قدرك في الدنيا والآخرة يارب العالمين
    ما تتخيل قد اش أفدتني تحية كبيرة لك يا اخي
    في حفظ الرحمن / هاشمية

  3. #3
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,972

    افتراضي رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)

    جزاك الله كل خير اخي اسامة

    حقيقة لقد استفدت من هذا الكود

    ولقد بحثت عن مؤشرات اخرى ووجدت المؤشر الموجود في المرفقات

    وهناك شيء آخر

    هذا الكود

    كود PHP:
    GMT_OffsetHour = ((TimeCurrent() - GMTt)/3500); 

    يجب استبداله بهذا الكود

    كود PHP:
    GMT_OffsetHour = ((TimeCurrent() - GMTt)/3600); 

    اليس كذلك ؟
    لأن 3600 عبارة عن 60 ثانية مضروبة في 60 دقيقة

    تحياتي
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 time.mq4‏ (8.6 كيلوبايت, المشاهدات 55)
    توقيع العضو
    مبرمج MT4 , MT5

    يمكنكم الاستماع للقرآن الكريم 24/7
    https://forum.arabictrader.com/t265331.html

  4. #4
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: إستخدام مكتبات الدل لتحديد فرق بين توقيت السيرفر وتوقيت جرينتش (موضوع تعليمي)

    اقتباس المشاركة الأصلية كتبت بواسطة wajdyss مشاهدة المشاركة
    جزاك الله كل خير اخي اسامة

    حقيقة لقد استفدت من هذا الكود

    ولقد بحثت عن مؤشرات اخرى ووجدت المؤشر الموجود في المرفقات

    وهناك شيء آخر

    هذا الكود

    كود PHP:
    GMT_OffsetHour = ((TimeCurrent() - GMTt)/3500); 

    يجب استبداله بهذا الكود

    كود PHP:
    GMT_OffsetHour = ((TimeCurrent() - GMTt)/3600); 

    اليس كذلك ؟
    لأن 3600 عبارة عن 60 ثانية مضروبة في 60 دقيقة

    تحياتي
    بالفعل بارك الله فيك على تصحيح الخطأ
    وحتى إذا كانت 3500 فسوف تعطي نتيجه صحيحه أيضا لأن GMT_OffsetHour تم تعريفه على أنه متغير صحيح فبالتالي لن تكون هناك فواصل وسيتم تقريب الرقم بالتالي ستكون النتيجه 3500 هي نفسها 3600
    ولكن طبعا كتابة الكود بشكل سليم هي الأصح
    تحياتي لك
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

المواضيع المتشابهه

  1. موضوع تعليمي لموجات اليوت
    By Fawzi Alhamed in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 112
    آخر مشاركة: 12-09-2010, 03:15 PM
  2. اريد شركه ميتاتريدر توقيتها توقيت جرينتش
    By تكفيني الذكرى in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 4
    آخر مشاركة: 30-09-2009, 11:31 PM
  3. توقيت جرينتش
    By بحار الفوركس in forum استفسارات وأسئلة المبتدئين
    مشاركات: 8
    آخر مشاركة: 09-06-2008, 02:04 PM
  4. موضوع تعليمي: تحت التجربة
    By صاحب سمو المشاعر in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 3
    آخر مشاركة: 07-12-2007, 04:41 PM
  5. كيف نوحد بين توقيت البروكر وتوقيت الافتتاح للسوق
    By mercury_man in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 0
    آخر مشاركة: 01-08-2007, 10:40 AM

الاوسمة لهذا الموضوع


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17