صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 28
  1. #1
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    FileClose

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

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

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


    FileDelete

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

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


    FileFlush

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

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

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

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


    FileIsEnding

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

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

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

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

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

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



    FileIsLineEnding

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


    FileOpen

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

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

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


    يتبع ...
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  2. #2
    الصورة الرمزية محمود عامر
    محمود عامر غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2007
    الإقامة
    canada-كندا
    المشاركات
    891

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    متابعين معك أخ وضاح
    و بارك الله بك

  3. #3
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,959

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    من المتابعين ايضاً ان شاء الله

    جزاك الله خيراً
    توقيع العضو
    مبرمج MT4 , MT5

    يمكنكم الاستماع للقرآن الكريم 24/7
    https://forum.arabictrader.com/t265331.html

  4. #4
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    اقتباس المشاركة الأصلية كتبت بواسطة محمود عامر مشاهدة المشاركة
    متابعين معك أخ وضاح
    و بارك الله بك

    أهلا بك أخي الكريم محمود دائما

    اقتباس المشاركة الأصلية كتبت بواسطة wajdyss مشاهدة المشاركة
    من المتابعين ايضاً ان شاء الله

    جزاك الله خيراً

    حياك الله أخي العزيز وشكرا لك .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  5. #5
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )


    FileReadArray
    FileWriteArray


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

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

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


    FileWriteDouble
    FileReadDouble


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

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

    FileWriteInteger
    FileReadInteger


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

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


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


    FileReadNumber

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

    FileWriteString
    FileReadString


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

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

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

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

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


    FileSize

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


    FileTell

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


    FileWrite

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


    سوف نتابع مع الأمثلة التوضيحية إن شاء الله .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  6. #6
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,959

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    اقتباس المشاركة الأصلية كتبت بواسطة وضاح عطار مشاهدة المشاركة
    FileReadArray
    FileWriteArray

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

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

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


    FileWriteDouble
    FileReadDouble

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

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

    FileWriteInteger
    FileReadInteger

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

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


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


    FileReadNumber

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

    FileWriteString
    FileReadString

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

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

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

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

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


    FileSize

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


    FileTell

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


    FileWrite

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


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

    ولكن اعتقد ان الجمل السابقة التي بالخط الاحمر (معكوسة)





    ارجو التوضيح

    آخر تعديل بواسطة wajdyss ، 12-04-2008 الساعة 12:29 AM
    توقيع العضو
    مبرمج MT4 , MT5

    يمكنكم الاستماع للقرآن الكريم 24/7
    https://forum.arabictrader.com/t265331.html

  7. #7
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    اقتباس المشاركة الأصلية كتبت بواسطة wajdyss مشاهدة المشاركة
    جزاك الله كل خير اخي وضاح


    ولكن اعتقد ان الجمل السابقة التي بالخط الاحمر (معكوسة)





    ارجو التوضيح

    نعم أخي كلامك صحيح

    وهو هنا خطأ مطبعي .

    شكرا لك
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  8. #8
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي رد: كيفية تعامل 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); 


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

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

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

  9. #9
    الصورة الرمزية wajdyss
    wajdyss غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2006
    الإقامة
    السعودية
    المشاركات
    2,959

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    جزاك الله كل خير
    توقيع العضو
    مبرمج MT4 , MT5

    يمكنكم الاستماع للقرآن الكريم 24/7
    https://forum.arabictrader.com/t265331.html

  10. #10
    الصورة الرمزية أسامة
    أسامة غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2005
    الإقامة
    ليبيا
    المشاركات
    1,763

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    بارك الله فيك ياأخي وضاح وزادك علما.
    في الحقيقة الموضوع مهم وشيق.
    سأكون بإذن الله من المتابعين على الرغم من قلة كتاباتي.
    وفقكم الله
    توقيع العضو
    نَصِيحَتِي لَكَ... اِبْحَثْ جَيِّدًا قَبْلَ أَنْ تَسْأَلَ... فَهَذَا يُعْلِمَك أَكْثَرَ

  11. #11
    الصورة الرمزية أسامة
    أسامة غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2005
    الإقامة
    ليبيا
    المشاركات
    1,763

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    إخواني الأعزاء

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

    على سبيل المثال ... تخيل أن لديك طريقة معينة وترى أنها مربحة نوعا ما وتريد تحسينها ...
    فرضا ... تقاطع المتوسط الحسابي 1 والمتوسط 2 وتريد أن تسجل في نفس الوقت (أي لحظة فتح وغلق الصفقات) قيم كل من - على سبيل المثال - الماكد والبارابوليك سار والستوتاستك وADX والمومنتوم وRSI والقائمة طويلة. فبإمكان طريقة إرسال البيانات لملف يتم فتحه بواسطة الإكسبرت تسجيل وتوثيق هذه البيانات لكي يتم دراستها لاحقا ومن ثم يمكن الإستفادة منها لتحسين عمل آداء الإكسبرت.

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

    كما أنه من الممكن أن يتم إنشاء كشف الحساب الخاص بالإكسبرت وذلك بإرسال معلومات كل الصفقات أولا بأول للملف وبهذا يمكن إنشاء ملف يحمل بيانات تستمر لمدة أشهر بدلا من شهر واحد (الديمو).

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

    أتمنى الإهتمام بهذا الموضوع وإثراؤه لصالح الجميع.
    مع جزيل الشكر للأستاذ وضاح لهذه الفكرة الرائعة.
    والسلام عليكم ورحمة الله وبركاته

    أخوكم
    أسامة بن شعبان
    توقيع العضو
    نَصِيحَتِي لَكَ... اِبْحَثْ جَيِّدًا قَبْلَ أَنْ تَسْأَلَ... فَهَذَا يُعْلِمَك أَكْثَرَ

  12. #12
    الصورة الرمزية majjed2005
    majjed2005 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2008
    العمر
    44
    المشاركات
    134

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    استاذ وضاح تعجز الكلامات عن شكرك وعلى فكرة انا من المتابعين دائما وبصمت واستطيع ان اقول انني من اكثر المستفيدين ولك حبي وتقديري
    سؤالي من هذا الموضوع ممكن بدء عمل الذكاء الاصناعي للاكسبريت ؟؟
    شكراً

  13. #13
    الصورة الرمزية علي موفق
    علي موفق غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2006
    المشاركات
    40

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    شكرا

  14. #14
    الصورة الرمزية mercury_man
    mercury_man غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jul 2007
    الإقامة
    روسيا - سانت بطرسبورغ
    المشاركات
    1,975

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

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

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

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

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

    كود PHP:
    [size=5][color=blue]int handle;[/color][/size]
    [
    size=5][color=blue]  handle=FileOpen("data.csv",FILE_CSV|FILE_READ,';');[/color][/size]
    [
    size=5][color=blue]  if(handle<1)[/color][/size]
    [
    size=5][color=blue]    {[/color][/size]
    [
    size=5][color=blue]     Print("File not found, the last error is "GetLastError());[/color][/size]
    [
    size=5][color=blue]     return(false);[/color][/size]
    [
    size=5][color=blue]    }[/color][/size]
    [
    size=5][color=blue].....[/color][/size]
    [
    size=5][color=blue][/color][/size
    لاحظوا الوظيفة FileOpen تحتاج ثلاثة متحولات وهي:

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

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

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

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

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

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

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

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


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

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

    كود PHP:
    [size=5][color=blue]int handle;[/color][/size]
    [
    size=5][color=blue]handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';');[/color][/size]
    [
    size=5][color=blue]FileWrite(handle,Time[0],Close[0],Open[0],High[0],Low[0]);[/color][/size]
    [
    size=5][color=blue]FileClose(handle);[/color][/size]
    [
    size=5][color=blue][/color][/size

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

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

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

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

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

    كود PHP:
    [size=5][color=blue]int handle;[/color][/size]
    [
    size=5][color=blue]handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';');[/color][/size]
    [
    size=5][color=blue]for(int i =0;i<=Bars;i++)[/color][/size]
    [
    size=5][color=blue]{[/color][/size]
    [
    size=5][color=blue]  FileWrite(handle,Time[i],Close[i],Open[i],High[i],Low[i]);[/color][/size]
    [
    size=5][color=blue]}[/color][/size]
    [
    size=5][color=blue]FileClose(handle);[/color][/size]
    [
    size=5][color=blue][/color][/size
    يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر .

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

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


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

    تحية كبيرة يا كبير

  15. #15
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,041

    افتراضي رد: كيفية تعامل MQL4 مع الملفات برمجيا ( موضوع هام لن تقرأه إلا هنا )

    اقتباس المشاركة الأصلية كتبت بواسطة mercury_man مشاهدة المشاركة
    طيب بهذا عرفنا طريقة الكتابة الى ملف
    كيف نقرا ما كتبناه من نفس الملف اعلاه
    انا متأكد انه لن أقرأ الجواب الا هنا

    تحية كبيرة يا كبير
    أهلا بك أخي العزيز

    تذكرت نكتة طريفة عندما قرأت مشاركتك هذه

    أراد أحد الأشخاص أن يطير بالطائرة فاشترى كتابا يعلمه الطيران

    المهم بدأ بالقراءة والتطبيق مباشرة على طائرة خاصة

    ونفذ كل التعليمات وطار بالطائرة

    ولكنه وصل إلى نهاية الكتاب مع جملة " ها قد انتهينا من تعلم الإقلاع .. سنتعلم الهبوط في الجزء الثاني "

    وأعدك أن أكمل الجزء الثاني قريبا إن شاء الله ولا أتركك في السماء
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

صفحة 1 من 2 12 الأخيرةالأخيرة

المواضيع المتشابهه

  1. استفسار في موضوع رفع الملفات
    By BENGOO in forum استراحة اعضاء المتداول العربي
    مشاركات: 2
    آخر مشاركة: 14-10-2009, 11:24 PM
  2. كيفية تعامل الإداره مع الأعضاء المشاغبين)بالصور
    By amr alaa in forum استراحة اعضاء المتداول العربي
    مشاركات: 3
    آخر مشاركة: 07-05-2009, 05:42 AM
  3. كيفية تحويل من صيغة ex4 الى mql4
    By the_king1983 in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 3
    آخر مشاركة: 27-11-2008, 02:02 AM
  4. كيفية العامل مع الملفات نوع .dat
    By mercury_man in forum استراحة اعضاء المتداول العربي
    مشاركات: 3
    آخر مشاركة: 18-04-2008, 11:30 PM
  5. كيفية تعامل شركة ugmfx
    By candidaplus in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 2
    آخر مشاركة: 01-04-2007, 04:19 PM

الاوسمة لهذا الموضوع


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17