FX-Arabia

جديد المواضيع











الملاحظات

منتدى المؤشرات و الاكسبيرتات تعليم برمجة الاكسبيرت ، اكسبيرت مجانى ، برمجة مؤشرات ، مؤشر ، تصميم اكسبيرت مجانا ، اكسبيرتات جديدة ، مؤشرات جديدة ، كل ما يتعلق بالتحليل و الخاص بالمؤشرات الفنية او الرقمية ، Expert advisor ، mql ، mql4 ، دورة برمجة ، برمجة اكسبيرت ، اكسبيرت رابح ، اكسبيرت جيد ، ادارة حسابات ، تداول الى ، ميتاتريدر ، تحميل منصة ، منصة تداول ، برمجة مؤشر ، مكتبة مؤشرات ، مؤشر جديد ، مؤشرات جديدة ، مؤشر حصرى ، احدث مؤشر .


كيف تتعامل MQL4 مع الملفات برمجيا

منتدى المؤشرات و الاكسبيرتات


إضافة رد
 
أدوات الموضوع
قديم 14-08-2010, 03:21 PM   المشاركة رقم: 1
الكاتب
abogoda
عضو جديد

البيانات
تاريخ التسجيل: Aug 2010
رقم العضوية: 1100
المشاركات: 15
بمعدل : 0.00 يوميا

الإتصالات
الحالة:
abogoda غير متواجد حالياً
وسائل الإتصال:

المنتدى : منتدى المؤشرات و الاكسبيرتات
Smile كيف تتعامل MQL4 مع الملفات برمجيا

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

نظرا لأهمية الموضوع برمجيا فقد فضلت أن أكتبه في موضوع مستقل تماما عن دورة المؤشرات ودورة الاكسبيرتات .

في هذا الموضوع سوف نتعلم كيفية إنشاء الملفات النصية بأنواعها أو الملفات الثنائية لتخزين وقراءة المعلومات .

الملفات النصية هي الملفات التي تحوي حروف آسكي فقط وبدون أي تنسيق وهي التي تستطيع التعامل معها عن طريق برنامج المفكرة .

فمثلا ملفات الوورد والإكسيل ليست ملفات نصية مع أنه تخزن كتابة نصية ولكنها ذات تنسيق معين فهي قد تحتوي جداول وصور وتنسيقات نصية معينة .


الملفات الثنائية هي الملفات التي تخزن داخلها المعلومات بطريقة محددة عن طريق برنامج خاص بها مثل ملفات الأوتوكاد مثلا وجميع الملفات التنفيذية وغيرها .

بشكل عام يطلق على الملفات غير النصية على أنها ملفات ثنائية والتي لا يمكن قرائتها من برنامج المفكرة وتظهر لك حروف غريبة غير مفهومة .

تقنية التعامل مع الملفات من خلال MQL4 :

- يجب أولا فتح الملف أو إنشائه إذا لم يكن موجودا على القرص .

- بعد فتح الملف يعطينا البرنامج رقم مميز لهذا الملف ومن خلاله نستطيع التعامل معه في كود برنامجنا .

- نستطيع قراءة محتويات الملف وتعديلها أو إضافة معلومات جديدة .

- نستطيع القراءة من الملف تسلسليا أي من أول الملف إلى آخره .

- أيضا نستطيع القراءة من الملفات من الموقع الذي نريده وذلك بتغيير مؤشر الملف البوينتر .

- نستطيع حذف الملف من القرص بعد الانتهاء إذا أردنا ذلك .

- يمكن لهذه الملفات أن نتعامل معها من برامج أخرى مثل الإكسيل أو المفكرة .

- جميع الملفات يجب أن تكون مخزنة في مجلد برنامج الميتاتريدر نفسه في المجلد experts\files

- لا يمكن لبرنامج الميتاتريدر التعامل مع ملفات لا تكون مخزنة في هذا المجلد .

ما هي الأشياء والأفكار التي يمكن الاستفادة من هذا التقنية :

الأفكار والفوائد كثيرة جدا جدا فمثلا :

- يمكنك إنشاء ملف نصي عبارة عن تقرير عن حالة العملة الحالية وكتابة الأسعار الحالية وجميع المعلومات التي تريدها في تقرير واحد ويتم تحديثه آليا .

- يمكنك إنشاء ملف نصي للبيانات التاريخية القياسية إضافة لأي بيانات أخرى لأي مؤشر تختاره وتحليل هذه البيانات عن طريق برامج أخرى مثل الإكسيل .

- يمكنك جعل الميتاتريدر يصدر معلومات الأسعار بشكل لحظي والاستفادة منها في برامج أخرى .

- يمكنك إنشاء تقارير HTML ونشرها على موقعك بشكل لحظي وتحتوي هذه التقارير مثلا على الدعوم والمقاومات الحالية ولمختلف الفريمات .

بصراحة الأفكار لا تنتهي أبدا والإبداع مطلوب في هذه التقنية للحصول على أمور لا تصدق .

سوف يكون هذا الموضوع نواة لهذه الأفكار وتطبيقها بإذن الله ونحتاج همتكم معنا بالإبداع والتطبيق .


حاليا سوف نشرح الوظائف البرمجية التي لها علاقة بالملفات ومنها تستطيع عمل كل ما يحلو لك برمجيا ويفتح لك آفاقا جديدة في البرمجة والتحليل الفني .

الوظائف الخاصة بالملفات مرتبة أبجديا :

FileClose

تقوم هذه الوظيفة بإقفال الملف المفتوح وذلك بأن نعطيها رقم الملف والذي حصلنا عليه عندما فتحنا الملف .

رقم الملف يسمى مقبض الملف وهو عبارة عن رقم نحصل عليه عندما نفتح الملف ويجب علينا تخزينه ضمن متحول .

من هذا المقبض نقوم بجميع الفعاليات على الملف من قراءة وكتابة وتعديل وحذف وخلافه .


FileDelete

تقوم هذه الوظيفة بحذف ملف من خلال اسمه المعطى لهذه الوظيفة .

ويجب الانتباه إلى أن الملفات التي ينشئها الميتاتريدر تكون حصرا ضمن المجلد files الموجود ضمن المجلد experts وذلك لدواعي أمنية .


FileFlush

تقوم هذه الوظيفة بإجبار نظام التشغيل على كتابة الملف على القرص الصلب حقيقة .

لأن نظام التشغيل بشكل عام يتعامل مع الملفات في ذاكرة الرام لأنها أسرع من القرص الصلب .

وقد يحدث أي سبب أو عطل أو انهيار في النظام يمنعه من تخزين الملف على القرص الصلب فتضيع علينا المعلومات التي قمنا بوضعها على الملف وهي ما زالت في ذاكرة الحاسب .

عادة نستخدم هذه الوظيفة عند كتابة معلومات كثيرة على الملف ونريد من البرنامج تثبيتها فعليا على القرص الصلب .


FileIsEnding

تقوم هذه الوظيفة بإرجاع قيمتين true & false وهي تفحص هل وصل الملف إلى نهايته أم لا .

لأننا عندما نقرأ من ملف نصي أو ثنائي فإن هناك ما يسمى البوينتر ( المؤشر ) وهو عبارة عن رقم يمثل عدد البايتات التي قمنا بقرائتها فعليا من الملف .

ويزداد هذا الرقم أو المؤشر كلما قرأنا من الملف .

وعند وصول المؤشر إلى آخر بايت تصبح قيمة الوظيفة FileIsEnding صح .

بينما تكون قيمتها خطأ عندما يكون المؤشر في أي موضع آخر غير نهاية الملف .

نستفيد من هذه الوظيفة للتأكد أننا قد قرأنا كامل الملف وأننا وصلنا لنهايته .



FileIsLineEnding

نفس عمل الوظيفة السابقة ولكنها للملفات النصية فقط والتي تقرأ سطرا سطرا وليس كبايتات ثنائية .


FileOpen

تقوم هذه الوظيفة بفتح الملف باسم محدد وتحديد نوعه هل هو ملف نصي أم ثنائي .

وهل الملف للقراءة أو للكتابة أو للاثنين معا .

في حال لم يكن الملف موجودا فإن هذه الوظيفة تنشئ ملفا جديدا بنفس الاسم .

FileReadArray
FileWriteArray

تقوم الوظيفة الأولى بكتابة محتويات مصفوفة ما إلى الملف المفتوح والذي يجب أن يكون الملف المفتوح من النوع
الثنائي وليس ملفا نصيا .

وبهذه الوظيفة يمكننا حفظ محتويات مصفوفة هامة لضمان عدم فقد المعلومات الهامة عند إيقاف البرنامج لأي سبب ما .

أما الوظيفة الثانية فهي لاسترجاع محتويات هذه المصفوفة مرة أخرى من الملف الثنائي عند إعادة تشغيل البرنامج مرة أخرى .


FileWriteDouble
FileReadDouble


تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع double إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .

FileWriteInteger
FileReadInteger

تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع integer إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .


الوظائف الأربعة السابقة تقوم بحفظ الأرقام بالملف بالصيغة الثنائية وهذا يعني أنك عند فتح الملف ببرنامج المفكرة فلن ترى الأرقام ظاهرة أو واضحة أمامك .


FileReadNumber

تقوم هذه الوظيفة بقراءة رقم ما مكتوب في ملف نصي وليس رقما بالصيغة الثنائية .

FileWriteString
FileReadString

تقوم الوظيفة الأولى بكتابة قيمة نصية من النوع string إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة النصية من الملف الثنائي .

FileSeek
تقوم هذه الوظيفة بتغيير موقع البوينتر للملف المفتوح .
يجب فهم طريقة عمل البوينتر بشكل جيد .

فعند فتح الملف يكون البوينتر عند البايت رقم 1 للملف المفتوح .
عند قراءة أي قيمة نصية أو رقمية من الملف فإن البوينتر يتحرك بشكل آلي إلى آخر بايت تمت قرائته .

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


FileSize

تقوم هذه الوظيفة بإعادة حجم الملف الحالي بالبايت .


FileTell

تقوم هذه الوظيفة بإخبارنا عن موقع البوينتر للملف الحالي وهي تعمل عكس الوظيفة FileSeek .


FileWrite

تقوم هذه الوظيفة بكتابة معلومات نصية إلى الملف النصي فقط .


مثال عن فتح ملف نصي للقراءة فقط

في هذه الحالة يجب أن يكون الملف موجودا على القرص .

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

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_READ,';') ;
if(handle<1)
{
Print("File not found, the last error is ", GetLastError());[/PHP]

لاحظوا الوظيفة FileOpen تحتاج ثلاثة متحولات وهي:

- المتحول الأول اسم الملف الذي نريد فتحه ونحن أحرار في اختيار الاسم والامتداد الذي نريده ولسنا مقيدين بشروط خاصة .

- المتحول الثاني هو عبارة عن خصائص الملف المفتوح هل هو للقراءة فقط أو للقراءة والكتابة أو للكتابة فقط .

ونحدد ذلك بواسطة المتحولات FILE_READ - FILE_WRIT . والدمج بينهما عن طريق الحرف |

من نفس هذا المتحول نستطيع تحديد نوع الملف المفتوح هل هو نصي أم ثنائي .

الملف النصي نعرفه على أنه FILE_CSV والثنائي FILE_BIN ولا يمكن الدمج بين الحالتين أي أننا يجب أن نختار حالة واحدة فقط .

في مثالنا السابق حددنا نوع الملف على أنه نصي وأنه للقراءة فقط .

- المتحول الثالث هو الفاصل الإفتراضي بين المعلومات المكتوبة على الملف وهو هنا الحرف ؛ الفاصلة المنقوطة .

يمكن تحديد أي حرف آخر ولكن يفضل تركه كما هو لأنه قياسي بالنسبة للبرامج الأخرى مثل الاكسيل مثلا .

مثال عن طريقة كتابة معلومات نصية إلى الملف النصي :

في هذا المثال سوف نتعرف على طريقة كتابة بعض المعلومات التي نريدها إلى ملف نصي وذلك بواسطة الوظيفة FileWrite

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';' );
FileWrite(handle,Time[0],Close[0],Open[0],High[0],Low[0]);
FileClose(handle); [/PHP]

في المثال السابق فتحنا الملف النصي data.csv للكتابة فقط . وفي هذه الحالة في عدم وجود الملف مسبقا فإن هذه الوظيفة سوف تنشأه دائما .

أي أنها سوف تحذف الملف القديم وتنشيء ملفا جديدا كل مرة تنفذ فيها هذه الوظيفة .

بعد ذلك استخدمنا الوظيفة FileWrite لكتابة سطر كامل من المعلومات وهي هنا معلومات الشمعة الأخيرة .

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

إذا أردنا كتابة كل معلومات الشارت إلى الملف النصي فإننا سوف نستخدم حلقة لكافة شموع الشارت ويصبح المثال على الشكل
التالي :

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';' );
for(int i =0;i<=Bars;i++)
{
FileWrite(handle,Time[i],Close[i],Open[i],High[i],Low[i]);
}
FileClose(handle); [/PHP]


يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر .

لأنه من غير المعقول كتابة معلومات شموع الشارت كله إلى ملف نصي في كل مرة يتحرك بها السعر .



عرض البوم صور abogoda  
رد مع اقتباس


  #1  
قديم 14-08-2010, 03:21 PM
abogoda abogoda غير متواجد حالياً
عضو جديد
Smile كيف تتعامل MQL4 مع الملفات برمجيا

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

نظرا لأهمية الموضوع برمجيا فقد فضلت أن أكتبه في موضوع مستقل تماما عن دورة المؤشرات ودورة الاكسبيرتات .

في هذا الموضوع سوف نتعلم كيفية إنشاء الملفات النصية بأنواعها أو الملفات الثنائية لتخزين وقراءة المعلومات .

الملفات النصية هي الملفات التي تحوي حروف آسكي فقط وبدون أي تنسيق وهي التي تستطيع التعامل معها عن طريق برنامج المفكرة .

فمثلا ملفات الوورد والإكسيل ليست ملفات نصية مع أنه تخزن كتابة نصية ولكنها ذات تنسيق معين فهي قد تحتوي جداول وصور وتنسيقات نصية معينة .


الملفات الثنائية هي الملفات التي تخزن داخلها المعلومات بطريقة محددة عن طريق برنامج خاص بها مثل ملفات الأوتوكاد مثلا وجميع الملفات التنفيذية وغيرها .

بشكل عام يطلق على الملفات غير النصية على أنها ملفات ثنائية والتي لا يمكن قرائتها من برنامج المفكرة وتظهر لك حروف غريبة غير مفهومة .

تقنية التعامل مع الملفات من خلال MQL4 :

- يجب أولا فتح الملف أو إنشائه إذا لم يكن موجودا على القرص .

- بعد فتح الملف يعطينا البرنامج رقم مميز لهذا الملف ومن خلاله نستطيع التعامل معه في كود برنامجنا .

- نستطيع قراءة محتويات الملف وتعديلها أو إضافة معلومات جديدة .

- نستطيع القراءة من الملف تسلسليا أي من أول الملف إلى آخره .

- أيضا نستطيع القراءة من الملفات من الموقع الذي نريده وذلك بتغيير مؤشر الملف البوينتر .

- نستطيع حذف الملف من القرص بعد الانتهاء إذا أردنا ذلك .

- يمكن لهذه الملفات أن نتعامل معها من برامج أخرى مثل الإكسيل أو المفكرة .

- جميع الملفات يجب أن تكون مخزنة في مجلد برنامج الميتاتريدر نفسه في المجلد experts\files

- لا يمكن لبرنامج الميتاتريدر التعامل مع ملفات لا تكون مخزنة في هذا المجلد .

ما هي الأشياء والأفكار التي يمكن الاستفادة من هذا التقنية :

الأفكار والفوائد كثيرة جدا جدا فمثلا :

- يمكنك إنشاء ملف نصي عبارة عن تقرير عن حالة العملة الحالية وكتابة الأسعار الحالية وجميع المعلومات التي تريدها في تقرير واحد ويتم تحديثه آليا .

- يمكنك إنشاء ملف نصي للبيانات التاريخية القياسية إضافة لأي بيانات أخرى لأي مؤشر تختاره وتحليل هذه البيانات عن طريق برامج أخرى مثل الإكسيل .

- يمكنك جعل الميتاتريدر يصدر معلومات الأسعار بشكل لحظي والاستفادة منها في برامج أخرى .

- يمكنك إنشاء تقارير HTML ونشرها على موقعك بشكل لحظي وتحتوي هذه التقارير مثلا على الدعوم والمقاومات الحالية ولمختلف الفريمات .

بصراحة الأفكار لا تنتهي أبدا والإبداع مطلوب في هذه التقنية للحصول على أمور لا تصدق .

سوف يكون هذا الموضوع نواة لهذه الأفكار وتطبيقها بإذن الله ونحتاج همتكم معنا بالإبداع والتطبيق .


حاليا سوف نشرح الوظائف البرمجية التي لها علاقة بالملفات ومنها تستطيع عمل كل ما يحلو لك برمجيا ويفتح لك آفاقا جديدة في البرمجة والتحليل الفني .

الوظائف الخاصة بالملفات مرتبة أبجديا :

FileClose

تقوم هذه الوظيفة بإقفال الملف المفتوح وذلك بأن نعطيها رقم الملف والذي حصلنا عليه عندما فتحنا الملف .

رقم الملف يسمى مقبض الملف وهو عبارة عن رقم نحصل عليه عندما نفتح الملف ويجب علينا تخزينه ضمن متحول .

من هذا المقبض نقوم بجميع الفعاليات على الملف من قراءة وكتابة وتعديل وحذف وخلافه .


FileDelete

تقوم هذه الوظيفة بحذف ملف من خلال اسمه المعطى لهذه الوظيفة .

ويجب الانتباه إلى أن الملفات التي ينشئها الميتاتريدر تكون حصرا ضمن المجلد files الموجود ضمن المجلد experts وذلك لدواعي أمنية .


FileFlush

تقوم هذه الوظيفة بإجبار نظام التشغيل على كتابة الملف على القرص الصلب حقيقة .

لأن نظام التشغيل بشكل عام يتعامل مع الملفات في ذاكرة الرام لأنها أسرع من القرص الصلب .

وقد يحدث أي سبب أو عطل أو انهيار في النظام يمنعه من تخزين الملف على القرص الصلب فتضيع علينا المعلومات التي قمنا بوضعها على الملف وهي ما زالت في ذاكرة الحاسب .

عادة نستخدم هذه الوظيفة عند كتابة معلومات كثيرة على الملف ونريد من البرنامج تثبيتها فعليا على القرص الصلب .


FileIsEnding

تقوم هذه الوظيفة بإرجاع قيمتين true & false وهي تفحص هل وصل الملف إلى نهايته أم لا .

لأننا عندما نقرأ من ملف نصي أو ثنائي فإن هناك ما يسمى البوينتر ( المؤشر ) وهو عبارة عن رقم يمثل عدد البايتات التي قمنا بقرائتها فعليا من الملف .

ويزداد هذا الرقم أو المؤشر كلما قرأنا من الملف .

وعند وصول المؤشر إلى آخر بايت تصبح قيمة الوظيفة FileIsEnding صح .

بينما تكون قيمتها خطأ عندما يكون المؤشر في أي موضع آخر غير نهاية الملف .

نستفيد من هذه الوظيفة للتأكد أننا قد قرأنا كامل الملف وأننا وصلنا لنهايته .



FileIsLineEnding

نفس عمل الوظيفة السابقة ولكنها للملفات النصية فقط والتي تقرأ سطرا سطرا وليس كبايتات ثنائية .


FileOpen

تقوم هذه الوظيفة بفتح الملف باسم محدد وتحديد نوعه هل هو ملف نصي أم ثنائي .

وهل الملف للقراءة أو للكتابة أو للاثنين معا .

في حال لم يكن الملف موجودا فإن هذه الوظيفة تنشئ ملفا جديدا بنفس الاسم .

FileReadArray
FileWriteArray

تقوم الوظيفة الأولى بكتابة محتويات مصفوفة ما إلى الملف المفتوح والذي يجب أن يكون الملف المفتوح من النوع
الثنائي وليس ملفا نصيا .

وبهذه الوظيفة يمكننا حفظ محتويات مصفوفة هامة لضمان عدم فقد المعلومات الهامة عند إيقاف البرنامج لأي سبب ما .

أما الوظيفة الثانية فهي لاسترجاع محتويات هذه المصفوفة مرة أخرى من الملف الثنائي عند إعادة تشغيل البرنامج مرة أخرى .


FileWriteDouble
FileReadDouble


تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع double إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .

FileWriteInteger
FileReadInteger

تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع integer إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .


الوظائف الأربعة السابقة تقوم بحفظ الأرقام بالملف بالصيغة الثنائية وهذا يعني أنك عند فتح الملف ببرنامج المفكرة فلن ترى الأرقام ظاهرة أو واضحة أمامك .


FileReadNumber

تقوم هذه الوظيفة بقراءة رقم ما مكتوب في ملف نصي وليس رقما بالصيغة الثنائية .

FileWriteString
FileReadString

تقوم الوظيفة الأولى بكتابة قيمة نصية من النوع string إلى الملف الثنائي .

أما الوظيفة الثانية فهي تقوم بقراءة القيمة النصية من الملف الثنائي .

FileSeek
تقوم هذه الوظيفة بتغيير موقع البوينتر للملف المفتوح .
يجب فهم طريقة عمل البوينتر بشكل جيد .

فعند فتح الملف يكون البوينتر عند البايت رقم 1 للملف المفتوح .
عند قراءة أي قيمة نصية أو رقمية من الملف فإن البوينتر يتحرك بشكل آلي إلى آخر بايت تمت قرائته .

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


FileSize

تقوم هذه الوظيفة بإعادة حجم الملف الحالي بالبايت .


FileTell

تقوم هذه الوظيفة بإخبارنا عن موقع البوينتر للملف الحالي وهي تعمل عكس الوظيفة FileSeek .


FileWrite

تقوم هذه الوظيفة بكتابة معلومات نصية إلى الملف النصي فقط .


مثال عن فتح ملف نصي للقراءة فقط

في هذه الحالة يجب أن يكون الملف موجودا على القرص .

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

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_READ,';') ;
if(handle<1)
{
Print("File not found, the last error is ", GetLastError());[/PHP]

لاحظوا الوظيفة FileOpen تحتاج ثلاثة متحولات وهي:

- المتحول الأول اسم الملف الذي نريد فتحه ونحن أحرار في اختيار الاسم والامتداد الذي نريده ولسنا مقيدين بشروط خاصة .

- المتحول الثاني هو عبارة عن خصائص الملف المفتوح هل هو للقراءة فقط أو للقراءة والكتابة أو للكتابة فقط .

ونحدد ذلك بواسطة المتحولات FILE_READ - FILE_WRIT . والدمج بينهما عن طريق الحرف |

من نفس هذا المتحول نستطيع تحديد نوع الملف المفتوح هل هو نصي أم ثنائي .

الملف النصي نعرفه على أنه FILE_CSV والثنائي FILE_BIN ولا يمكن الدمج بين الحالتين أي أننا يجب أن نختار حالة واحدة فقط .

في مثالنا السابق حددنا نوع الملف على أنه نصي وأنه للقراءة فقط .

- المتحول الثالث هو الفاصل الإفتراضي بين المعلومات المكتوبة على الملف وهو هنا الحرف ؛ الفاصلة المنقوطة .

يمكن تحديد أي حرف آخر ولكن يفضل تركه كما هو لأنه قياسي بالنسبة للبرامج الأخرى مثل الاكسيل مثلا .

مثال عن طريقة كتابة معلومات نصية إلى الملف النصي :

في هذا المثال سوف نتعرف على طريقة كتابة بعض المعلومات التي نريدها إلى ملف نصي وذلك بواسطة الوظيفة FileWrite

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';' );
FileWrite(handle,Time[0],Close[0],Open[0],High[0],Low[0]);
FileClose(handle); [/PHP]

في المثال السابق فتحنا الملف النصي data.csv للكتابة فقط . وفي هذه الحالة في عدم وجود الملف مسبقا فإن هذه الوظيفة سوف تنشأه دائما .

أي أنها سوف تحذف الملف القديم وتنشيء ملفا جديدا كل مرة تنفذ فيها هذه الوظيفة .

بعد ذلك استخدمنا الوظيفة FileWrite لكتابة سطر كامل من المعلومات وهي هنا معلومات الشمعة الأخيرة .

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

إذا أردنا كتابة كل معلومات الشارت إلى الملف النصي فإننا سوف نستخدم حلقة لكافة شموع الشارت ويصبح المثال على الشكل
التالي :

[PHP]int handle;
handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';' );
for(int i =0;i<=Bars;i++)
{
FileWrite(handle,Time[i],Close[i],Open[i],High[i],Low[i]);
}
FileClose(handle); [/PHP]


يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر .

لأنه من غير المعقول كتابة معلومات شموع الشارت كله إلى ملف نصي في كل مرة يتحرك بها السعر .




رد مع اقتباس

إضافة رد

مواقع النشر (المفضلة)

الكلمات الدلالية (Tags)
الملفات, تتعامل, برمجيا, mql4


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 01:57 AM



جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com

تحذير المخاطرة

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

تنبيه هام

موقع اف اكس ارابيا هو موقع تعليمي خالص يهدف الي توعية المستثمر العربي مبادئ الاستثمار و التداول الناجح ولا يتحصل علي اي اموال مقابل ذلك ولا يقوم بادارة محافظ مالية وان ادارة الموقع غير مسؤولة عن اي استغلال من قبل اي شخص لاسمها وتحذر من ذلك.

اتصل بنا

البريد الإلكتروني للدعم الفنى : support@fx-arabia.com
جميع الحقوق محفوظة اف اكس ارابيا – احدى مواقع Inwestopedia Sp. Z O.O. للاستشارات و التدريب – جمهورية بولندا الإتحادية.
Powered by vBulletin® Copyright ©2000 - 2024 , Designed by Fx-Arabia Team