تمرير البيانات من عميل MT4 إلى آخر
الصفحة 1 من 589 123 ... الأخيرةالأخيرة
Results 1 to 10 of 41

Thread: تمرير البيانات من عميل MT4 إلى آخر

  1. #1
    هدفي هو نقل المعلومات من إجراء terminal.exe إلى إجراء مختلف ....

    لا أريد استخدام الملفات النصية بسبب التصادمات التي يمكن أن تحدث ....

    فكرتي الأولى كانت إنشاء ملف DLL مع مساحة ذاكرة مشتركة ، واستيراده إلى كل محطة MT4 .... اقرأ من EX4 واحد واكتب مع الآخر ...


    لأي شخص يستخدم ناسخة MT4 من Terranin ، فقد وجد حلاً للمشكلة .... لكن رده عبر PM كان معقدًا جدًا بالنسبة لي.

    مساعدة

  2. #2
    ستكون قادراً على إنشاء مساحة ذاكرة مشتركة مباشرة داخل DLL. هناك عدة طرق للحصول على DLLs التحدث إلى بعضها البعض. يعتمد الأمر حقًا على ما إذا كنت تريد كومس في اتجاهين أم لا ، وكم مرة يحتاجون إلى التحدث. تتضمن أسهل الطرق ما يلي: 1) فتح مآخذ داخل DLL للتحدث عبر TCP أو بروتوكول بديل. (من المحتمل أن تكون أسهل وتعمل إذا كانت برامج MT4 موجودة على أجهزة مختلفة على الشبكة المحلية أو عبر الشبكة) 2) هل سبق لك استخدام MT4 على DLL الذي ينشئ نافذة ”مساعدة” (مرئية أو غير مرئية) وتنفيذ رسائل WM_COPYDATA باستخدام SendMessage إما مباشرة من MT4 أو من DLL آخر. إذا كان ذلك يتجاوزك ، فيمكنك استخدام القرص لتمرير البيانات عندما لا تقوم بنقلها بشكل متكرر ، ستحتاج فقط إلى استخدام المستندات المساعدة كآلية إشارة. مرة أخرى ، يعتمد الأمر حقًا على الطريقة التي تحاول بها التواصل ولكن يجب أن يعمل ذلك داخل EA (وليس من الداخل). (ومع ذلك ، سيتعين عليك استخدام وظائف ملف Windows API بقدر ما أفهم أن MT4 لن يكتب أو يقرأ خارج بنية الدليل الخاصة به) يشتمل ”Datafile.txt” على بياناتك 'app1lock.txt' ... dummy lock document 'app2lock .txt. انتظر وتحقق مرة أخرى من النوم (1000) ؛/wait آخر عندما لا يوجد app2lock.txt قم بإنشاءتغييرقراءة'datafile.txt 'إشارة أخرى أننا سنحتاج إلى تحديثها في المرة القادمة من خلال حذف document'app1lock.txt' App2 ... إذا لم يكن app1lock.txt موجود قم بإنشاء ملف app2lock.txt سليب (1500) إذا كان app1lock.txt غير موجود إنشاءتبديلقراءة ”datafile.txt” إشارة أخرى للتشغيل التالي من خلال حذف document'app2lock.txt ”

  3. #3
    شكر. سوف أنظر إلى ما قمت به. لقد وجدت ذلك في بلدي:
    http://forums.devx.com/showthread.php?t=157293لسوء الحظ C ليس جناحي القوي.

  4. #4
    تطوير مصدر مشترك وفقًا لهذا الخيط سوف يعمل فقط ضمن إطار العمل بنفس مثيل العمليةالتطبيق ، وذلك على سبيل المثال إذا كان لديك مستوى أدنى (يستخدم ملف DLL) ويتم إرفاقه بالعديد من الرسوم البيانية بدقة نفس تطبيق MT4 ثم سيفتحون جميعهم مثيل DLL مع مقبض Hinstance لبرنامج MT4. سيكون لديهم القدرة على مشاركة الذاكرة ، حيث تم فتح كل مثيل من DLL بنفس مقبض Hinstance الخاص بتطبيق MT4 نفسه بالضبط. تحتاج إلى التحدث بين اثنين من تطبيقات MT4. يحتوي كل برنامج من برامج MT4 على مؤشر Hinstance الخاص به ، لذلك إذا فتحت DLL نفسه على تطبيقين مختلفين من تطبيقات Mt4 ، فسيكون لكل منهما جزء منفصل من الذاكرة ، وبالتالي لن يكون لديه القدرة على المشاركة.

  5. #5
    شكرا على الردود. يجب أن أقوم بإنشاء تطبيق مماثل لتلك التي حققتها terranin هنا:
    https://www.cavemantrading.com/crypt...de-copier.html

  6. #6
    لم أقم بهذا بعد ، لكنني أعتقد أنها ستعمل: استيراد user32 - انظر المثال على
    http://www.metatrader.info/node/160واستخدام وظائف dde (آسف لا أستطيع العثور على مثال جيد على ذلك) أو وظائف send_message. (وهذا يعني أن كلا MTs حول نفس الكمبيوتر). هنا بعض الأفكار على dde:
    http://www.answers.com/topic/dde-con...on?=technologyبنيت DDE إرسال ، فقط عليك القيام بالاستلام على المثيل الثاني. سأعرف ماذا يمكنني أن أجد.

  7. #7
    1 مرفق (ق) أنا جمعت هذا بين المعاملات لذلك ليس الجزء الأكثر مذهلة من التعليمات البرمجية لكنه يعمل ما يمكنني قوله ... كنت متعبا وشعور بالكرم في نفس الوقت بالضبط! ما هو عليه: DLL وكذلك EA (مع المصدر) مما يتيح الحديث المتبادل بين برامج MT4 2 على نفس الجهاز بالضبط ، مع قائمة انتظار رسالة سلسلة نصية FIFO. ما عليك سوى تشغيل نسخة من EA هذه على تطبيق MT4 واحد واستخدامها في برنامجين MT4 منفصلين على نفس الجهاز بالضبط. أنني لا أنصح بمحاولة استخدامه في اختبار egy ولكن قد يعمل بطريقة بصرية. استخدام النسخ المتماثل EX4 MQ4 إلى مجلد الخبراء من برنامجين MT4 نسخ basicmsgdll.dll إلى مجلد المتخصصينالمكتبات من برنامجين MT4 و EA لديه 1 المعلمة الخارجية الافتراضية 'runasserver الحقيقي صحيح تراجع EA على مخطط في APP 1 وتعيين runasserver = تراجع أصيلة EA على مخطط في APP اثنين وأيضا تعيين runasserver = استمتع سيئة! شكرا جزيلا المطلوبة! نشر المدفوعات إلى جمعية خيرية من اختيارك. راجع للشغل. لن تفهم أن لديك رسالة جديدة حتى تصل العلامة التالية ، وتُجبر EA على العمل مرة أخرى. (بمعنى .. لن تستيقظ EA بمجرد إرسال رسالة لها) لا أعرف ما الذي يضطر Hack Terranin إلى إجبار EA على العمل به. يجب أن تنشر له EA ثم يمكنني إلقاء نظرة لكنني أشك في رمز EA بطريقة أو بأخرى.
    Quote Originally Posted by ;
    TimeDelaySec - يحدد تأخير الوقت بين التحقق من التعديلات في الطلبات (بالثواني). ما إذا كانت هذه المعلمة = 0 (افتراضي) ، تعمل التطبيقات كمعيار وتتحقق من التغييرات في كل علامة (تغيير السعر في الجهاز). قد يتسبب هذا في حدوث تأخير كبير في حالة تغير السعر نادرًا ، ولكن هذه هي الطريقة التي يجب أن يعمل بها الخبراء في MetaTrader. في المقابل ، إذا قمت بتعيين هذه المعلمة على ثانية واحدة أو أكثر - فستحصل على نسخ سريعة للأوامر حتى إذا لم يتغير السعر خلال ذلك الوقت. ومع ذلك ، هذا في سمة غير مسجلة في MetaTrader وهذا يؤدي السيناريو عندما لا يمكنك فتح مربع حوار خصائص الموالية بعد بعض الوقت. على الرغم من أنه يمكنك حل هذه المشكلة عن طريق تغيير الإطار الزمني على تلك النوافذ التي يعمل فيها الخبير.
    https://www.cavemantrading.com/attac...1167661009.zip

  8. #8
    قل RB: شكرا جزيلا لهذه المساهمة! يمكنك القيام بذلك في C #؟ أو ، أين يمكنني الحصول على ميزات دلفي؟ و - هل هناك مترجم دلفي مجاني في مكان ما؟ شكرا كين

  9. #9
    شكرا لك على محاولتك ، rangebound.

  10. #10
    لا يوجد اختراق لاجبار EA على التشغيل بشكل دوري. أنت فقط لا ترجع من بداية () استدعاء على القراد الأولي. (عليك أن تنتظر هذا القراد). الحيلة هي أنك تريد إلقاء نظرة على علامة IsStopped () في كل 2.5 ثانية. إذا طلب المستخدم من MT4 إيقافإلغاء تحميل EA ، فإن MT4 سيجعل IsStopped () يبدأ في العودة صوابًا وينتظر 2.5 ثانية حتى تعود EA من مكالمة البداية الأصلية. إذا لم تقم بذلك ، فسيقوم MT4 ببساطة بمقاطعتك للرمز بطريقة غير مهينة. نصيحة ذات صلة هي أنك لا تريد حلقة ”wild” التي تقوم باستطلاعات الرأي مرارًا وتكرارًا بالسرعة نفسها التي قد تنفذ بها الكود. سوف تستهلك كل الوقت وحدة المعالجة المركزية وجعل كل شيء يبدو السبات. إذا لم يكن هناك شيء آخر ، فما عليك سوى الاتصال بـ Sleep في مكان ما في الحلقة الرئيسية. سيكون لغالبية وظائف إعاقة النوافذ معلمة تجريب (على سبيل المثال. WaitForSingleObject (في انتظار شيء مثل إجراء خارجي لإيقافه)) تتيح لك قيمة الإرجاع عادة التمييز بين الإرجاع بسبب حدوث الحدث المرغوب ومهلة يحدث. إذا كنت تنتظر بعض الإجراءات طويلة المدى ، فقد يكون لديك حلقة تنتظر الإجراء حتى 500ms مع WaitForSingleObject ، بتقييم قيمة الإرجاع لمعرفة ما إذا كان WaitForSingleObject مهلة فقط أم لا. عندما تنتهي المهلة ، يمكنك التحقق من IsStopped () لمعرفة ما إذا كان يجب إيقاف EA وما إذا كان من الخطأ الاستمرار في الحلقة./شفرة غير مجربة وغير كاملة تعني فقط إعطاء جوهر المفهوم بينما (1) IsStopped ()) فاصل ؛

أذونات النشر

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
  • رمز BB مفعل
  • الابتسامات مفعلة
  • رمز[IMG] مفعل
  • رمز [VIDEO] مفعل
  • رمز HTML غير مفعل
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.