Monday 15 January 2018

الفوركس زمق


زيرومق الاتصالات غير المتزامنة - مكتبة ميتاترادر ​​4.
هذه هي ارتباطات جزئية لمكتبة زيرومق جنبا إلى جنب مع تجريبي من مقبس تكب زيرومق. إذا كان أي شخص يجعل الروابط أكثر اكتمالا يرجى حصة! أنا قد أحتاج إذا كان كل من الميزات. وشملت أيضا نسخة النبيذ لينكس.
ومثل. Ø مكتبة المقبس الذي يعمل كإطار التزامن.
Ø يحمل رسائل عبر إنبروك، إيبك، تكب، والبث المتعدد.
Ø ربط N-تو-N عبر فانوت، بوبسوب، خط أنابيب، طلب الرد.
Ø سريع بما فيه الكفاية للمنتجات المتجمعة والحوسبة الفائقة.
Ø أسينتش I / O لتحجيم متعددة الرسائل تمرير تطبيقات.
Ø مجتمع مفتوح ومفتوح المصدر.
Ø 20+ اللغات بما في ذلك C، C ++، جافا،، بيثون.
Ø معظم أنظمة التشغيل بما في ذلك لينكس، ويندوز، أوس X.
Ø لغبل البرمجيات الحرة مع الدعم التجاري الكامل. & كوت؛
وبسيطة جدا للاستخدام. لاحظ أنه لا يمكن الاتصال تلقائيا إلى مأخذ الخام، ونحن الاتصال زيرومق إلى زيرومق هنا. على الرغم من أنني أعتقد أن هناك دعم لإضافة مآخذ الخام في شبكة باستخدام zeromq_poll، على الرغم من أنني لم تلزم حتى الآن.
فيرسيون 2: ليبس بريكومبيلد للنوافذ و لينوكس x86 32 بت وأضاف (باستخدام زيرومق الإصدار 2.0.10). وأضاف كماك بناء البرنامج النصي للنوافذ. تحديث البرنامج النصي زيرومق بحيث يستخدم ميناء 127.0.0.1، بدلا من "لوكالهوست" الذي لا يعمل. والأهم من ذلك إصلاح خلل الذاكرة المشتركة بين mql4 ومكتبة زيرومق - في الأساس نحن الآن نسخ السلاسل المرسلة إلى مكتبة المجمع لدينا ونسخ سلاسل جديدة عندما نطلب البيانات من رسالة. لاحظ أنه لا يوجد فحص ما إذا كان مالوك إرجاع نول في نموذج التعليمات البرمجية، وربما يجب أن يتم تضمينها أيضا لحالات نادرة عندما لا تتوفر ذاكرة كافية؟ لذلك نحن لا تحطم ميتاتريدر من خلال محاولة لتمرير في مؤشر فارغة؟ سأختبر هذا قريبا ..
فيرسيون 3: بوب / سوب، مولتبارت سيند (نو ريسيف)، الاقتراع على مأخذ واحد، لا أكثر باستخدام الرسائل الخام (تلقائيا إنشاء / حذف). وأضاف الكوماندوز والحانة / المثال الفرعي، تحديث مثال آخر. ملاحظة: أنا لا أعرف كيفية تدمير بأمان كائن الاستطلاع، حاولت الحرة (بتر) وتعطل ميتاتريدر. إذا كان أي شخص يمكن أن تساعد هنا.

زيرومق & # 8211؛ كيفية واجهة بيثون / R مع ميتاتريدر 4.
زيرومق & # 8211؛ الرسائل الموزعة.
في هذا المنصب، نقدم تقنية تستخدم زيرومق (المصدر المفتوح، مكتبة التراسل غير المتزامن وإطار التزامن) لبناء الأساسية & # 8211؛ ولكن بسهولة الموسعة & # 8211؛ عالية الأداء بين لغات البرمجة الخارجية (غير مقل) و ميتاترادر ​​4.
أسباب كتابة هذه المشاركة:
عدم وجود أدبيات شاملة ومتاحة للجمهور حول هذا الموضوع على الويب. اعتمد التجار تقليديا على الحلول القائمة على وينسوك / وينابي التي غالبا ما تتطلب مراجعة مع كل من ميكروسوفت ™ و ميتاكوتس ™ التحديثات. بدائل ل زيرومق تشمل أنابيب اسمه، والنهج حيث وظيفة تعتمد على نظام الملفات يشكل الجسر بين ميتاترادر ​​واللغات الخارجية.
انقر هنا لمشاهدة تسجيلات الويبينار.
في هذا بلوق وظيفة، ونحن وضع الأساس لنظام التداول الموزعة التي سوف:
تتكون من إستراتيجية تداول واحدة أو أكثر تم تطويرها خارج ميتاتريدر 4 (غير مقل)، استخدم ميتاترادر ​​4 للحصول على بيانات السوق، وتنفيذ وإدارة التجارة، ودعم استراتيجيات متعددة غير مقل التواصل مع ميتاتريدر 4 في وقت واحد، النظر في كل استراتيجية التداول باعتبارها مستقلة & # 8220؛ العميل & # 8221 ؛، النظر في ميتاتريدر 4 كما & # 8220؛ الخادم & # 8221؛، والمتوسطة إلى السوق، السماح لكل من الخادم والعملاء على التواصل مع بعضها البعض بناء على الطلب.
إنفوغرافيك: البنية الأساسية للتجارة الموزعة زيرومق (مع ميتاترادر ​​4)
لماذا زيرومق؟
تمكن المبرمجين من توصيل أي تعليمات برمجية بأي رمز آخر، بعدة طرق. يلغي اعتماد مستخدم ميتاترادر ​​على التكنولوجيا التي تدعمها ميتاتريدر فقط (الميزات والمؤشرات والبنية اللغوية والمكتبات وغيرها) يمكن للمتداولين وضع مؤشرات واستراتيجيات في C / C # / C ++ و بيثون و R و جافا (على سبيل المثال لا الحصر)، و نشر في السوق عبر ميتاترادر ​​4. الاستفادة من أدوات التعلم آلة في بيثون و R لتحليل البيانات المعقدة وتطوير الاستراتيجية، في حين التواصل مع ميتاتريدر 4 لتنفيذ التجارة والإدارة. زيرومق يمكن أن تستخدم طبقة نقل عالية الأداء في متطورة، ونظم التداول الموزعة خلاف ذلك من الصعب تنفيذها في مقل. يمكن بناء مكونات استراتيجية مختلفة في لغات مختلفة إذا لزم الأمر، والتحدث بسلاسة مع بعضها البعض على بروتوكول تكب، في العملية، والبروتوكولات بين العملية أو الإرسال المتعدد. أنماط الاتصال متعددة وعملية قطع الاتصال.
زيرومق: دعم لغات البرمجة.
على الرغم من أننا نركز على مقل التواصل مع بيثون & أمب؛ R في هذا المنصب، يمكن تنفيذ العملية الأساسية الموصوفة هنا بسهولة في اللغات الأخرى المدعومة من زيرومك.
تتوفر قائمة شاملة من الروابط لغة زيرومك هنا:
من هو الآخر يستخدم زيرومق؟
أت & أمب؛ T، سيسكو، إي، لوس ألاموس مختبرات، ناسا، ويتا الرقمية، زينغا، سبوتيفي، سامسونج للإلكترونيات، مايكروسوفت، سيرن ومختبرات داروينكس.
زيرومق أيضا القوى لا يقل عن 5 داروينز على داروين إكسهانج، حيث كتب استراتيجيات التداول الأساسية في C ++، بيثون و R.
التحكم في تدفق التخطيط.
ليس المقصود هذا المنصب ليكون تعليمي مفصل على زيرومق.
ومع ذلك، لا يزال من المهم أن نفهم بعض الأشياء حول زيرومك التي تجعلها مناسبة بشكل خاص لمهمة ربط لغات البرمجة الخارجية مثل بيثون و R إلى ميتاتريدر 4.
وهو يدعم تكب، بين العملية، في العملية، بم و إبغم تمكين الشبكات متعددة الإرسال. سنستخدم نوع النقل تكب للتنفيذ في هذه المشاركة. زيرومق تمكن الخوادم والعملاء للاتصال "لبعضها البعض" عند الطلب، مفيدة بشكل خاص لتصميم البنية التحتية التجارية الموزعة. بالإضافة إلى دعم الاتصالات غير المتزامنة وعملية فصل، زيرومق يدعم العديد من أنماط الاتصال التي تسمح نقل البيانات على مستوى أعلى، وتحرير المبرمجين للتركيز أكثر على منطق نقل بدلا من آليات منخفضة المستوى. وتشمل هذه الأنماط: طلب (ريق) / الرد (ريب)، نشر (بوب) / الاشتراك (سوب) ودفع (بوش) / سحب (سحب).
للتنفيذ في هذا بلوق وظيفة، سوف نستخدم ريق / ريب و بوش / سحب أنماط الاتصال. ميتاترادر ​​4 سيكون لدينا & # 8220؛ سيرفر & # 8221؛، وسوف تكون استراتيجيات التداول & # 8220؛ عملاء & # 8221 ؛.
يرجى ملاحظة أن هذا (MT4 = الخادم، استراتيجية = العميل) ليست مست & # 8211؛ سوف تحتاج إلى أن تقرر على أي مراقبة تدفق يناسب احتياجاتك الخاصة أفضل.
على سبيل المثال، يمكنك تعيين جهاز مستقل عن كل من إستراتيجية التداول وكذلك ميتاتريدر 4، كخادمك، ولديك إستراتيجية و MT4 على حد سواء. هناك عدد من الطرق التي يمكنك من خلالها تحقيق الهدف النهائي. والتخطيط بعناية التحكم في التدفق سيؤدي إلى وظيفة فعالة.
طلب (ريق) / رد (ريب) نمط.
سيقوم الخادم (ميتاتريدر 4 إي) بتوظيف مقبس تكب من النوع ريب، لتلقي الطلبات وإرسال الردود. يجب أن يكون مقبس ريب دائما زوج من المكالمات: أولا، تلقي، تليها إرسال.
سيقوم العميل (استراتيجية التداول، على سبيل المثال في بيثون) بتوظيف مقبس تكب من النوع ريق، لإرسال الطلبات وتلقي الردود. يجب أن يكون مقبس ريق دائما زوج من المكالمات أيضا: أولا، إرسال، تليها تلقي.
ومن أجل هذا التنفيذ، سوف يتيح نموذج ريق / ريب لزبائننا إرسال الأوامر إلى خادم ميتاتريدر 4 والحصول على إشعارات بالاستلام (على سبيل المثال، الصفقات المفتوحة / تعديل / إغلاق الصفقات، الحصول على أسعار الفائدة / التسعير، الحصول على الأسعار التاريخية، وما إلى ذلك)
دفع (بوش) / سحب (سحب) نمط.
سيقوم الخادم (ميتاتريدر 4 إي) أيضا بتوظيف مقبس بوش الثاني، لإرسال معلومات إضافية إلى العملاء (استراتيجيات التداول). هذا هو مأخذ اتجاه واحد، وسوف يكون الخادم قادرا على إرسال البيانات إلى هذا المقبس فقط، دون أن تكون قادرة على الحصول على أي شيء مرة أخرى من خلال نفس مأخذ.
سيقوم العميل (استراتيجية التداول) أيضا بتوظيف مأخذ توصيل ثاني، للحصول على معلومات إضافية من الخادم. هذا هو أيضا مأخذ في اتجاه واحد، والعميل سوف تكون قادرة على الحصول على البيانات من هذا المقبس فقط، دون أن تكون قادرة على إرسال أي شيء من خلال نفس المقبس.
نمط بوش / بول تمكن الخوادم والعملاء لتبادل البيانات مع بعضها البعض بناء على الطلب، ولكن في اتجاه واحد دون توقع رد. وهذا بالطبع يمكن تبديله لنمط ريق / ريب آخر، اعتمادا على التطبيق الخاص بك & # 8217؛ s متطلبات التحكم في التدفق.
وباختصار، لتنفيذ هذا المنصب الأساسي:
سوف خادم توظيف اثنين من مآخذ، واحد ريب ودفع واحد. كل عميل سوف توظف اثنين من مآخذ، واحد ريق وسحب واحد.
إنفوغرافيك: ماذا تبدو خطة التحكم في التدفق هذه عمليا.
ميتاترادر ​​4 مستشار خبير & # 8211؛ المكونات.
كما هو موضح في إنفوغرافيك أعلاه، فإن MT4 إي بمثابة خادم زيرومك تمكين، مع ثلاث وحدات رئيسية هي:
مساج راوتر & # 8211؛ هذا يسمح إي لتلقي الأوامر وإرسال الإشعارات مرة أخرى إلى ربط العملاء (استراتيجيات التداول) من خلال مقبس ريب. يمرر الموجه جميع الرسائل إلى محلل. ملاحظة: لهذا المثال، لا يعمل الموجه غرضا كبيرا، ولكن من الممارسة الجيدة أن يكون هذا الوسيط حيث تتصل عدة استراتيجيات بالخادم (MT4) وقد تحتاج بعض الإجراءات المسبقة التحليل إلى إجراء. مساج بارسر & # 8211؛ يتم تحليل الرسائل التي تتلقاها هذه الوحدة إلى إجراءات للوحدة التالية (مترجم شفهي و إيكسيكوتور). إنتربريتر & أمب؛ إكسكوتور & # 8211؛ هذه الوحدة حرفيا & # 8220؛ يفسر & # 8221؛ وتحلیل الرسائل وتنفیذ الإجراءات المطلوبة وفقا لذلك. على سبيل المثال، إذا كان العميل يطلب بيانات السوق، فإن الوحدة النمطية تجمعه من دب ميتاتريدر 4 التاريخ ويرسله إلى العميل عبر مقبس بوش. وبدلا من ذلك، إذا كان العميل يطلب شراء عملية شراء أو بيع على سبيل المثال. ور / أوسد، فإنه يرسل التجارة إلى السوق وإشعار النجاح / الفشل / تذكرة-معلومات للعميل عن طريق المقبس بوش.
متطلبات التنفيذ.
زيرومق & # 8211؛ MQL4 بيندينغز - & غ؛ تحميل وتثبيت الملفات المطلوبة كما هو موضح هنا: جيثب / دينغماوتو / مغل-زمق لبيثون - & غ؛ & # 8220؛ & # 8221 pyzmq. مكتبة ل R - & غ؛ & # 8220؛ & # 8221 rzmq. مكتبة.
عينة من الرموز.
لإعطائك السبق، قمنا بنشر مستشار خبير ميتاتريدر 4 وظيفي مع التنفيذ الكامل الذي نوقش في هذه المشاركة بلوق.
رمز عينة مقل المقدمة هو الموسعة تماما، ويمكن استخدامها كقالب في جهودكم.
وتظهر عينات بيثون و R كيفية تنفيذ أنماط الاتصالات. انها بسيطة إلى حد ما لدمج هذا الرمز في استراتيجيات التداول القائمة بيثون / R الخاصة بك.
ويبينار تسجيل: كيفية التفاعل بيثون / R استراتيجيات التداول مع ميتاترادر ​​4.
تصف هذه الوظيفة كيفية إعداد بيئة علمية لبيانات داروين R & أمب؛ D. وسواء أكنت تبحث عن عالم البيانات أو كوانت أو ترادر ​​أو إنفستور أو باحث أو ديفيلوبر أو مجرد شخص حرص على وضع فئة أصول داروين تحت المجهر العلمي، فإن محتويات هذا المنصب يجب أن تعطيك بداية سليمة. الأدوات والمكتبات ومجموعات البيانات المشار إليها هنا [& هيليب؛]
في هذا المنصب، نحن تصف الغرض والتكوين والتكافؤ والمنطق الحسابي وبناء مؤشر العملة لكل من العملات الرئيسية الثماني. وتشمل هذه: ور & # 8211؛ اليورو أوسد & # 8211؛ الدولار الأمريكي غبب & # 8211؛ الجنيه البريطاني جبي & # 8211؛ ين ياباني أود & # 8211؛ الدولار الأسترالي نزد & # 8211؛ دولار نيوزيلندي تشف & # 8211؛ فرنك سويسري كاد [& هيليب؛]
يقدم هذا المنصب عددا من أفضل الممارسات لاستعراض استراتيجيات التداول في اختبار إستراتيجية ميتاترادر ​​4. مشاهدة تسجيل الويبينار بالنقر هنا. إن محاكاة الأداء التاريخي للاستراتيجية بشكل صحيح، يزيد من احتمال تعميمه بشكل عام على بيانات السوق غير المرئية في المستقبل. على هذا النحو، فإنه من المهم أن يتم إجراء جميع باكتستينغ بقوة، حذرا [& هيليب؛]
في آخر وظيفتين، لفق وآلة التعلم للتجار الخوارزمية - الجزء 1، و لفق والتعلم آلة للتجار الخوارزمية - الجزء 2، أثبتنا كيفية استخدام: الخطية ناقلات التوليف اختبار الترابط .. لتحديد أهمية / أهمية و العلاقة بين معلمات الاستراتيجية على التوالي. وهناك تقنية أخرى يمكننا استخدامها لتقدير [& هيليب؛]

فوريكس زمق
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية استخدام زيرومق لإرسال أسعار فوريكس من محطة ميتاتريدر & أمب؛ استخدام زيرومق لتسجيل الدخول في خادم نوديجس؟
ملف نوديجس / إكسبريس server. js:
ماذا أحتاج إلى القيام به من أجل إرسال أسعار فوريكس إلى تكب: //127.0.0.1: 3000 من محطة ميتاترادر، التي تعمل محليا بالتوازي مع تطبيق نوديجس؟
أساسا أريد أن تنبعث منها باستخدام socket. io للعملاء.
في خبرائكم، أعتقد أن شيئا من هذا القبيل سيعمل. لم تحاول ذلك.

فوريكس زمق
سحب طلبات 0.
تاريخ جيثب اليوم.
جيثب هي موطن لأكثر من 20 مليون مطورين يعملون معا لاستضافة ومراجعة التعليمات البرمجية، وإدارة المشاريع، وبناء البرمجيات معا.
استنساخ مع هتبس.
استخدام جيت أو الخروج مع سفن باستخدام ورل على شبكة الإنترنت.
زمق ملزمة ل لغة مقل (كلا 32 بت MT4 و 64 بت MT5)
هذا هو ملزمة كاملة لمكتبة زيرومق للغة MQL4 / 5 التي تقدمها MetaTrader4 / 5.
التجار الذين لديهم قدرات البرمجة يريدون دائما حل الرسائل مثل زيرومق، بسيطة وقوية، أفضل بكثير من خدعة بايب كما اقترح من قبل المقالات الرسمية. ومع ذلك، كانت الروابط ل مقل إما قديمة أو غير كاملة (معظمها مشاريع لعبة ويتم تنفيذ الميزات الأساسية فقط). ويستند هذا الربط على أحدث إصدار 4.2 من المكتبة، ويوفر جميع الوظائف كما هو محدد في وثائق أبي.
هذا الربط يحاول أن يظل متوافقا بين MQL4 / 5. يمكن للمستخدمين من كلا الإصدارين استخدام هذا الربط، مع مجموعة واحدة من الرؤوس. MQL4 و MQL5 هي في الأساس نفسه في أنها يتم دمجها في الإصدارات الأخيرة. الفرق في بيئة التشغيل (ميتاتريدر 5 هو 64 بت بشكل افتراضي، في حين أن MetaTrader4 هو 32BIT). نظام التداول هو أيضا مختلفة، ولكن لا يهم هذا الملزم.
يحتوي هذا الربط على ثلاث مجموعات من الملفات:
الارتباط نفسه في الدليل تضمين / زمق. لاحظ أن هناك دليل مقل في تضمين، الذي هو جزء من mql4-ليب. السابق Common. mqh و GlobalHandle. mqh هي في الواقع من هذه المكتبة. في الإصدار 1.4، وهذا يصبح مرجعا مباشرا، مع محتوى mql4-ليب نسخها هنا حرفيا. فمن المستحسن تثبيت mql4-ليب الكامل، لأنه يحتوي على الكثير من الميزات الأخرى. ولكن بالنسبة لأولئك الذين يرغبون في استخدام مغل-زمق وحده، لا بأس لنشر سوى مجموعة فرعية صغيرة المدرجة هنا.
اختبار البرامج النصية وأمثلة دليل زمق في دليل البرامج النصية. ملفات سكريبت هي mq4 بشكل افتراضي، ولكن يمكنك تغيير الإضافة إلى mq5 لاستخدامها في MetaTrader5.
يتم توفير دلز بريكومبيلد من كل من 64BIT (مكتبة / MT5) و 32 بت (مكتبة / MT4) زيرومق (4.2.0) و ليبسوديوم (1.0.11). نسخ دلز المقابلة إلى مجلد المكتبة من محطة ميتاتريدر الخاص بك. إذا كنت تستخدم MT5 32BIT، استخدم الإصدار 32BIT من المكتبة / MT4. تتطلب دلز أن يكون لديك أحدث وقت تشغيل فيسوال C ++ (2018).
لاحظ أنه إذا كنت تستخدم MTB 32BIT، تحتاج إلى التعليق خارج تعريف ماكرو __X64__ في الجزء العلوي من تضمين / مقل / لانغ / Native. mqh. أفترض MT5 هو 64 بت، نظرا لأنها ليست وسيلة للكشف عن 32 بت من وحدات الماكرو الأصلية، وتحديد قيم مؤشر ذات الصلة ماكرو مثل هذا مطلوب.
لاحظ أن هذه دلز يتم تجميعها من مصادر رسمية، دون أي تعديل. يمكنك تجميع الخاصة بك إذا كنت لا تثق هذه الثنائيات. يتم نسخ libsodium. dll من الإصدار الثنائي الرسمي. إذا كنت ترغب في دعم آليات أمنية أخرى من منحنى، أو كنت ترغب في استخدام وسائل النقل مثل أوبنبغم، تحتاج إلى ترجمة دل الخاص بك.
ملاحظة لمستخدمي واين، إذا لم تعمل الثنائيات الافتراضية لك، يمكنك تجربة الثنائيات في الدليل ليبراري / VC2018. الثنائيات الجديدة هي أحدث قليلا (ليبزمق 4.2.2 و ليبسوديوم 1.0.36). يتم تجميعها مع فيسوال C ++ 2018 إكسبريس SP1 (باستخدام ويندوز سك 7.1)، ويفترض أن تكون أكثر توافقا مع واين من الإصدار VS2018. أنها تعتمد على VC2018 وقت التشغيل (msvcr100.dll و msvcp100.dll). لقد اختبرت بالفعل القديمة و دلز جديدة على واين 2.0.3 (دبيان جيسي بلايونلينوكس 32bit مع MetaTrader4 بناء 1090) وكلاهما يعمل. لذلك ليس غوارنتيد ولكن من الجميل أن يكون بديلا. و libzmq. dll الجديد يعمل فقط على ويندوز فيستا أو أحدث لأنني تحولت على خيار استخدام الاقتراع. هذا يحسن الأداء قليلا. منذ MetaTrader4 رسميا لم يعد يدعم ويندوز زب، أفترض أن هذا لن يكون مشكلة.
سلاسل مقل هي سلاسل Win32 ونيكود (أساسا 2 بايت أوتف-16). في هذا الربط يتم تحويل جميع السلاسل إلى سلاسل أوتف-8 قبل إرسالها إلى طبقة دلل. و زمكمسغ يدعم منشئ من سلاسل مقل، الافتراضي هو لا إنهاء إنهاء.
في الدليل الرسمي:
يجب إنشاء واستخدام سياق واحد بالضبط في العملية الخاصة بك. من الناحية الفنية، السياق هو الحاوية لجميع المقابس في عملية واحدة، ويعمل بمثابة نقل لمقابس إنبروك، والتي هي أسرع وسيلة لربط المواضيع في عملية واحدة. إذا كان وقت التشغيل عملية اثنين من سياقات، هذه هي مثل مثيلات زيرومق منفصلة.
في ميتاترادر، كل سيناريو وخبير أدفسيور لديه موضوع خاص به، ولكن كلهم ​​يشتركون في عملية، وهذا هو المحطة الطرفية. لذلك ينصح باستخدام سياق عالمي واحد على كل برامج مقل. يتم استخدام المعلمة المشتركة للسياق لتلافي خلق السياق وتدميره. فمن الأفضل تسمية عالميا، وبطريقة لا يعترف بها بسهولة من قبل البشر، على سبيل المثال: __3kewducdxhkd__.
يمكنك العثور على البرنامج النصي اختبار بسيط في مخطوطات / اختبار، ويمكنك أن تجد أمثلة من الدليل الرسمي في البرامج النصية / زيرومغيديكسيمبلز. أعتزم ترجمة كل الأمثلة إلى هذا الملزم، ولكن الآن فقط يتم توفير المثال مرحبا العالم. وسأضيف هذه الأمثلة تدريجيا. بالطبع التشكيل هذا ملزمة إذا كنت مهتما ومرحبا بكم في إرسال طلبات سحب.
هنا عينة من HelloWorldServer. mq4:
اكتب المزيد من الاختبارات. إضافة المزيد من الأمثلة من دليل زمق الرسمي. المزيد من الوثائق أبي عالية المستوى للنماذج الشائعة.
2017-10-28: صدر 1.5: هام: تغيير أبي ل Socket. send. إزالة بوليتم دوبليكات أبي (# 11)؛ إصلاح تحذير المترجم (# 10) وتجميع الفشل (# 12)؛ إضافة رتيق مثال من دليل زمق الفصل 3. 2017-08-18: صدر 1.4: إصلاح زمكمسغ سيتداتا علة؛ تغيير الترخيص إلى أباتشي 2.0؛ إنلكود mql4-ليب التبعيات مباشرة. 2017-07-18: صدر 1.3: ريفاكتوريد دعم الاستطلاع؛ أضف الفصل الثاني أمثلة من دليل زمق الرسمي. 2017-06-08: صدر 1.2: إصلاح غلوبهاندل علة؛ إضافة طريقة إعادة بناء إلى زمكمسغ. استكمال جميع الأمثلة في دليل زمق الفصل 1. 2017-05-26: صدر 1.1: إضافة القدرة على مشاركة سياق زمق عالميا في محطة 2018-12-27: صدر 1.0.
&نسخ؛ 2017 جيثب، Inc. شروط الخصوصية تعليمات حالة الأمان.
لا يمكنك تنفيذ هذا الإجراء في الوقت الحالي.
لقد سجلت الدخول باستخدام علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة. لقد سجلت الخروج في علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة.

zeromq.
تصف هذه الوثيقة خوارزمية مطابقة توفر كل الوظائف المطلوبة لمطابقة الموضوع ومعظم الوظائف المطلوبة للتوجيه القائم على المحتوى. كتبت هذه الوثيقة في الأصل بيتر هينتجنز من شركة إماتيكس كجزء من مواصفات أوبنامق والتقنيات الموصوفة هنا تشكل أساس محرك مطابقة الموضوع أوبينامق. وفي وقت لاحق، تم تحديث الوثيقة لتغطي خوارزميات توجيه الموضوع المثلى ومسائل تصفية الرسائل.
مطابقة الرسائل إلى الطلبات هي عنق الزجاجة نموذجية في خادم الوسيطة موجه رسالة. الآلية القياسية هي & كوت؛ محدد & كوت ؛، عبارة شبيهة ب ​​سكل يتم تفسيرها لإعطاء نتيجة صحيحة / خاطئة. المحددات هي الأداة الأساسية ل & كوت؛ التوجيه المستند إلى المحتوى & كوت ؛. ونظرا لكمية كبيرة من الرسائل والطلبات، فإن تكلفة المنتقى تنمو باطراد. موضوع & كوت؛ الموضوع & كوت؛ آلية تستخدمها خوادم الوسيطة توفر خوارزمية مطابقة أسرع استنادا إلى نظام تسمية هرمي، ولكن هذا لا يزال بمثابة عنق الزجاجة في سيناريوهات عالية الحجم.
نحدد & كوت؛ الطلب & كوت؛ على أنها تتكون من واحد أو أكثر من & كوت؛ معايير & كوت ؛، ورسالة على أنها توفر حقل أو أكثر & كوت؛ حقول & كوت ؛. يحدد الطلب المعايير المطلوبة من حيث الحقول: على سبيل المثال، حقل له قيمة معينة أو مطابقة نمط معين.
تعتمد مطابقة المواضيع على الأنماط (على سبيل المثال & كوت؛ فوريكس. * & كوت؛) بينما يستند التوجيه المستند إلى المحتوى إلى قيم الحقول (& كوت؛ كيرنسي = أوسد أور غبب & كوت؛).
تقنية المطابقة الأكثر وضوحا هي مقارنة كل رسالة مع كل طلب. إذا كانت تكلفة هذه المقارنة هي C، فإن تكلفة مطابقة رسالة واحدة هي:
حيث R هو عدد الطلبات. وتتناسب تكلفة C مع تعقيد الطلب - أي متوسط ​​عدد المعايير لكل طلب. في سيناريو منخفض الحجم، R قد يكون 1-10. في سيناريو كبير الحجم قد يكون لدينا:
10،000 طلب نشط (R = 10،000) بتكلفة مطابقة 100 ميكروثانية (C = 100)
إعطاء تكلفة 10000 * 100 ميكروثانية لكل رسالة، أو 1 ثانية لكل رسالة.
يمكننا تحسين هذا من خلال ملاحظة أن العديد من الطلبات متطابقة. إذا افترضنا أن القيمة القصوى ل R ستكون حوالي 100، قد نخفض تكلفة كل رسالة إلى 0.01 ثانية لكل رسالة، مما يتيح لنا إنتاجية قصوى تصل إلى 100 رسالة في الثانية الواحدة.
هدفنا هو الحصول على تكلفة مطابقة أقل من 10 ميكروثانية لكل رسالة، لإنتاجية محتملة تصل إلى 100،000 رسائل في الثانية الواحدة.
تقنية نقطية مقلوب.
في 1980-1988، عمل ل لوكهيد، ليف سفالغارد و بو تفيدن بناء نظام مساعدة الدليل لشركة نيويورك الهاتف. ويتألف هذا النظام من 20 حاسوبا شبكيا يخدم محطات الطرفية لعام 2000، ويتناول أكثر من مليوني عملية بحث يوميا. في عام 1982 سفالغارد وتفيدن تكييف النظام لاستخدامها في البنتاغون (الدفاع الهاتف خدمة). هذا النظام لا يزال قيد التشغيل.
اخترع سفالغارد و تفيدن مفهوم & كوت؛ الصور النقطية المقلوبة & كوت؛ لتمكين المطابقة السريعة للطلبات مع الأسماء في الدليل.
وتستند تقنية الصورة النقطية المقلوب إلى هذه المبادئ:
نغير البيانات نادرا، ولكننا نبحث بشكل متكرر. عدد عمليات البحث المحتملة محدود ويمكن تمثيلها بمجموعة كبيرة ومتنافرة من العناصر مقابل المعايير، مع مجموعة واحدة في كل موضع حيث يطابق عنصر معايير و 0 في مكان آخر.
وتعمل تقنية الفهرسة على النحو التالي:
نحن نعدد كل عنصر للبحث من 0 صعودا. نحن نحلل كل عنصر لإعطاء مجموعة من & كوت؛ المعايير & كوت؛ الاسم والقيمة. نقوم بتخزين المعايير القياسية في جدول مفهرس بالاسم والقيمة. لكل معيار المعايير نقوم بتخزين صورة نقطية طويلة تمثل كل بند يطابق ذلك.
تقنية البحث تعمل على النحو التالي:
نحن نحلل طلب البحث لإعطاء مجموعة من اسم المعايير والقيمة. نحن نبحث عن كل المعايير توابل في الجدول، وإعطاء مجموعة من الصور النقطية. نحن و أور أو كل صورة نقطية لإعطاء صورة نقطية نتيجة نهائية. يمثل كل بتة واحدة في الصورة النقطية نتيجة عنصرا متطابقا.
لاحظ أن الصور النقطية يمكن أن تكون ضخمة، والتي تمثل الملايين من العناصر، وعادة ما تكون عالية الانضغاط. الكثير من الفن في استخدام الصور النقطية مقلوب يأتي من:
اشتقاق معايير دقيقة تموجات من العناصر وطلبات البحث. تقنيات ضغط دقيق على الصور النقطية متفرق كبيرة. نتائج البحث بعد التصفية لتجاهل الإيجابيات الكاذبة.
محركات البحث على شبكة الإنترنت اليوم تستخدم هذه التقنيات. نحن (هينتجنز وآخرون) وقد بنيت العديد من محركات البحث باستخدام هذه التقنيات (من ستار في عام 1990، إلى سمز @ في عام 2001).
تطبيق لمطابقة الرسالة.
وهكذا، فإن تقنية الصورة النقطية المقلوبة تعمل من خلال فهرسة مجموعة من العناصر القابلة للبحث بحيث يمكن حل طلب البحث بأقل عدد ممكن من العمليات.
وهي فعالة إذا وفقط إذا كانت مجموعة من عناصر للبحث مستقرة نسبيا فيما يتعلق بعدد طلبات البحث. وإلا فإن تكلفة إعادة الفهرسة مفرطة.
عندما نطبق تقنية الصورة النقطية المقلوبة على مطابقة الرسالة، قد يتم الخلط بيننا وبين أن الرسالة هي & كوت؛ عنصر قابل للبحث & كوت ؛. ويبدو هذا منطقيا إلا أن طلبات مطابقة الرسالة مستقرة نسبيا فيما يتعلق بالرسائل.
لذلك، يجب أن نقلب الأدوار بحيث:
العنصر & كوت؛ عنصر قابل للبحث & كوت؛ هو طلب المطابقة، الذي سنطلق عليه اسم & كوت؛ اشتراك & كوت؛ لأغراض المناقشة. و & كوت؛ طلب البحث & كوت؛ هي الرسالة.
عملية الفهرسة الآن تعمل على النحو التالي:
نحن نعدد كل طلب مباراة من 0 صعودا. نحن نحلل كل طلب مباراة لإعطاء مجموعة من المعايير المعالجات. نقوم بتخزين المعادلات القياسية في جدول مفهرس بالاسم والقيمة. بالنسبة إلى كل معيار من المعايير، نقوم بتخزين صورة نقطية طويلة تمثل كل طلب تطابق يطالب به.
تعمل عملية مطابقة الرسالة كما يلي:
نحن نحلل الرسالة لإعطاء مجموعة من المعايير. نحن ننظر كل تلبيس في الجدول، وإعطاء مجموعة من الصور النقطية. نحن تتراكم الصور النقطية لإعطاء صورة نقطية النتيجة النهائية. يمثل كل بتة واحدة في الصورة النقطية النتيجة اشتراكا متطابقا.
أمثلة عمل.
مثال مطابق للموضوع.
تخيل أن لدينا هذه المواضيع:
تخيل هذه الاشتراكات، حيث تتطابق * مع قسم اسم موضوع واحد.
عند فهرسة المباريات لكل اشتراك، نحصل على هذه الصور النقطية:
الآن دعونا ندرس بالتفصيل ما يحدث لسلسلة من الرسائل:
مثال مطابقة الحقل.
على سبيل المثال، سنسمح بالمطابقة على قيمة الحقل و / أو وجوده. أي أن الاشتراك يمكن أن يحدد قيمة دقيقة لحقل أو يطلب أن يكون الحقل موجودا.
تخيل هذه الاشتراكات:
عندما نقوم بفهرسة اسم الحقل / قيمة توبلز لكل اشتراك نحصل على هذه الصور النقطية:
الآن دعونا ندرس بالتفصيل ما يحدث لسلسلة من الرسائل:
الرسالة A: & كوت؛ كيرنسي = جبي، ماركيت = فوريكس، بطيئة & كوت؛
الرسالة ب: & كوت؛ كيرنسي = جبي، أورجنت & كوت؛
رسالة C: & كوت؛ ماركيت = فوريكس، كيرنسي = ور & كوت؛
لاحظ أن عدد النتائج هو:
صفر للاشتراكات التي لا تتطابق. 1 أو أكثر للاشتراكات التي تحتوي على معيار مطابقة واحد على الأقل (مطابقة أور منطقية). يساوي عدد المعايير عندما تتطابق جميع المعايير (مطابقة منطقية ومطابقة).
خوارزمية توجيه الموضوع الأمثل.
في حين أن التوجيه على الموضوعات كما هو موضح أعلاه سريع للغاية، فإنه يميل إلى استهلاك الكثير من الذاكرة في سيناريوهات تداول الأسهم الكبيرة (الملايين من المواضيع المتميزة، والآلاف من الاشتراكات). يقدم هذا القسم خوارزمية توجيه الموضوع الأمثل مع متطلبات الذاكرة المتواضعة.
أولا وقبل كل شيء، دعونا كسر الاشتراكات الفردية في الأجزاء المكونة لها. هناك جزء 1ST من هذا الموضوع، الجزء الثاني من الموضوع الخ يحدد أطول اشتراك العدد الأقصى من أجزاء ونحن في طريقنا أن تأخذ بعين الاعتبار. إذا كانت هناك رسالة تحتوي على مزيد من الأجزاء التي تم حساب العدد الأقصى الذي قمنا بحسابه، فمن الآمن افتراض أنها لا تتطابق مع أي اشتراك. يمكننا إسقاط مثل هذه الرسالة على الفور دون القيام بأي معالجة إضافية.
إذا لم يتجاوز الموضوع الحجم الأقصى، فسنطابق كل مكون فردي مع المكونات المقابلة للاشتراكات باستخدام تقنية الصورة النقطية المقلوبة الموضحة أعلاه.
لنفترض أن لدينا الاشتراكات التالية & كوت؛ تريد، forex. eur، فوريكس. * & كوت ؛. العدد الأقصى من المكونات هو 2:
صورة نقطية مقلوبة للمكون الأول:
الصورة النقطية المقلوبة للمكون الثاني:
لاحظ & كوت؛ نول & كوت؛ في كل صورة نقطية. ومثل. نول & كوت؛ يعني أن الشخص المعني ليس له مقومات مقابلة. على سبيل المثال، & كوت؛ التجارة & كوت؛ ليس له مكون ثان، وبالتالي يفترض أن يكون مساويا ل & كوت؛ نول & كوت ؛.
لاحظ أيضا & كوت؛ أخرى & كوت؛ صف. هذه طريقة للحد من عدد الصفوف في كل صورة نقطية لتتناسب مع عدد البدائل الممكنة للمكون كما تظهر في الاشتراكات. ليست هناك حاجة لإضافة صفوف جديدة للقيم التي لا تظهر في الاشتراكات. قل، الرسالة & كوت؛ forex. usd & كوت؛ يحتوي على المكون الثاني & كوت؛ أوسد & كوت؛، ومع ذلك، كما هو لم يرد في أي اشتراك نحن لسنا بحاجة إلى سطر منفصل في الصورة النقطية لذلك. سنقوم ببساطة التعامل معها كما & كوت؛ أخرى & كوت؛ القيمة.
خوارزمية مطابقة نفسها سهلة: كسر موضوع الرسالة في مكوناتها، والعثور على صف المقابلة في كل صورة نقطية مقلوب وأداء منطقي و على الصفوف المحددة. لاحظ أن هذا يعني أنه في معظم N الصفوف مجتمعة، N يجري العدد الأقصى من المكونات في أي اشتراك. هذا هو عدد قليل جدا، ويفترض أقل من 10.
بالإضافة إلى ذلك، ليس من الضروري دائما لإجراء اقتران منطقي على كافة الصفوف. بمجرد الحصول على صورة نقطية فارغة بعد معالجة زوجين من الصفوف، ليس هناك نقطة والقيام و لصفوف لاحقة - الموضوع لا يطابق أي اشتراك على أي حال.
في ما يلي بعض الأمثلة عن كيفية عمل المطابقة:
تحتوي الرسالة على & كوت؛ forex. eur & كوت؛ موضوع. الحصول على & كوت؛ فوريكس & كوت؛ صف من الصورة النقطية الأولى، & كوت؛ يورو & كوت؛ صف من الصورة النقطية المكونة الثانية وتنفيذ منطقي و على الصفوف:
الآن نفس الشيء لرسالة مع & كوت؛ forex. jpy & كوت؛ موضوع:
مثال آخر. هذه الرسالة الزمنية ذات موضوع واحد (& كوت؛ التجارة & كوت؛):
هناك أحد التحسينات الهامة التي لم يتم ذكرها حتى الآن. إذا كان موضوع الرسالة يحتوي على تسلسل من النول (على سبيل المثال & كوت؛ forex. null. null. null. null. null. null & كوت؛) فلا داع للقلق بشأن المكونات المطابقة للثانية وأي نول لاحق. في حالة & كوت؛ forex. null. null. null. null. null & كوت؛ الخوارزمية إلى و الصف من الصورة النقطية المكونة الأولى والصف من الصورة النقطية المكونة الثانية، ومع ذلك، فإنه يمكن تجاهل بأمان الصفوف للمكون الثالث إلى السادس. (ويترك دليل على صحة الأمثل كممارسة للقارئ.)
التحسين أعلاه هو أهمية خاصة في حالة شجرة الموضوع غير متوازن. على سبيل المثال إذا كانت معظم الموضوعات تتكون من ثلاثة مكونات، ومع ذلك، هناك موضوع واحد مع 100 المكونة، والاشتراك في هذا الموضوع يسبب الصور النقطية مقلوب أن يكون 100 الصفوف. وهكذا، دون أعلى الأمثل، كل مطابقة الرسالة يتطلب 100 النقطية الاقتران، في حين أن 99٪ من الحالات 3 الاقتران كافية لتنفيذ مطابقة.
التصفية مماثلة للمطابقة، والفرق الوحيد هو أن كنت لا ترغب في أي اشتراكات معينة تتطابق، بدلا ما كنت تريد أن تعرف ما إذا كان اشتراك واحد على الأقل هو مباريات.
التصفية مفيدة بشكل خاص في سيناريوهات البث المتعدد حيث يتم نقل جميع الرسائل عبر السلك وانها مسؤولية المتلقي لتصفية تلك التي لا تتطابق مع أي اشتراك محلي.
في حين يتم استخدام نفس خوارزمية الصورة النقطية مقلوب، فمن الممكن لتحسينه إلى أبعد من ذلك لحالة استخدام الترشيح.
مع تصفية نحن مهتمون أساسا في ما إذا كان هناك مجموعة واحدة على الأقل بت في الصورة النقطية الناتجة. وهكذا، إذا تبين لنا أن البتة الأولى هي 1، فلا داعي لتقييم البتات المتبقية. وبالتالي، يمكن للخوارزمية تقييم الاشتراكات الفردية من اليسار إلى اليمين والتوقف عندما تواجه الأولى التي تتطابق.
فكر في & كوت؛ forex. eur & كوت؛ مثال أعلاه:
لاحظ أنه لا يتم إجراء أند للاشتراك الثالث. على الرغم من أن هذا قد يبدو أن القليل من المساعدة، مع الصور النقطية الكبيرة تتكون من الآلاف من الاشتراكات فإنه يمكن توفير الكثير من المعالجة.
ومن الواضح أن القيام المنطقي وعلى أساس كل بت غير فعالة بشكل رهيب. في التنفيذ في العالم الحقيقي وينبغي أن يتم من اليسار إلى اليمين في دفعات تحتوي على 32 أو 64 اشتراكات، اعتمادا على عرض ناقل البيانات المعالج أو حتى دفعات من 128 أو أكثر مع تعليمات سيمد مخصصة.
أفكار البحث.
هناك عدة طرق لتسريع خوارزمية مطابقة أكثر من ذلك، وتداول المزيد من العمل للقيام على الاشتراك / إلغاء الاشتراك لمطابقة رسالة أسرع والتصفية.
وإحدى الإمكانيات هي خفض عدد الاشتراكات عن طريق تجميعها. في حالة استخدام التصفية، إذا كان هناك & كوت؛ فوركس. * & كوت؛ الاشتراك، ليست هناك حاجة ل & كوت؛ forex. eur & كوت؛ الاشتراك، لأن السابق هو مجموعة من هذا الأخير.
وثمة احتمال آخر هو نقل الاشتراكات التي نتوقع أن تتطابق مع معظم الرسائل على يسار الصورة النقطية مع ترك تلك التي لديها احتمال صغير فقط من النجاح على اليمين. In combination with left-to-right evaluation of logical conjunction in the filtering use case, we can get an algorithm that will in most cases succeed early on, hopefully after evaluating first few columns of the inverted bitmap.
There's even an obvious heuristic to determine whether a particular subscription is likely to match: The more wildcards (*) there are in the subscription the larger set of messages it is able to match and thus more likely it is that it'll succeed. That way, moving the subscriptions with large number of wildcards to the left while keeping those with no or little wildcards on the right is likely to give a very efficient algorithm.
استنتاج.
We believe that application of the above algorithms can give a system that will be able to match or filter a single message in the range of nanoseconds or couple of microseconds even it the case of large amount of different topics and subscriptions.
Comments: 13.
I ready somewhere among the pages/articles of zeromq that it uses a trie for filtering/matching messages when subscription is done using SUB socket.
The article here describes about topic matching and message filtering again , which method is actually used . Is this article only relevant to AMQP or is this even used in zero MQ , if it is indeed used in zero MQ then what is the trie matching/filtering about ? Could you elaborate more on the performance diffence , how/why is that filtering different than this , why not the most optimized filtering/matching everywhere.
The topic matching described here is very fast and flexible, can handle any kind of match, but does heavy work each time there's a new topic key, which is bad for low-latency systems. Tries are simpler and give more predictable performance.
Well even with trie I would assume you would have to update the trie because a new topic is added and each node of trie would contain a bitmap representing which queues the message should be forwarded to.
Could you explain how do you intend to use trie (for pub and sub filtering),?
You can read the code to see how the trie is used.
well , i do understand for the subscriber code , but could you throw some more details on pub side code.
In case of message matching what if number of matching criteria is say couple of them per subscription but message contains 10s of field / Value.
in this case most of the field/value will not be present in index table correct and will be a miss and time spent for no use ?
Usually then you separate the fields you want to match on (put them in a header) from the rest of the fields. If you really want to allow matching on _any_ field, you're going to have a less efficient process.
If there is a subscription like orange.#.yellow. How the bitmap can be created by using this?
If you read the explanation in the article it should be clear.
I mean during the implementation as we cannot predict the consitutents initially, when adding a new table for consitutent keeping track of the subscriptions which have # wildcards in the middle will make the implementation more complex. I am asking whether is there are any easy ways to implement this?
the article explains this ..
u build a table for all the criteria say sub1 is orange.#.yellow and sub2 is apple. custard.*
so sub1 bitmap will be 1100 and sub2 will be 0011.
and then for each message u create a bitmap.
0 0 0 0 ->its not 1100 so message doesnt match, also no matching fields.
0 0 1 0 ->its not 0011 so message doesnt match, but has one matching fields.
1 1 0 0 ->its 1100 so message matches, chk for order though.
How you did the performance test after adding this algorithm. I means what is the tool you used.
I just ran a single threaded test case which created subscriptions and then matched against random messages.
Written: 07 Aug 2007 10:19.
Revised: 17 Apr 2018 11:55.
If you found this page useful, please rate it up so others will find it.
Who's watching this page?
Web site design and content is copyright (c) 2017 iMatix Corporation. Contact us for professional support. Site content licensed under cc-by-sa 3.0 ØMQ is copyright (c) Copyright (c) 2007-2017 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ and ZEROMQ are trademarks of iMatix Corporation. Terms of Use — سياسة الخصوصية.

No comments:

Post a Comment