النتائج 1 إلى 15 من 28
- 10-04-2008, 04:19 PM #1
كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
نظرا لأهمية الموضوع برمجيا فقد فضلت أن أكتبه في موضوع مستقل تماما عن دورة المؤشرات ودورة الاكسبيرتات .
في هذا الموضوع سوف نتعلم كيفية إنشاء الملفات النصية بأنواعها أو الملفات الثنائية لتخزين وقراءة المعلومات .
الملفات النصية هي الملفات التي تحوي حروف آسكي فقط وبدون أي تنسيق وهي التي تستطيع التعامل معها عن طريق برنامج المفكرة .
فمثلا ملفات الوورد والإكسيل ليست ملفات نصية مع أنه تخزن كتابة نصية ولكنها ذات تنسيق معين فهي قد تحتوي جداول وصور وتنسيقات نصية معينة .
الملفات الثنائية هي الملفات التي تخزن داخلها المعلومات بطريقة محددة عن طريق برنامج خاص بها مثل ملفات الأوتوكاد مثلا وجميع الملفات التنفيذية وغيرها .
بشكل عام يطلق على الملفات غير النصية على أنها ملفات ثنائية والتي لا يمكن قرائتها من برنامج المفكرة وتظهر لك حروف غريبة غير مفهومة .
تقنية التعامل مع الملفات من خلال MQL4 :
- يجب أولا فتح الملف أو إنشائه إذا لم يكن موجودا على القرص .
- بعد فتح الملف يعطينا البرنامج رقم مميز لهذا الملف ومن خلاله نستطيع التعامل معه في كود برنامجنا .
- نستطيع قراءة محتويات الملف وتعديلها أو إضافة معلومات جديدة .
- نستطيع القراءة من الملف تسلسليا أي من أول الملف إلى آخره .
- أيضا نستطيع القراءة من الملفات من الموقع الذي نريده وذلك بتغيير مؤشر الملف البوينتر .
- نستطيع حذف الملف من القرص بعد الانتهاء إذا أردنا ذلك .
- يمكن لهذه الملفات أن نتعامل معها من برامج أخرى مثل الإكسيل أو المفكرة .
- جميع الملفات يجب أن تكون مخزنة في مجلد برنامج الميتاتريدر نفسه في المجلد experts\files
- لا يمكن لبرنامج الميتاتريدر التعامل مع ملفات لا تكون مخزنة في هذا المجلد .
ما هي الأشياء والأفكار التي يمكن الاستفادة من هذا التقنية :
الأفكار والفوائد كثيرة جدا جدا فمثلا :
- يمكنك إنشاء ملف نصي عبارة عن تقرير عن حالة العملة الحالية وكتابة الأسعار الحالية وجميع المعلومات التي تريدها في تقرير واحد ويتم تحديثه آليا .
- يمكنك إنشاء ملف نصي للبيانات التاريخية القياسية إضافة لأي بيانات أخرى لأي مؤشر تختاره وتحليل هذه البيانات عن طريق برامج أخرى مثل الإكسيل .
- يمكنك جعل الميتاتريدر يصدر معلومات الأسعار بشكل لحظي والاستفادة منها في برامج أخرى .
- يمكنك إنشاء تقارير HTML ونشرها على موقعك بشكل لحظي وتحتوي هذه التقارير مثلا على الدعوم والمقاومات الحالية ولمختلف الفريمات .
بصراحة الأفكار لا تنتهي أبدا والإبداع مطلوب في هذه التقنية للحصول على أمور لا تصدق .
سوف يكون هذا الموضوع نواة لهذه الأفكار وتطبيقها بإذن الله ونحتاج همتكم معنا بالإبداع والتطبيق .
حاليا سوف نشرح الوظائف البرمجية التي لها علاقة بالملفات ومنها تستطيع عمل كل ما يحلو لك برمجيا ويفتح لك آفاقا جديدة في البرمجة والتحليل الفني .
الوظائف الخاصة بالملفات مرتبة أبجديا :
FileClose
تقوم هذه الوظيفة بإقفال الملف المفتوح وذلك بأن نعطيها رقم الملف والذي حصلنا عليه عندما فتحنا الملف .
رقم الملف يسمى مقبض الملف وهو عبارة عن رقم نحصل عليه عندما نفتح الملف ويجب علينا تخزينه ضمن متحول .
من هذا المقبض نقوم بجميع الفعاليات على الملف من قراءة وكتابة وتعديل وحذف وخلافه .
FileDelete
تقوم هذه الوظيفة بحذف ملف من خلال اسمه المعطى لهذه الوظيفة .
ويجب الانتباه إلى أن الملفات التي ينشئها الميتاتريدر تكون حصرا ضمن المجلد files الموجود ضمن المجلد experts وذلك لدواعي أمنية .
FileFlush
تقوم هذه الوظيفة بإجبار نظام التشغيل على كتابة الملف على القرص الصلب حقيقة .
لأن نظام التشغيل بشكل عام يتعامل مع الملفات في ذاكرة الرام لأنها أسرع من القرص الصلب .
وقد يحدث أي سبب أو عطل أو انهيار في النظام يمنعه من تخزين الملف على القرص الصلب فتضيع علينا المعلومات التي قمنا بوضعها على الملف وهي ما زالت في ذاكرة الحاسب .
عادة نستخدم هذه الوظيفة عند كتابة معلومات كثيرة على الملف ونريد من البرنامج تثبيتها فعليا على القرص الصلب .
FileIsEnding
تقوم هذه الوظيفة بإرجاع قيمتين true & false وهي تفحص هل وصل الملف إلى نهايته أم لا .
لأننا عندما نقرأ من ملف نصي أو ثنائي فإن هناك ما يسمى البوينتر ( المؤشر ) وهو عبارة عن رقم يمثل عدد البايتات التي قمنا بقرائتها فعليا من الملف .
ويزداد هذا الرقم أو المؤشر كلما قرأنا من الملف .
وعند وصول المؤشر إلى آخر بايت تصبح قيمة الوظيفة FileIsEnding صح .
بينما تكون قيمتها خطأ عندما يكون المؤشر في أي موضع آخر غير نهاية الملف .
نستفيد من هذه الوظيفة للتأكد أننا قد قرأنا كامل الملف وأننا وصلنا لنهايته .
FileIsLineEnding
نفس عمل الوظيفة السابقة ولكنها للملفات النصية فقط والتي تقرأ سطرا سطرا وليس كبايتات ثنائية .
FileOpen
تقوم هذه الوظيفة بفتح الملف باسم محدد وتحديد نوعه هل هو ملف نصي أم ثنائي .
وهل الملف للقراءة أو للكتابة أو للاثنين معا .
في حال لم يكن الملف موجودا فإن هذه الوظيفة تنشئ ملفا جديدا بنفس الاسم .
يتبع ...
- 10-04-2008, 06:41 PM #2
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
متابعين معك أخ وضاح
و بارك الله بك
- 10-04-2008, 09:12 PM #3
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
من المتابعين ايضاً ان شاء الله
جزاك الله خيراً
- 11-04-2008, 12:00 AM #4
- 11-04-2008, 12:02 AM #5
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
FileReadArray
FileWriteArray
تقوم الوظيفة الأولى بكتابة محتويات مصفوفة ما إلى الملف المفتوح والذي يجب أن يكون الملف المفتوح من النوع
الثنائي وليس ملفا نصيا .
وبهذه الوظيفة يمكننا حفظ محتويات مصفوفة هامة لضمان عدم فقد المعلومات الهامة عند إيقاف البرنامج لأي سبب ما .
أما الوظيفة الثانية فهي لاسترجاع محتويات هذه المصفوفة مرة أخرى من الملف الثنائي عند إعادة تشغيل البرنامج مرة أخرى .
FileWriteDouble
FileReadDouble
تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع double إلى الملف الثنائي .
أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .
FileWriteInteger
FileReadInteger
تقوم الوظيفة الأولى بكتابة قيمة رقمية من النوع integer إلى الملف الثنائي .
أما الوظيفة الثانية فهي تقوم بقراءة القيمة الرقمية من الملف الثنائي .
الوظائف الأربعة السابقة تقوم بحفظ الأرقام بالملف بالصيغة الثنائية وهذا يعني أنك عند فتح الملف ببرنامج المفكرة فلن ترى الأرقام ظاهرة أو واضحة أمامك .
FileReadNumber
تقوم هذه الوظيفة بقراءة رقم ما مكتوب في ملف نصي وليس رقما بالصيغة الثنائية .
FileWriteString
FileReadString
تقوم الوظيفة الأولى بكتابة قيمة نصية من النوع string إلى الملف الثنائي .
أما الوظيفة الثانية فهي تقوم بقراءة القيمة النصية من الملف الثنائي .
FileSeek
تقوم هذه الوظيفة بتغيير موقع البوينتر للملف المفتوح .
يجب فهم طريقة عمل البوينتر بشكل جيد .
فعند فتح الملف يكون البوينتر عند البايت رقم 1 للملف المفتوح .
عند قراءة أي قيمة نصية أو رقمية من الملف فإن البوينتر يتحرك بشكل آلي إلى آخر بايت تمت قرائته .
يمكن في أي وقت تغيير موقع البوينتر إلى المكان الذي نريده ويجب التعامل مع هذه الميزة بحذر لأنها قد تؤدي إلى قراءة أو كتابة المعلومات بشكل خاطيء على الملف .
FileSize
تقوم هذه الوظيفة بإعادة حجم الملف الحالي بالبايت .
FileTell
تقوم هذه الوظيفة بإخبارنا عن موقع البوينتر للملف الحالي وهي تعمل عكس الوظيفة FileSeek .
FileWrite
تقوم هذه الوظيفة بكتابة معلومات نصية إلى الملف النصي فقط .
سوف نتابع مع الأمثلة التوضيحية إن شاء الله .
- 12-04-2008, 12:26 AM #6
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
جزاك الله كل خير اخي وضاح
ولكن اعتقد ان الجمل السابقة التي بالخط الاحمر (معكوسة)
ارجو التوضيح
آخر تعديل بواسطة wajdyss ، 12-04-2008 الساعة 12:29 AM
- 12-04-2008, 04:00 PM #7
- 12-04-2008, 04:01 PM #8
رد: كيفية تعامل 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);
يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر .
لأنه من غير المعقول كتابة معلومات شموع الشارت كله إلى ملف نصي في كل مرة يتحرك بها السعر .
سوف نتابع إن شاء الله مع أمثلة أكثر تعقيدا .
- 13-04-2008, 12:21 AM #9
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
جزاك الله كل خير
- 15-04-2008, 02:31 AM #10
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
بارك الله فيك ياأخي وضاح وزادك علما.
في الحقيقة الموضوع مهم وشيق.
سأكون بإذن الله من المتابعين على الرغم من قلة كتاباتي.
وفقكم الله
- 23-04-2008, 10:45 PM #11
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
إخواني الأعزاء
الموضوع مفيد وشيق لأنه من الممكن إستخدامه في أشياء تتعلق بتحسين عمل الإكسبرتات وكذلك الحصول على بيانات لايمكن الحصول عليها بسهولة بالطرق العادية.
على سبيل المثال ... تخيل أن لديك طريقة معينة وترى أنها مربحة نوعا ما وتريد تحسينها ...
فرضا ... تقاطع المتوسط الحسابي 1 والمتوسط 2 وتريد أن تسجل في نفس الوقت (أي لحظة فتح وغلق الصفقات) قيم كل من - على سبيل المثال - الماكد والبارابوليك سار والستوتاستك وADX والمومنتوم وRSI والقائمة طويلة. فبإمكان طريقة إرسال البيانات لملف يتم فتحه بواسطة الإكسبرت تسجيل وتوثيق هذه البيانات لكي يتم دراستها لاحقا ومن ثم يمكن الإستفادة منها لتحسين عمل آداء الإكسبرت.
هذه الفكرة ماهي إلا إحدى التطبيقات التي يمكن إنجازها وقد خطرت لي لأنني في الحقيقة أثق جدا في طرق إنشاء قواعد البيانات وإستخلاص العديد من النتائج المفيدة منها.
كما أنه من الممكن أن يتم إنشاء كشف الحساب الخاص بالإكسبرت وذلك بإرسال معلومات كل الصفقات أولا بأول للملف وبهذا يمكن إنشاء ملف يحمل بيانات تستمر لمدة أشهر بدلا من شهر واحد (الديمو).
أرجو أن تكون هذه الأفكار واضحة وممكن تنفيذها على الرغم من إلمامي الجيد بالبرمجة إلا أنني لم أحاول التعامل مع الملفات بلغة MQL4 وهي ليست صعبة كما أرى ولكن ماينقص هو إيجاد الفكرة أما التنفيذ يأتي بالإصرار بعد التوفيق من الله تعالى.
أتمنى الإهتمام بهذا الموضوع وإثراؤه لصالح الجميع.
مع جزيل الشكر للأستاذ وضاح لهذه الفكرة الرائعة.
والسلام عليكم ورحمة الله وبركاته
أخوكم
أسامة بن شعبان
- 24-04-2008, 10:49 PM #12
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
استاذ وضاح تعجز الكلامات عن شكرك وعلى فكرة انا من المتابعين دائما وبصمت واستطيع ان اقول انني من اكثر المستفيدين ولك حبي وتقديري
سؤالي من هذا الموضوع ممكن بدء عمل الذكاء الاصناعي للاكسبريت ؟؟
شكراً
- 09-05-2008, 05:08 PM #13
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
شكرا
- 15-07-2008, 06:15 PM #14
- 15-07-2008, 11:44 PM #15
رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )
أهلا بك أخي العزيز
تذكرت نكتة طريفة عندما قرأت مشاركتك هذه
أراد أحد الأشخاص أن يطير بالطائرة فاشترى كتابا يعلمه الطيران
المهم بدأ بالقراءة والتطبيق مباشرة على طائرة خاصة
ونفذ كل التعليمات وطار بالطائرة
ولكنه وصل إلى نهاية الكتاب مع جملة " ها قد انتهينا من تعلم الإقلاع .. سنتعلم الهبوط في الجزء الثاني "
وأعدك أن أكمل الجزء الثاني قريبا إن شاء الله ولا أتركك في السماء
المواضيع المتشابهه
-
استفسار في موضوع رفع الملفات
By BENGOO in forum استراحة اعضاء المتداول العربيمشاركات: 2آخر مشاركة: 14-10-2009, 11:24 PM -
كيفية تعامل الإداره مع الأعضاء المشاغبين)بالصور
By amr alaa in forum استراحة اعضاء المتداول العربيمشاركات: 3آخر مشاركة: 07-05-2009, 05:42 AM -
كيفية تحويل من صيغة ex4 الى mql4
By the_king1983 in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 3آخر مشاركة: 27-11-2008, 02:02 AM -
كيفية العامل مع الملفات نوع .dat
By mercury_man in forum استراحة اعضاء المتداول العربيمشاركات: 3آخر مشاركة: 18-04-2008, 11:30 PM -
كيفية تعامل شركة ugmfx
By candidaplus in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 2آخر مشاركة: 01-04-2007, 04:19 PM