كيف يتم حساب مخططات MT4: الصيغة والمدخلات والحدود
ماذا يعني عادةً “حساب مخططات MT4”
في MT4، تُفهم كلمة “calculated” على أفضل وجه على أنها: تقوم المنصة بتحويل بيانات السوق الواردة (ticks أو الأشرطة المُشكّلة مسبقًا) إلى القيم التي تُكوّن السلسلة المرسومة على المخطط. ثم تقود هذه السلاسل المرسومة ما تراه على الشاشة (الشموع، والخطوط، والأحجام، والعديد من التراكبات).
المخطط ليس عملية حسابية واحدة. بل غالبًا ما يكون خطًا أنبوبيًا (pipeline) يتكوّن من ثلاثة أجزاء:
- إعداد البيانات: تقوم المنصة بتخزين بيانات الأسعار وتنظيمها عبر الزمن.
- بناء الشريط/timeframe: تقوم بتجميع البيانات في فواصل زمنية ثابتة (على سبيل المثال، أشرطة مدتها 5 دقائق).
- حساب السلاسل والعرض: تحسب ما يمثله كل عنصر بصري (على سبيل المثال، حقول OHLC لكل شريط) وتحوّل القيم إلى إحداثيات.
وبما أن بيانات الإدخال وإعدادات المخطط تتغير، فإن الحسابات الحسابية الدقيقة تعتمد على نوع المخطط وtimeframe.
الآليات الأساسية: بناء الشريط وتعريفات OHLC
معظم التصورات التي تراها في “مخطط MT4” مبنية من أشرطة. يرتبط الشريط بــ فترة زمنية واحدة ضمن timeframe محدد. ولكل شريط، يستخدم الرسم البياني عادةً قيم OHLC:
- O (Open): أول سعر تم تداوله خلال تلك الفترة.
- H (High): أعلى سعر تم تداوله خلال تلك الفترة.
- L (Low): أقل سعر تم تداوله خلال تلك الفترة.
- C (Close): آخر سعر تم تداوله خلال تلك الفترة.
طريقة بسيطة للتعبير عن ذلك هي تعريف فترة الشريط ([t_k, t_{k+1})) ومجموعة أسعار الـ ticks التي تقع داخلها. لتكن (P_i) هي تسلسل أسعار التداول (أو الأسعار الوسطية، حسب ما يعرّفه مزود التغذية في المنصة) للـ ticks ذات الطوابع الزمنية (t_i) بحيث (t_k \le t_i < t_{k+1}). عندها:
- (O_k = P_{first})
- (H_k = \max(P_i))
- (L_k = \min(P_i))
- (C_k = P_{last})
هذا البناء لـ OHLC هو الحساب المادي خلف جسم الشمعة والذيول (wicks) للعديد من أوضاع المخططات القياسية.
الأحجام وعدّ الـ ticks (عند عرضها)
إذا كان المخطط يعرض حجمًا (أو حجمًا مبنيًا على الـ ticks)، فإن تعريفًا مفاهيميًا شائعًا هو:
- الحجم للشريط k يساوي عدد الـ ticks في ([t_k, t_{k+1}))، أو مجموع الأحجام المُبلّغ عنها إذا كانت التغذية توفر size.
المعنى الدقيق الذي ينطبق يعتمد على ما توفره بيانات المنصة وعلى خيار الحجم الذي تم اختياره.
كيف تُشتق مخططات الخط من سلاسل الأشرطة
غالبًا ما يتم حساب مخطط الخط من مصدر محدد داخل كل سلسلة شريط. على سبيل المثال:
- مفهوم “خط الإغلاق” يقوم نظريًا برسم (C_k) عبر الزمن.
- “السعر النموذجي” (في بعض إعدادات الرسم) يستخدم نظريًا متوسطًا مثل ((H_k + L_k + C_k)/3).
إذن النمط العام هو: اختر دالة (f) لكل شريط من OHLC (وأحيانًا الحجم)، ثم ارسم (S_k = f(O_k,H_k,C_k,L_k,\text{Volume}_k)).
بالنسبة لخطوط الأسعار الشائعة، تكون (f) مجرد اختيار أحد المكونات (مثل الإغلاق). أما بالنسبة للسلاسل المشتقة الأخرى، فقد تقوم (f\ بمتوسط أو تحويل القيم، لكنها ما تزال تعمل شريطًا بشريط.
مثال مع افتراضات واضحة (قابل للتحقق ذاتيًا)
افترض timeframe مدته 1 دقيقة وأن لديك أسعار ticks لفترة دقيقة واحدة ([t_0, t_0+1m)). لنفترض أنه داخل تلك الفترة يكون تسلسل الـ ticks (بالترتيب الزمني) هو:
- (P_1 = 1.1000)
- (P_2 = 1.1010)
- (P_3 = 1.0995)
- (P_4 = 1.1020) عندها تكون قيم OHLC لهذا الشريط:
- (O = 1.1000) (أول tick)
- (H = 1.1020) (الأعلى)
- (L = 1.0995) (الأدنى)
- (C = 1.1020) (آخر tick) إذا كان مخططك يستخدم خط إغلاق، فإن نقطة الرسم لذلك الدقيقة هي (S=C=1.1020).
فكرة تحقق مستقل: إذا تمكنت من الوصول إلى بيانات الـ ticks أو الشريط الأساسية المستخدمة في مخططك (على سبيل المثال، عبر تصدير بيانات المنصة أو API يوفّر الطوابع الزمنية والأسعار)، يمكنك إعادة حساب OHLC باستخدام نفس حدود الفاصل الزمني والتأكد مما إذا كانت الشموع المرسومة تطابق ما يظهر على مخططك.
حدود مادية وأوضاع فشل
حتى مع صيغ OHLC أعلاه، قد تختلف قيم المخطط لعدة أسباب:
-
تاريخ ناقص أو غير مكتمل إذا كانت بيانات الـ ticks غير موجودة ضمن timeframe، فلا يمكن حساب OHLC إلا من الجزء المتاح. وهذا قد يغيّر (O)، و(H)، و(L)، و(C). قد تبدو الشمعة “غير مطابقة” لما تتوقعه لأن المنصة لم تستقبل كل الـ ticks.
-
محاذاة الوقت واختلافات المنطقة الزمنية/الساعة يتم إنشاء الأشرطة من فواصل زمنية ثابتة. إذا كان وقت خادم المخطط يختلف عن الطوابع الزمنية التي تفترضها، فقد تقوم بتجميع الـ ticks إلى دقائق مختلفة (أو ساعات مختلفة). تتغير مجموعة الـ ticks لكل فترة، وبالتالي يتغير OHLC.
-
اختلاف تعريف “السعر” حسب التغذية والوضع اعتمادًا على المنصة ووضع البيانات، قد تُشتق السلسلة من bid/ask أو آخر صفقة، أو من سعر وسط مُنشأ. إذا كانت توقعاتك تفترض تعريفًا واحدًا لكن التغذية توفر تعريفًا آخر، فلن تتطابق إعادة حسابك.
-
التكاليف والتنفيذ غير ممثلين داخل الشموع التاريخية تمثل الشموع الأسعار المُلاحظة أو المُسجلة لفواصل زمنية سابقة. ولا تحسب بطبيعتها التكاليف المستقبلية (spreads وقت التنفيذ، slippage، commissions). لذلك فإن أي استدلال يعامل تاريخ المخطط المعروض كتوقع للنتائج الصافية يخلط بين مفاهيم مختلفة.
-
التراكبات المشابهة للمؤشرات تعتمد على معلمات إضافية إذا كانت “MT4 Charts” تشمل المتوسطات المتحركة، أو oscillators، أو تراكبات مخصصة، فإن الحساب يتضمن معلمات إضافية (طول فترة lookback، وطريقة التنعيم، والسعر المطبق، وما إذا كان التراكب يستخدم إغلاقات الشريط فقط أو بيانات داخل الشريط). لا تحدد هذه الإعدادات بناء OHLC فقط، بل تحدد القيم النهائية المرسومة.
كيفية التحقق من الحساب الذي تراه
طريقة تحقق عملية، دون افتراض سلوك أي مزود واحد، هي:
- حدد نوع المخطط (شموع مقابل خط) وtimeframe.
- صدّر أو احصل على بيانات الشريط أو الـ ticks الأساسية المستخدمة في المخطط.
- أعد حساب OHLC لشريط واحد باستخدام حدود الفاصل الزمني وتعريف السعر المفترض.
- قارن (O,H,L,C) التي أعدت حسابها وأي سلسلة مرسومة (مثل خط الإغلاق) بما يعرضه المخطط.
إذا فشلت المقارنة، افحص أي افتراض تغيّر: حدود الفاصل الزمني، تعريف سعر الإدخال، أو ما إذا كان التاريخ غير مكتمل.
ما الذي تسأل عنه بعد ذلك
إذا أخبرتني:
- نوع مخططك (شموع، خط، أو تراكب محدد),
- الـ timeframe،
- وما هو مصدر البيانات الذي تستخدمه (ticks مقابل bars، وما إذا كان bid/ask/last/mid)، يمكنني إعادة صياغة الدالة الدقيقة (S_k = f(\cdot)) لهذا الإعداد وسرد المدخلات المحددة التي ستحتاجها لإعادة حسابه من البداية إلى النهاية.
DOCUMENT END