brokerclock
بنيت brokerclock لتحويل توقيت خادم الوسيط في MetaTrader 5 إلى UTC وبالعكس. وتستنتج قاعدة التوقيت الصيفي لدى الوسيط من تاريخ الشموع، من دون أن تستورد حزمة MetaTrader5.
pip install brokerclockالمشكلة
يعيد MetaTrader 5 أوقات الشموع والتيكات والصفقات والأوامر بتوقيت ساعة خادم الوسيط مكتوبةً كثوانٍ منذ عام 1970، لا بتوقيت UTC. ويعمل كثير من الوسطاء على GMT+2 شتاءً وGMT+3 صيفًا، وينتقلون بينهما في المواعيد الأمريكية.
الإزاحة الثابتة خاطئة في جزء من كل عام، وقاعدة التوقيت الصيفي الأوروبية خاطئة نحو ثلاثة أسابيع في مارس وأسبوعًا قرابة بداية نوفمبر. كما تُقرأ تواريخ الاستعلام وأوقات انتهاء الأوامر على ساعة الخادم نفسها.
طريقة الحل
أمثّل ساعة الخادم في ServerZone كمنطقة زمنية من IANA مع إزاحة بخطوات من 15 دقيقة، فيستخدم كل تحويل القاعدة السارية في تلك اللحظة. والساعة المكررة تحتاج اختيارًا صريحًا، والساعة المحذوفة تُطلق خطأً.
تقرأ detect() إغلاق الأسبوع يوم الجمعة الساعة 17:00 بتوقيت نيويورك من شموع M1 حتى H1، وتقيّم الساعات الثابتة والأمريكية والأوروبية والأسترالية، وتعيد أدلتها: الأسابيع المطابقة والاستثناءات وحالات التعادل.
تتحقق check() وmeasure_offset() من الساعة مقابل التيكات الحية وترفض القديمة منها. وتحوّل brokerclock.pandas أعمدة كاملة والمصفوفات التي تعيدها copy_rates_*.
النتيجة
نشرت brokerclock 0.1.0 على PyPI لإصدارات Python من 3.10 حتى 3.14، مع 260 اختبارًا. ولا تحتاج إلا المكتبة القياسية، مع tzdata على Windows، لذا تعمل أيضًا على Linux وmacOS حيث لا تُثبَّت حزمة MetaTrader5.