النتائج 1 إلى 15 من 122
- 05-02-2016, 08:30 AM #1
موضوع هام جدا عن كيفية تبادل المعلومات بين منصات الميتاتريدر
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
يعاني الكثير وخصوصا المبرمجين من صعوبة تبادل البيانات بين منصتين ميتاتريدر أو أكثر ... وهي قد تكون ضرورية لأسباب كثيرة وتطبيق لأفكار جديدة ...
ومع أنه يوجد حلول برمجية كثيرة إلا أنها صعبة ومعقدة وقد تكون بطيئة أيضا .
لذلك قمت والحمد لله ببرمجة كود بسيط وسريع جدا وبفكرة مبتكرة جدا لتنفيذ هذه المهمة الصعبة .
والكود سوف أرفقه .. بل وأشرحه لمن هو مهتم .
يمكن الآن للمبرمجين الاستفادة من هذا الكود بعدة طرق :
- نقل المعلومات من منصة لمنصة أخرى وعمل مقارنات بين الأسعار مثلا أو بين قيم المؤشرات المختلفة بين منصتين أو أكثر .
- عمل برامج ناسخة للصفقات بكل سهولة ويسر .
- يمكن لأي اكسبيرت أو مؤشر معرفة الرصيد مثلا في حساب آخر .
الأفكار لا تنتهي ولن تنتهي ... وسيجد المبرمجون الكثير من الأفكار لتطبيقها الآن مع هذا الكود ..
نأتي الآن لشرح الفكرة الأساسية لهذا الكود وطريقة عمله .
يوجد في الميتاتريدر خدمة برمجية اسمها المتحولات العامة Global Variables .
هذه المتحولات العامة يمكنك برمجيا أو يدويا إنشاء ما تريد منها ووضع القيمة التي تريد بكل متحول .
وهذه المتحولات هي عامة فقط لهذه المنصة ... أي أن لكل منصة متحولاتها العامة وليس هناك أي طريقة لقراءة متحولات عامة من منصة أخرى .
وهنا جاءت الفكرة وجاء الحل ...
فهذا الكود البسيط يقوم بمشاركة هذه المتحولات العامة بين أي عدد من المنصات وبشكل لحظي ... وأي تغير يطرأ على أي متحول ينعكس مباشرة في المنصة الأخرى .
لذلك كان الكود على شكل سكريبتين ... السكريبت الأول MASTER تقوم بوضعه على شارت في المنصة التي تريد النقل منها .
والسكريبت الثاني CLIENT تشغله على المنصة التي تريد النقل إليها .
ويمكن وضع سكريبت CLIENT على أكثر من منصة والتي تريد أن تنتقل المتحولات العامة من الماستر إليها .
بهذه الطريقة أي متحول جديد يتم إنشاءه برمجيا أو يدويا ... أو أي متحول تتغير قيمته في الماستر ... ستجد هذا المتحول وقيمته موجودة مباشرة في أي منصة يعمل عليها الكلاينت .
لذلك لو صممت مؤشر مثلا على الماستر يقوم بتسجيل أسعاره في المتحولات العامة ... وشغلته مع الماستر .
وأيضا صممت اكسبيرت يقوم بقراءة الأسعار من الماستر ويقارنها مثلا بأسعاره ... فأنت حصلت على برنامج أربيتراج سهل وسريع ...
ومن فترة طلب مني الأخ صاحب هدف برنامج يقوم بإغلاق صفقة ما بمجرد إغلاقها في منصة أخرى ..
الآن يمكن عمل ذلك بسهولة ... طالما أصبح عندنا طريقة لتبادل البيانات بين المنصات .
طبعا هذا الموضوع برمجي بحت ووضعته هنا لكي يطلع عليه أكبر عدد ومن ثم سيتم نقله يدويا إلى قسمه الخاص .
شرح طريقة العمل :
- ضع السكريبت الأول MASTER على أي شارت على المنصة التي تريد النقل منها .
- اسمح له باستخدام DLL .
- سيظهر لك رقم الاتصال Handle .
- اضغط زر Start .
- ضع السكريبت الثاني CLIENT على أي شارت على المنصة التي تريد النقل إليها .
- اسمح له باستخدام DLL .
- اكتب في الخاصية MasterHandle الرقم الذي ظهر على منصة الماستر وهو رقم الاتصال بين المنصتين .
- اضغط زر Start .
هذا كل شيء وسيتم تبادل المتحولات العامة من الماستر إلى الكلاينت بشكل لحظي .
في الكود طريقة مبتكرة جدا للاتصال وتبادل البيانات ... يمكن استخدامها برمجيا بشكل آخر وليس شرطا بالطريقة التي أرفقتها في هذا الموضوع .
والحقوق هي للجميع من تعديل واستفادة وتطوير .
أرجو من الله سبحانه التوفيق للجميع .
- 05-02-2016, 11:33 AM #2
جزاك الله خيرا أخي وضاح و ان شاء الله يستفيد منه الاخوة المبرمجين
- 05-02-2016, 02:48 PM #3
السلام عليكم ورحمة الله وبركاته ..
جزاك الله خيرا و سلمت يمناك م وضاح ..
تحياتى ..
د / أحمد سميــــــــر
- 05-02-2016, 10:35 PM #4
اسال الله ان ينفع بك وان ينفع بالكود الجديد
وجزاك الله خيرعنا جميعا
- 05-02-2016, 10:36 PM #5
اسال الله ان ينفع بك وان ينفع بالكود الجديد
وجزاك الله خيرعنى جميعا
- 05-02-2016, 11:50 PM #6
ماشاء الله هذا هو الفكر خارج الصندوق
مجهود تشكر عليه ومن حسن الى احسن
- 06-02-2016, 03:20 AM #7
وعليكم السلام ورحمة الله وبركاته
بعد سكربت اغلاق الصفقات https://forum.arabictrader.com/t235050.html
فأنت عندي >>>> أخطر من مشى على ظهر ... الفوركس
حبيبي ..
يمكن دمج الماستر مع الكلاينت في سكربت واحد .. لتتم عملية تبادل كاملة
------
هل يكون في هذا حل لمشكلة بطئ التنفيذ في المنصة بسبب المؤشرات الكثيرة فيها
فتكون منصة للقراءة فقط
والأخرى للتنفيذ فقط ؟؟
أم أن فاصل نقل البيانات بين منصتين .. قد يكون اكبر من الفاصل بين القراءة والتنفيذ في نفس المنصة ؟؟
-----
همسة : لم يتم نقل اي بيانات عندي >> ولم اتمكن من ارفاق صورة بسبب عطل في المنتدىآخر تعديل بواسطة أبو نـاصر ، 06-02-2016 الساعة 03:42 AM
- 06-02-2016, 03:54 AM #8
- 06-02-2016, 06:30 AM #9
فكرة جيدة
احب ان اضيف بعض الملاحظات والتطويرات
المتغيرات العامة لا تسمح بتخزين نصوص ،، بل ارقام فقط ونحن نحتاج الى تبادل معلومات نصية
والكتابة الدائمة كل زمن قليل الى المتغيرات العامة هي كتابة دائمة الى الهارد وهذا قد يضر به من كثرة الكتابة اليه (لان المتغيرات العامة تخزن على الهارد).
والحل هو
عمل مصفوفتين نصيتين في برنامج الكلاينت (مستقبل المعلومات)
واحدة تخزن أسماء المتغيرات
والثانية تخزن قيم المتغيرات
وواحدة ثالثة لزمن استقبال المعلومة (يستخدم لحذف المعلومة بعد مرور زمن معين على استقبالها منعا لتكدس المعلومات)
وعندما يستقبل برنامج الكلاينت المعلومات يبحث داخل مصفوفة الأسماء الى ان يجد اسم المتغير ويحدث معلومة قيمه المتغير لهذا الاسم او ينشأ الاسم اذا كان جديد
وبالتالي اصبحنا نتبادل معلومات نصية وليست رقمية فقط ونستخدم ذاكرة رام وليس الهارد
- 06-02-2016, 07:04 AM #10
- 06-02-2016, 07:16 AM #11
- 06-02-2016, 10:22 AM #12
ألف شكر لجميع الإخوة المشاركين ....
شكرا لك أخي أبو ناصر على كلماتك الطيبة ...
بالنسبة للدمج ... أنت قل لي كيف سيكون برأيك .
بالنسبة لاقتراحك كيفية توزيع العمل بين المنصات فهو جميل ... وكما قلت هذا الكود مجرد فكرة .. أنت تطوعها كما تريد .
وبالنسبة للسرعة فأنت تستطيع التحكم بسرعة التبادل من خلال خاصية msSleep الموجودة بكل سكريبت على حدة ... وهي قيمة زمن التحديث بالمللي ثانية .
مشكلة عدم النقل قد تكون بسبب عدم السماح باستخدام DLL ...
أو أن المعلومات تم نقلها ولكن الميتاتريدر لا يحدثها على النافذة مباشرة ... حاول إغلاق النافذة ثم فتحها من جديد .
- 06-02-2016, 10:38 AM #13
أهلا بالمبرمج الذكي ريمون ... الذي أحب النقاش معه .
صحيح أن المتغيرات العامة تخزن على الهارد ديسك ... ولكن الميتاتريدر يتعامل معها طول ما هو شغال من خلال الذاكرة فقط ... أي أنه لا يقرأها من الهارد إلا عند التشغيل أول مرة ولا يكتبها على الهارد إلا عند الإغلاق فقط ...
أو من خلال تنفيذ الوظيفة GlobalVariablesFlush التي تجبره على كتابتها على الهارد في حال أراد المبرمج ذلك .
لذلك فلا داعي للخوف من كثرة قرائتها أو كتابتها من خلال السكريبت ... ولا داعي أيضا لمعالجتها كثيرا ... هل تغيرت أم لا .. فالهدف هنا هو السرعة ..
بالنسبة لتبادل المعلومات النصية فهي فكرة مختلفة عن الهدف هنا ...
لأن هدفنا من خلال هذا السكريبت هو مشاركة المتحولات العامة بين المنصات ... مع الحفاظ على مزايا هذه المتحولات العامة كما هي ... دون تغيير .. بحيث يستطيع المبرمجين بناء برامجهم بنفس المفهوم تماما .
- 06-02-2016, 10:43 AM #14
نعم أخي هذه التقنية هي أسرع تقنية لتبادل المعلومات البسيطة بين البرامج وأنا أستخدمها بكثرة ... وخصوصا بين برامج لا تسمح أصلا لي بأخذ معلومات منها ... فأتحايل عليها بهذه الطريقة .
بالنسبة لفكرتك عن النافذة باسم فريد ... فخذ هذه الفكرة التي أطبقها من فترة طويلة ...
لا داعي أصلا لهذه النافذة لكي يعرف البرنامج رقم الاتصال آليا ... وسوف أذكره لاحقا ... بعد أن تفكر فيه قليلا ...
- 06-02-2016, 10:55 AM #15