ممنوع منعاً باتاً وضع صور النساء في المواضيع و التواقيع , أو نشر فيديوهات او صور فضائح
سيتم حذف أي موضوع أو توقيع يشمل ذلك .
|
|
أدوات الموضوع | انواع عرض الموضوع |
|
10-07-2010, 04:51 AM | #1 | |
مشرفة منتدى الأعمال
|
كيفية تعامل mql4 مع الملفات برمجيا
نظرا لأهمية الموضوع برمجيا فقد فضلت أن أكتبه في موضوع مستقل تماما عن دورة المؤشرات ودورة الاكسبيرتات . في هذا الموضوع سوف نتعلم كيفية إنشاء الملفات النصية بأنواعها أو الملفات الثنائية لتخزين وقراءة المعلومات . الملفات النصية هي الملفات التي تحوي حروف آسكي فقط وبدون أي تنسيق وهي التي تستطيع التعامل معها عن طريق برنامج المفكرة . فمثلا ملفات الوورد والإكسيل ليست ملفات نصية مع أنه تخزن كتابة نصية ولكنها ذات تنسيق معين فهي قد تحتوي جداول وصور وتنسيقات نصية معينة . الملفات الثنائية هي الملفات التي تخزن داخلها المعلومات بطريقة محددة عن طريق برنامج خاص بها مثل ملفات الأوتوكاد مثلا وجميع الملفات التنفيذية وغيرها . بشكل عام يطلق على الملفات غير النصية على أنها ملفات ثنائية والتي لا يمكن قرائتها من برنامج المفكرة وتظهر لك حروف غريبة غير مفهومة . تقنية التعامل مع الملفات من خلال MQL4 : - يجب أولا فتح الملف أو إنشائه إذا لم يكن موجودا على القرص . - بعد فتح الملف يعطينا البرنامج رقم مميز لهذا الملف ومن خلاله نستطيع التعامل معه في كود برنامجنا . - نستطيع قراءة محتويات الملف وتعديلها أو إضافة معلومات جديدة . - نستطيع القراءة من الملف تسلسليا أي من أول الملف إلى آخره . - أيضا نستطيع القراءة من الملفات من الموقع الذي نريده وذلك بتغيير مؤشر الملف البوينتر . - نستطيع حذف الملف من القرص بعد الانتهاء إذا أردنا ذلك . - يمكن لهذه الملفات أن نتعامل معها من برامج أخرى مثل الإكسيل أو المفكرة . - جميع الملفات يجب أن تكون مخزنة في مجلد برنامج الميتاتريدر نفسه في المجلد experts\files - لا يمكن لبرنامج الميتاتريدر التعامل مع ملفات لا تكون مخزنة في هذا المجلد . ما هي الأشياء والأفكار التي يمكن الاستفادة من هذا التقنية : الأفكار والفوائد كثيرة جدا جدا فمثلا : - يمكنك إنشاء ملف نصي عبارة عن تقرير عن حالة العملة الحالية وكتابة الأسعار الحالية وجميع المعلومات التي تريدها في تقرير واحد ويتم تحديثه آليا . - يمكنك إنشاء ملف نصي للبيانات التاريخية القياسية إضافة لأي بيانات أخرى لأي مؤشر تختاره وتحليل هذه البيانات عن طريق برامج أخرى مثل الإكسيل . - يمكنك جعل الميتاتريدر يصدر معلومات الأسعار بشكل لحظي والاستفادة منها في برامج أخرى . - يمكنك إنشاء تقارير HTML ونشرها على موقعك بشكل لحظي وتحتوي هذه التقارير مثلا على الدعوم والمقاومات الحالية ولمختلف الفريمات . بصراحة الأفكار لا تنتهي أبدا والإبداع مطلوب في هذه التقنية للحصول على أمور لا تصدق . سوف يكون هذا الموضوع نواة لهذه الأفكار وتطبيقها بإذن الله ونحتاج همتكم معنا بالإبداع والتطبيق . حاليا سوف نشرح الوظائف البرمجية التي لها علاقة بالملفات ومنها تستطيع عمل كل ما يحلو لك برمجيا ويفتح لك آفاقا جديدة في البرمجة والتحليل الفني . الوظائف الخاصة بالملفات مرتبة أبجديا : FileClose تقوم هذه الوظيفة بإقفال الملف المفتوح وذلك بأن نعطيها رقم الملف والذي حصلنا عليه عندما فتحنا الملف . رقم الملف يسمى مقبض الملف وهو عبارة عن رقم نحصل عليه عندما نفتح الملف ويجب علينا تخزينه ضمن متحول . من هذا المقبض نقوم بجميع الفعاليات على الملف من قراءة وكتابة وتعديل وحذف وخلافه . FileDelete تقوم هذه الوظيفة بحذف ملف من خلال اسمه المعطى لهذه الوظيفة . ويجب الانتباه إلى أن الملفات التي ينشئها الميتاتريدر تكون حصرا ضمن المجلد files الموجود ضمن المجلد experts وذلك لدواعي أمنية . FileFlush تقوم هذه الوظيفة بإجبار نظام التشغيل على كتابة الملف على القرص الصلب حقيقة . لأن نظام التشغيل بشكل عام يتعامل مع الملفات في ذاكرة الرام لأنها أسرع من القرص الصلب . وقد يحدث أي سبب أو عطل أو انهيار في النظام يمنعه من تخزين الملف على القرص الصلب فتضيع علينا المعلومات التي قمنا بوضعها على الملف وهي ما زالت في ذاكرة الحاسب . عادة نستخدم هذه الوظيفة عند كتابة معلومات كثيرة على الملف ونريد من البرنامج تثبيتها فعليا على القرص الصلب . FileIsEnding تقوم هذه الوظيفة بإرجاع قيمتين true & false وهي تفحص هل وصل الملف إلى نهايته أم لا . لأننا عندما نقرأ من ملف نصي أو ثنائي فإن هناك ما يسمى البوينتر ( المؤشر ) وهو عبارة عن رقم يمثل عدد البايتات التي قمنا بقرائتها فعليا من الملف . ويزداد هذا الرقم أو المؤشر كلما قرأنا من الملف . وعند وصول المؤشر إلى آخر بايت تصبح قيمة الوظيفة FileIsEnding صح . بينما تكون قيمتها خطأ عندما يكون المؤشر في أي موضع آخر غير نهاية الملف . نستفيد من هذه الوظيفة للتأكد أننا قد قرأنا كامل الملف وأننا وصلنا لنهايته . FileIsLineEnding نفس عمل الوظيفة السابقة ولكنها للملفات النصية فقط والتي تقرأ سطرا سطرا وليس كبايتات ثنائية . FileOpen تقوم هذه الوظيفة بفتح الملف باسم محدد وتحديد نوعه هل هو ملف نصي أم ثنائي . وهل الملف للقراءة أو للكتابة أو للاثنين معا . في حال لم يكن الملف موجودا فإن هذه الوظيفة تنشئ ملفا جديدا بنفس الاسم . يتبع ... تستطيع أن تنشر الموضوع قي حسابك على الفيس بوك وتويتر |
|
10-07-2010, 04:52 AM | #2 | |
مشرفة منتدى الأعمال
|
رد: كيفية تعامل mql4 مع الملفات برمجيا
FileReadArray FileWriteArray تقوم الوظيفة الأولى بكتابة محتويات مصفوفة ما إلى الملف المفتوح والذي يجب أن يكون الملف المفتوح من النوع الثنائي وليس ملفا نصيا . وبهذه الوظيفة يمكننا حفظ محتويات مصفوفة هامة لضمان عدم فقد المعلومات الهامة عند إيقاف البرنامج لأي سبب ما . أما الوظيفة الثانية فهي لاسترجاع محتويات هذه المصفوفة مرة أخرى من الملف الثنائي عند إعادة تشغيل البرنامج مرة أخرى . FileWriteDouble FileReadDouble تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع double إلى الملف الثنائي . أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي . FileWriteInteger FileReadInteger تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع integer إلى الملف الثنائي . أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي . الوظائف الأربعة السابقة تقوم بحفظ الأرقام بالملف بالصيغة الثنائية وهذا يعني أنك عند فتح الملف ببرنامج المفكرة فلن ترى الأرقام ظاهرة أو واضحة أمامك . FileReadNumber تقوم هذه الوظيفة بقراءة رقم ما مكتوب في ملف نصي وليس رقما بالصيغة الثنائية . FileWriteString FileReadString تقوم الوظيفة الأولى بكتابة قيمة نصية من النوع string إلى الملف الثنائي . أما الوظيفة الثانية فهي تقوم بقراءة القيمة النصية من الملف الثنائي . FileSeek تقوم هذه الوظيفة بتغيير موقع البوينتر للملف المفتوح . يجب فهم طريقة عمل البوينتر بشكل جيد . فعند فتح الملف يكون البوينتر عند البايت رقم 1 للملف المفتوح . عند قراءة أي قيمة نصية أو رقمية من الملف فإن البوينتر يتحرك بشكل آلي إلى آخر بايت تمت قرائته . يمكن في أي وقت تغيير موقع البوينتر إلى المكان الذي نريده ويجب التعامل مع هذه الميزة بحذر لأنها قد تؤدي إلى قراءة أو كتابة المعلومات بشكل خاطيء على الملف . FileSize تقوم هذه الوظيفة بإعادة حجم الملف الحالي بالبايت . FileTell تقوم هذه الوظيفة بإخبارنا عن موقع البوينتر للملف الحالي وهي تعمل عكس الوظيفة FileSeek . FileWrite تقوم هذه الوظيفة بكتابة معلومات نصية إلى الملف النصي فقط . سوف نتابع مع الأمثلة التوضيحية إن شاء الله . |
|
10-07-2010, 04:52 AM | #3 | |
مشرفة منتدى الأعمال
|
رد: كيفية تعامل mql4 مع الملفات برمجيا
نكمل هذا الدرس الهام مع بعض الأمثلة البسيطة لتطبيق المفاهيم السابقة التي تعلمناها سابقا . مثال عن فتح ملف نصي للقراءة فقط : في هذه الحالة يجب أن يكون الملف موجودا على القرص . في حال لم يكن الملف موجودا أصلا فإن خطأ سوف يحدث ولن نحصل على رقم أو مقبض هذا الملف . كود PHP: int handle; handle=FileOpen("data.csv",FILE_CSV|FILE_READ,';'); if(handle<1) { Print("File not found, the last error is ", GetLastError()); return(false); } ..... لاحظوا الوظيفة 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); في المثال السابق فتحنا الملف النصي 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); يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر . لأنه من غير المعقول كتابة معلومات شموع الشارت كله إلى ملف نصي في كل مرة يتحرك بها السعر . م/ن للفائدة تحياتي نرمين من المغرب. |
|
مواقع النشر (المفضلة) |
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
أدوات الموضوع | |
انواع عرض الموضوع | |
|
|
|