قد ينزل EA بيانات API على حساب تجريبي،لكن لا يتلقى الرد نفسه في المختبر. لا يثبت ذلك تعطل الخادم؛افحص توافر الدالة في بيئة الاختبار قبل جودة الأرشيف. إسناد قيمة اليوم إلى قرارات ماضية يخلق اختباراً مختلفاً. يعيد المثال نسخاً محددة ويفصل التعديل من عدم الإتاحة،ولا يتصل بواجهة API خارجية.

نجاح WebRequest لا يكفي للاختبار التاريخي

توثيق MQL5 يقول إن WebRequest لا تنفذ في Strategy Tester. إضافة العنوان إلى قائمة URLs المسموحة لا تزيل هذا القيد. فرق بين دالة غير متاحة في المختبر وخطأ شبكة أو تفويض أو الرد خلال تشغيل EA العادي. لا تحول طلباً فاشلاً إلى صفر؛قد يكون الصفر قيمة صحيحة،بينما الفشل يعني مدخلاً غير متاح.

استبدال الطلب بملف لا يحل المشكلة إن احتوى مراجعات لم تكن معروفة وقت القرار. عرف المشاهدة والنسخة والقيمة ووقت الإتاحة قبل ربط منطق الإشارة بطلب HTTP. افصل البيانات والقرارات والتنفيذ؛تبديل المحول لا ينبغي أن يغير معنى المعلومة أو كيفية التعامل مع غيابها سراً.

محول حي وآخر تاريخي بالعقد نفسه

المحول الحي يعالج رد المزود،والتاريخي يختار سجلاً محفوظاً كان متاحاً عند القرار. يسلمان إلى المنطق نوع نتيجة واحداً:قيمة صالحة،أو عدم إتاحة صريحاً،أو خطأ. هذا تنظيم برمجي نقترحه،لا روبوت كامل أو وعد توافق مع كل API. احفظ الرد الخام منفصلاً من سجلات الاختبار،ومعه المصدر ونسخة المخطط ووقت الجلب ودليل الإتاحة.

الفترة التي تصفها مشاهدة ليست تاريخ معرفتها. إذا عرفت تاريخ نسخة يومياً فقط فلا تخترع ساعة نشر دقيقة. يشرح FRED الفترات الآنية لتمييز ما يعرف اليوم عن المعرفة السابقة؛والمعلمات الافتراضية تشير عادة إلى اليوم. لكنه مثال بيانات ذات نسخ،لا API فوركس عامة،ولا يعطي تاريخ النسخة وحده ساعة نشر UTC لإسنادها لاختبار لحظي.

توثيق FileOpen يحدد مساحة الملفات،وفي الاختبار قد يكون المسار النسبي داخل مجلد العامل لا مجلد المنصة العادي. افحص نجاح الفتح والقراءة. غياب الملف يجب أن ينتج حالة عدم إتاحة معروفة،لا جدولاً فارغاً يعامل كأنه تاريخ مكتمل.

أي نسخة تصلح لقرار سابق؟

ثلاثة ردود مؤلفة لا بيانات GDP فعلية

نفترض المشاهدة GDP-model في 1 أكتوبر 2026. كل الأوقات UTC. الحقل availableAt يصف إتاحة المدخل في نموذجنا،لا وقت تنفيذ أمر. القيم نصوص رقمية وليست تحويلات إلى Number،و null حالة غياب صريحة.

availableAtrevisionvalue
2026-10-01T12:00:00Zinitial"1.0"
2026-10-01T13:00:00Zrevised"1.4"
2026-10-01T14:00:00Zunavailablenull

هذه أسماء حقول وقيم تبادل تقني محفوظة؛initial تعني النسخة الأولية و revised المعدلة و unavailable غياباً. عند 12:30 آخر سجل مؤهل 1.0،وعند 13:30 يصبح 1.4،وعند 14:30 آخر سجل مؤهل null فتظل النتيجة غير متاحة. لا يرجع نموذجنا إلى 1.4 ولا يستبدل الغياب بصفر.

التعديل اللاحق لا يغير المعرفة السابقة

مرّر أفقيا لعرض الرسم كاملا.

النسخة المتاحة وقت القرار لا أحدث نسخة اليومنموذجGDP-model مؤلف:1.0 متاحة12:00 UTC،ثم1.4 في13:00،ثمnull في14:00. قرارات12:30 و13:30 و14:30 تختار1.0 و1.4 وغير متاح. الغياب ليس صفراً.النسخة المتاحة آنذاك،لا نسخة اليوم12:00 UTCأوليةالقيمة:"1.0"12:30 → 1.013:00 UTCمعدلةالقيمة:"1.4"13:30 → 1.414:00 UTCغير متاحةالقيمة:null14:30 → غير متاحةأحداث مؤلفة في 1 أكتوبر 2026؛كل الأوقات UTC
نموذجGDP-model مؤلف:1.0 متاحة12:00 UTC،ثم1.4 في13:00،ثمnull في14:00. قرارات12:30 و13:30 و14:30 تختار1.0 و1.4 وغير متاح. الغياب ليس صفراً.

قاعدة مؤلفة تطلب قيمة أكبر من 1.2 تكون خاطئة عند 12:30 مع 1.0. إدخال 1.4 اللاحقة يعكس القرار حتى إن لم تتغير بيانات السعر. هذا فحص إتاحة معلومات لا ربحية استراتيجية. تختار الأداة سجلاً ولا تحسب إشارة تداول أو عائداً.

إن كانت استراتيجيتك تستبقي آخر قيمة معروفة حين يأتي غياب،فهذه سياسة مختلفة. عرف العمر المسموح وسبب استعمال السجل القديم قبل تقييم النتائج؛نسختنا ذات null الصريح لا تنفذ ذلك. لا تضف الرجوع بعد رؤية نتيجة أجمل وتسمي الاختبار غير متغير.

ما الذي يفحصه المعيد المحلي؟

الصق كائن JSON ذا version عددي يساوي 1 ومصفوفة events. كل حدث يحوي availableAt و observation و value و revision فقط. الصيغة الزمنية YYYY-MM-DDTHH:mm:ssZ،بلا كسور ثانية أو إزاحة أخرى. observation و revision نصان؛value نص رقمي بنقطة عشرية وأرقام ASCII أو null،دون تحويله إلى Number. صيغة التبادل مقصودة،فلا تستبدل أرقامها بأرقام العرض العربية أو تطبق تطبيع NFKC على معرفات وسجلات أصلية.

أعد تشغيل المعلومات المتاحة عند لحظة القرار

نموذج تعليمي يعمل داخل متصفحك؛ لا يتصل بحساب أو API ولا يرسل المدخلات أو يحفظها حفظاً دائماً. لا تدخل كلمات مرور أو بيانات شخصية.

الصيغة وحدود النموذج

version: 1 وevents: من 1 إلى 200 سجل، في كل منها الحقول availableAt, observation, value, revision فقط. التوقيت بصيغة YYYY-MM-DDTHH:mm:ssZ. observation نص حتى 128 محرفاً وrevision نص حتى 64 محرفاً. value نص رقمي بأرقام ASCII ونقطة عشرية حتى 128 محرفاً، أو null. غياب القيمة لا يعني صفراً. أبقِ صيغة التبادل والتوقيت بأرقام ASCII دون تطبيع آلي.

يختار النموذج آخر نسخة لا يتجاوز availableAt فيها لحظة القرار. سجلان لهما observation وavailableAt نفسيهما حالة ملتبسة توقف التحليل. الحدود: 64 KiB و8 مستويات و2,000 قيمة. الأوقات تصريحات داخل الملف؛ لا تتحقق الصفحة من توقيت نشر اقتصادي فعلي.

أدخل decisionAt منفصلاً بالصيغة UTC نفسها. يختار النموذج آخر نسخة للمشاهدة لا يتجاوز availableAt فيها القرار. قبل السجل الأول لا قيمة،وسجلان للمشاهدة نفسها ووقت الإتاحة نفسه ملتبسان فيرفضان؛لا يحسم ترتيب اللصق التعارض. واسم revision ليس عداداً زمنياً عددياً.

الحدود 1–200 حدث و 64 KiB،وعمق 8 مستويات و 2,000 قيمة JSON. observation و value حتى 128 محرفاً و revision حتى 64؛القيمة نص رقمي أو null. يعمل التمرين على السجلات الملصقة محلياً،دون تنزيل بيانات أو مفاتيح API. لا تدخل أسراراً أو بيانات شخصية. اختيار السجل لا يتحقق من صدق توقيت المزود؛JSON صالح لا يثبت أرشيفاً حقيقياً.

لو خمنت التواريخ أو نسبت كل التعديلات إلى وقت النشر الأول،فخوارزمية سليمة تعيد افتراضات خاطئة. احفظ منهجية المصدر ودليل النسخ لأي بحث فعلي. وبيئات الملفات والعوامل منفصلة عن المنصة؛استخدم نسخة مجموعة بيانات ثابتة للعمليات المتوازية،ولا تستبدلها برد حي أثناء الدراسة. سجل نسخة البيانات الفعلية مع تقريرك لا اسم نقطة النهاية وحده.

إعادة المدخلات لا تعيد التنفيذ تلقائياً:أسعار Bid/Ask والتكاليف والكمية ورد الخادم ومراكز الحساب مكونات أخرى. قارن بضعة قرارات دون وضع صفقات قبل نسبة الفرق إلى الاستراتيجية. التوقيت الزمني للانضمام إلى السعر والمراجعات جزء من منهج الاختبار،لا مجرد نقل ملف.

إضافة:15:30 في الرياض ليست 15:30Z

مقارنة مستقلة مؤلفة على أحداث الجدول نفسه،بتاريخ 1 أكتوبر 2026. قرار 15:30 في Asia/Riyadh يساوي 12:30UTC؛وقرار 16:30 في Asia/Dubai يساوي 12:30UTC أيضاً. لذلك كلاهما يختار 1.0. أما وضع حرف Z بعد 15:30 المحلي دون تحويل المنطقة فيعطي 15:30UTC خطأ،فيختار آخر null عند 14:00 بدلاً من 1.0.

ليست المشكلة اختلاف استجابة API أو فشل Strategy Tester؛إنها إسناد زمن خاطئ يغير نافذة المعرفة. احتفظ بالوقت المحلي والمنطقة والتحويل UTC في سجل التحضير،ثم مرر الصيغة التي تقبلها الأداة. اختلاف تنسيق الأرقام في واجهة عربية لا يجعلها توقيتاً عربياً موحداً؛الرياض ودبي منطقتان مختلفتان. والأداة لا تخمن منطقة من اللغة ولا تصلح توقيت نشر ادعى المستخدم صحته.

احتفظ بالمنطقة قبل إضافة Zتحويل مؤلف لقرار 1 أكتوبر 2026 مع جدول GDP-model نفسه؛ليس توقيت خبر اقتصادي فعلي.حساب وفق افتراضات15:30 في Asia/Riyadh2026-10-01T12:30:00Z →"1.0"16:30 في Asia/Dubai2026-10-01T12:30:00Z →"1.0"نسخ 15:30 ثم إلحاق Z خطأ2026-10-01T15:30:00Z →null
احتفظ بالمنطقة قبل إضافة Z. تحويل مؤلف لقرار 1 أكتوبر 2026 مع جدول GDP-model نفسه؛ليس توقيت خبر اقتصادي فعلي.

التحويل يسبق صيغة التبادل؛لغة الواجهة لا تحدد منطقة،واختيار سجل صحيح لا يصحح وقتاً مصرحاً به خطأ.

على الشاشات الصغيرة، مرّر الرسم أفقيا أو كبّره. تجد القيم والخلاصة أيضا في النص أدناه.

15:30 في Asia/Riyadh
2026-10-01T12:30:00Z → "1.0" – فرق 3 ساعات في المنطقة المسماة.
16:30 في Asia/Dubai
2026-10-01T12:30:00Z → "1.0" – فرق 4 ساعات؛اللحظة UTC نفسها.
نسخ 15:30 ثم إلحاق Z خطأ
2026-10-01T15:30:00Z → null – قرار بعد 3 ساعات؛آخر سجل حينها غياب 14:00 لا قيمة 1.0.

قبل الحكم على نتائج EA

  1. حدد عقد البيانات وافصل المحولين،واحفظ الرد الخام وتعريف المشاهدة ودليل الإتاحة. اذكر غياب النسخ التاريخية قيداً لا قيمة اليوم مسندة إلى الماضي.
  2. تتبع المشاهدة قبل النسخة الأولية وبين النشر والمراجعة وبعد null،وقارن الجدول. افحص المساواة عند حد الإتاحة والتوقيت المتعارض قبل التوسع.
  3. تحقق في المختبر من قراءة الملف المقصود وحالة الغياب،واحفظ نسخته وتقريره. بعد تفسير الاختلاف افحص الإشارات والتنفيذ والتكاليف منفصلة؛سلامة المدخلات لا تثبت ربحية لاحقة.

تابع اختبار Python وتسلسل الإشارات والتنفيذ والكلفة بعد تثبيت النسخ الزمنية.