وعليكم السلام
نعم ممكن ويمكنك مراجعة كل الدوال التي لها علاقة بالملفات بالرابط التالي (مصدر اللغة) https://docs.mql4.com/files
ثم راجع الشرح التالي المنقول من أحد الشروحات التعليمية للأستاذ القدير مستر دولار
بداية عند إستخدام الدوال في لغة MQL4 للتعامل مع الملفات فلا يمكن هذه الدوال أن تتعامل إلا مع الملفات التي بداخل فولدر Data Folder الخاص بالميتاتريدر داخل ملف Files
في البداية قبل القراءة أو الكتابة في الملفات يجب أن نقوم بفتح الملف ونستخدم الداله FileOpen وتعود برقم معين يستخدم لاحقا للتعامل مع البيانات داخل هذا الملف
file_name هو إسم الملف الذي تريد فتحه في حال كان الملف غير موجود فسوف تقوم الداله بعمل ملف جديد بهذا الإسم
open_flags نوع العملية للملف الذي ستقوم بفتحه ( مثلا الملف للقراءة أو الكتابه أو هل الملف نصي أو أكسل .. إلخ )
delimiter الحرف الذي سيستخدم للفصل بين القيم سواء في الملف النصي أو ملف الأكسل ( مثلا لو تريد وضع كل قيمة في عمود جديد في ملف الأكسل فيجب أن تحدد ما هو الفاصل الذي ستستخدمه )
codepage كود الترميز عند تحويل النص إلى حروف ( لن نستخدم هذا الخيار فسوف نجعله الخيار الإفتراضي
مثال عملي
سوف أقوم بفتح ملف من نوع تكست ( ملف نصي ) وسوف أجعله للقراءة والحرف الفاصل بين الأسطر ستكون ( , )
بعد فتح الملف الذي نريده
1- قراءة الملفات
في البداية سوف نضع شرط هل تم فتح الملف بشكل صحيح أم لأ
ثم سنستخدم الداله FileIsEnding للتأكد من قراءة جميع القيم في الملف
الدالة FileIsEnding تعود بالقيمه true إذا وصلت القراءة لنهاية الملف والعكس تعود بالقيمة false
قراءة القيم في الملف
يوجد أكثر من دالة لقراءة القيم في الملف أهم جزء والذي سأقوم بشرحه هو
قراءة النص FileReadString
هذه الدالة سوف تقوم بقراءة النص داخل الملف .
إذا كان الملف من نوع bin-file فيجب أن يتم تحديد عدد الحروف التي يتم قرائتها, إذا كان الملف Text فلا داعي لتحديد عدد الحروف وسوف يقرأ كل سطر على حده, إذا كان الملف أكسل فسوف يقرأ حتى الحرف الفاصل الذي تم تحديده عند فتح الملف .
مثال
2- الكتابة في الملفات
أولا يجب أن نقوم بإضافة خيار الكتابة عند فتح الملف بإستخدام الداله FileOpen
ثم سنستخدم الدالة FileWrite للكتابة في ملف معين
مثال
ملحوظه :
عند فتح ملف سابق كان به بيانات سابقه وتريد الكتابة أسفل آخر بيانات موجوده سابقا فقم بقرائتها أولا ثم الكتابة لكن إذا قمت بالكتابة مباشرة فسوف يبدأ في الكتابة من أول الملف بالتالي سيحذف البيانات القديمه
إغلاق الملف و حفظ البيانات التي تم كتابتها :
حتى يتم حفظ البيانات بشكل كامل في الملف يمكن ذلك بطريقتين
الطريقة الأولى إغلاق الملف بإستخدام الداله FileClose
الطريقه الثانيه إستخدام الداله FileFlush حتى يجبر الداتا المتبقيه في الذاكره على الكتابه في الفايل
أخيرا سيكون الكود بشكل كامل هو
القراءة من ملف أكسل
كمثال لو أريد قراءة بيانات كل صف وعمود في ملف أكسل وحفظها في مصفوفه
أولا سأقوم بفتح ملف الأكسل
ثم دالة قراءة البيانات
الكتابة في ملف أكسل
عند الكتابة في ملف الأكسل فيجب أن نستخدم الفاصل الذي قمنا بتحديده عند فتح الملف بإستخدام FileOpen حتى نقوم بتقسيم الداتا في كل عمود
مثال
ثم لنفرض أنك تريد الإنتقال للصف التاي فسوف تستخدم FileWrite مره أخرى وهكذا
أو يمكنك وضعها داخل حلقه
مثال
مثال عملي لإسكربت يقوم بكتابة بيانات الزوج ( الهاي, اللو, الإفتتاح, الإغلاق ) في ملف أكسل
أولا سنقوم بعمل الملف الجديد
بداية سوف أكتب أول سطر وهو عناوين كل عمود حتى يكون واضح
ثم سنكتب الحلقه للبحث في جميع الشموع
وأخيرا إغلاق الملف بعد فتحه
سيكون شكل الملف
العلامات المرجعية