[FX581 Original] "حفرة" السجلات التاريخية لمهارات تطوير MT4

مؤشرات MT4 ، مجموعة مناقشة EA
fx58

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

عقد مزدوج = 0 ؛

لـ (int i = 0 ؛ i <OrdersHistoryTotal () ؛ i ++)

{

 إذا كان (OrderSelect (i، SELECT_BY_POS، MODE_HISTORY) == false) تابع ؛

   الكثير + = OrderLots () ؛

}

طباعة ("إجمالي اللوت:" ، الكثير) ؛

هذا الرمز هو حساب جميع أرقام اللوت التاريخية من خلال الحلقة. في الواقع ، هذا الرمز هو فقط لتغيير الكود الذي يمر عبر جميع الطلبات الحالية. قم بتغيير دالة OrdersTotal () إلى OrdersHistoryTotal () ، وأضف معلمة إلى دالة OrderSelect: MODE_HISTORY. فهل هناك مشكلة في مثل هذا البرنامج البسيط؟ الجواب نعم.

لنقم بتشغيل برنامج EA هذا ، النتيجة المعروضة في الجهاز هي:

العدد الإجمالي للأيدي هو في الواقع 0! إنه أمر لا يصدق ، من الواضح أن لدي الكثير من سجلات المعاملات.

فلنقم الآن ببعض العمليات مع المحرر ، ثم قم بتشغيل البرنامج لمعرفة النتيجة النهائية

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

ثم نقوم بتشغيل برنامج EA وتجربته ، وستكون النتيجة طبيعية:

هذه "حفرة" للحصول على السجلات التاريخية من خلال البرنامج. في MT4 ، سيعرض البرنامج فقط السجلات التاريخية للشهر الحالي افتراضيًا ، وسيبحث البرنامج فقط بناءً على السجلات التاريخية الحالية للبرنامج عند الحصول على السجلات التاريخية بما أنني لا أملك أي معاملات ، لذلك عندما تحسب العدد الإجمالي للأيدي ، تحصل على 0 ، وإذا تم عرض جميع سجلات المعاملات في البرنامج ، فيمكن للبرنامج في النهاية العمل بشكل طبيعي.

السبب الذي يجعلنا نادرًا ما نجد هذه المشكلة هو أن الحساب التجريبي العام لمنصة MT4 له وقت قصير.بعد تسجيل حساب تجريبي ، تنتهي صلاحيته قريبًا ، لذلك قلة من الناس يمكنهم العثور على هذه المشكلة. لذلك ، من المهم جدًا أن يكون لديك نظام أساسي يمكنه فتح حساب محاكاة طويل المدى. نوصي باستخدام منصة xxx ، والتي يمكن أن توفر حسابًا محاكاة لمدة تصل إلى xx يومًا.

إن محاكاة المستخدم على المدى الطويل نفسه مفيد جدًا بالنسبة لنا لتطوير واختبار برامج EA. كما نعلم جميعًا ، لا يكفي استخدام المحاكاة التاريخية بعد تطوير برنامج EA جديد. من الضروري أيضًا إنهاء الاختبار. إذا ينتهي الاختبار في غضون أيام قليلة ، وسيكون الأمر كذلك. إنه أمر مزعج للغاية لتطوير EA.

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

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

// المحتوى هو المحتوى الذي سيتم تخزينه

ملف مجموعة باطل (محتوى سلسلة)

{

   string filename = "اسم الملف المراد تخزينه"؛

   int filehandle = FileOpen (اسم الملف ، FILE_WRITE | FILE_TXT) ؛ // يمكن أيضًا حفظه كملف CSV واستبدال FILE_TXT بـ FILE_CSV ، بحيث يمكن تخزين أجزاء متعددة من المعلومات

   if (filehandle == INVALID_HANDLE) // الحكم على ما إذا كان هناك خطأ في قراءة الملف

   {

      إغلاق الملف (مقبض الملف) ؛

      طباعة ("حدث خطأ في حفظ الملف") ؛

   }

   آخر // فتح بشكل طبيعي ، يمكنك كتابة المحتوى

   {

      FileWriteString (مقبض الملف ، المحتوى) ؛

      إغلاق الملف (مقبض الملف) ؛

   }

}

من خلال الأساليب المذكورة أعلاه ، يجب أن يفهم الجميع ، وسيكون برنامجنا أكثر كمالًا وقوة في التطوير المستقبلي.

حقوق التأليف والنشر تنتمي إلى المؤلف

تم إجراء آخر تحرير في 08:10 2023/08/24

18 يوافق
33 تعليق
يجمع
عرض النص الأصلي
اقتراح ذو صلة
App Store Android

البيان للإفصاح عن مخاطر

التداول في الأدوات المالية هو نشاط استثماري عالي المخاطر ينطوي على مخاطر خسارة بعض أو كل رأس المال المستثمر وقد لا يكون مناسبًا لجميع المستثمرين. يتم توفير أي آراء أو محادثات أو إخطارات أو أخبار أو استطلاعات بحثية أو تحليلات أو أسعار أو غيرها من المعلومات الواردة في هذا الموقع كمعلومات عامة عن السوق ، للأغراض التعليمية والترفيهية فقط ولا تشكل نصيحة استثمارية. قد تتغير جميع الآراء وظروف السوق والتوصيات أو أي محتوى آخر في أي وقت دون إشعار مسبق. Trading.live ليست مسؤولة عن أي خسارة أو ضرر ينشأ بشكل مباشر أو غير مباشر عن استخدام أو بناءً على هذه المعلومات.

© 2024 Tradinglive Limited. All Rights Reserved.