Truyền dữ liệu từ máy khách MT4 này sang máy khách khác
Trang 1 trên 625 123 ... CuốiCuối
Results 1 to 10 of 41

Thread: Truyền dữ liệu từ máy khách MT4 này sang máy khách khác

  1. #1
    Mục tiêu của tôi là chuyển dữ liệu từ một quá trình terminal.exe sang một quy trình khác ....

    tôi không muốn sử dụng tập tin văn bản vì những va chạm có thể xảy ra ....

    suy nghĩ đầu tiên của tôi là tạo một DLL với không gian bộ nhớ dùng chung và nhập nó vào từng thiết bị đầu cuối MT4 .... sau đó đọc từ một EX4 và viết với một ...


    Đối với bất kỳ ai đã sử dụng máy photocopy MT4 của Terranin, anh ta đã tìm ra giải pháp cho vấn đề .... nhưng phản hồi của anh ta thông qua PM quá phức tạp đối với tôi.

    Cứu giúp

  2. #2
    Bạn sẽ không thể tạo một không gian bộ nhớ dùng chung trực tiếp trong DLL. Có một số cách để nhận DLL để nói chuyện với nhau. Nó phụ thuộc thực sự nếu bạn muốn coms hai chiều hay không, và tần suất chúng cần trò chuyện. Các phương pháp đơn giản nhất bao gồm: 1) Mở các socket trong DLL để nói chuyện qua TCP hoặc giao thức khác. (có thể dễ dàng nhất và hoạt động nếu các ứng dụng MT4 trên các máy khác nhau trên mạng LAN hoặc inet) 2) Có một MT4 sử dụng DLL tạo cửa sổ 'người trợ giúp' (hiển thị hoặc ẩn) từ một DLL khác. Nếu điều này vượt quá bạn thì bạn có thể sử dụng các tệp đĩa để truyền dữ liệu nếu bạn không chuyển quá thường xuyên, bạn sẽ chỉ phải sử dụng các tệp phụ trợ làm cơ chế semaphore. Một lần nữa, nó thực sự phụ thuộc vào cách bạn đang cố gắng giao tiếp nhưng điều này sẽ hoạt động bên trong một EA (không phải là một kẻ xấu). (Tuy nhiên, bạn sẽ phải sử dụng các chức năng tệp API của windows vì theo như tôi biết thì MT4 sẽ không viết hoặc đọc bên ngoài cấu trúc thư mục của chính nó) 'Datafile.txt' chứa dữ liệu của bạn 'app1lock.txt' ... tệp khóa giả ' app2lock.txt '... tệp khóa giả trước khi khởi động ứng dụng MT4 đảm bảo không có tệp nào tồn tại App1 ... nếu app2lock.txt không tồn tại {tạo tệp app1lock.txt//có thể tại thời điểm này cả hai ứng dụng đều bị khóa đồng thời chờ và kiểm tra lại giấc ngủ (1000);/đợi một giây nếu app2lock.txt không tồn tại {tạosửa đổiđọc 'datafile.txt'} cờ khác mà chúng ta cần làm lại lần sau thông qua xóa tệp 'app1lock.txt'} App2 ... nếu app1lock.txt không không tồn tại {tạo tệp app2lock.txt Ngủ (1500) nếu app1lock.txt không tồn tại {tạosửa đổiđọc 'datafile.txt'} cờ khác cho lần chạy tiếp theo thông qua xóa tệp 'app2lock.txt'}

  3. #3
    cảm ơn. tôi sẽ xem xét những gì bạn đã làm. tôi tự tìm thấy cái này
    http://forums.devx.com/showthread.php?t=157293Thật không may, C không phải là bộ phần mềm mạnh mẽ của tôi.

  4. #4
    Tạo một tài nguyên được chia sẻ theo luồng đó sẽ chỉ hoạt động trong khung làm việc của cùng một quá trìnhứng dụng. Ví dụ: nếu bạn có một indior (sử dụng DLL) và được gắn vào một số biểu đồ trong cùng một ứng dụng MT4 thì chúng tất cả sẽ mở một phiên bản của DLL bằng cách sử dụng tay cầm Hinstance của Ứng dụng MT4. Họ sẽ có thể chia sẻ bộ nhớ, bởi vì mỗi phiên bản của DLL được mở với cùng một tay cầm Hinstance của cùng một ứng dụng MT4. Bạn muốn nói chuyện giữa hai Ứng dụng MT4. Mỗi Ứng dụng MT4 có tay cầm Hinstance riêng, do đó, nếu bạn mở cùng một DLL trên hai Ứng dụng Mt4 khác nhau thì mỗi ứng dụng sẽ có một bộ nhớ chia sẻ riêng, do đó sẽ không thể giao tiếp.

  5. #5
    cảm ơn đã trả lời tôi cần tạo một ứng dụng tương tự như địa hình đã hoàn thành ở đây:
    https://www.forexibroker.com/crypto-...de-copier.html

  6. #6
    Tôi chưa làm điều này, nhưng nghĩ rằng nó sẽ hoạt động: nhập user32 - xem ví dụ trên
    http://www.metatrader.info/node/160và sử dụng các hàm dde (xin lỗi tôi không thể tìm thấy ví dụ về điều này) hoặc các hàm send_message. (Điều này có nghĩa là cả hai MT đều trên cùng một máy tính). Dưới đây là một số suy nghĩ về dde:
    http://www.answers.com/topic/dde-con...on?=technologyGửi DDE đã được tích hợp sẵn, chỉ cần thực hiện nhận trong ví dụ thứ 2. Tôi sẽ thấy những gì tôi có thể tìm thấy.

  7. #7
    1 Phần đính kèm Tôi đã ném nó cùng nhau giữa các giao dịch để nó không phải là đoạn mã tuyệt vời nhất nhưng nó hoạt động Tôi có thể nói gì ... Tôi đã chán và cảm thấy hào phóng cùng một lúc !!! Nó là gì: Một DLL và ví dụ EA (có nguồn) để cho phép trò chuyện chéo giữa hai Ứng dụng MT4 trên cùng một máy, sử dụng hàng đợi tin nhắn chuỗi văn bản FIFO. Chỉ chạy một bản sao EA trên một ứng dụng MT4 duy nhất và áp dụng nó cho không quá 2 Ứng dụng MT4 riêng biệt trên cùng một máy. Tôi không khuyên bạn nên thử sử dụng nó trong thử nghiệm egy nhưng nó có thể hoạt động ở chế độ trực quan. Sử dụng sao chép EX4 MQ4 vào thư mục chuyên gia của 2 Ứng dụng MT4 sao chép basicmsgdll.dll vào thư mục chuyên gia \ library của 2 Ứng dụng MT4 EA có 1 tham số bên ngoài 'runasserver' default = true Thả EA vào biểu đồ trong APP 1 và đặt runasserver = True Thả EA vào biểu đồ trong APP 2 và đặt runasserver = Sai Thưởng thức! Cảm ơn vô cớ !! Gửi các khoản thanh toán cho tổ chức từ thiện của bạn. BTW. Bạn sẽ không biết mình có một tin nhắn mới cho đến khi đánh dấu tiếp theo đến và buộc EA chạy lại. (I.E. EA sẽ không thức dậy khi bạn gửi tin nhắn) Tôi không biết Hack Terranin đang sử dụng cái gì để buộc EA chạy. Nếu bạn đăng EA của anh ấy thì tôi có thể có một cái nhìn nhưng tôi nghi ngờ nó trong mã EA bằng cách nào đó.
    Quote Originally Posted by ;
    TimeDelaySec - xác định độ trễ thời gian giữa việc kiểm tra các thay đổi trong đơn hàng (tính bằng giây). Nếu tham số này = 0 (mặc định) thì phần mềm hoạt động như bình thường và kiểm tra các thay đổi trên mỗi đánh dấu (thay đổi giá trong thiết bị đầu cuối). Điều này có thể gây ra sự chậm trễ lớn nếu giá thay đổi hiếm khi, nhưng đây là cách các chuyên gia nên làm việc trong MetaTrader. Ngược lại nếu bạn đặt tham số này thành 1 giây trở lên - bạn sẽ nhận được các bản sao đơn hàng thực sự nhanh chóng ngay cả khi giá không thay đổi trong thời gian này. Nhưng tính năng này không được ghi lại trong MetaTrader và điều này gây ra tình trạng khi bạn không thể mở hộp thoại thuộc tính chuyên gia sau một thời gian. Mặc dù bạn có thể khắc phục vấn đề này bằng cách thay đổi khung thời gian trên các cửa sổ nơi chuyên gia làm việc.
    https://www.forexibroker.com/attachm...1167661009.zip

  8. #8
    Nói RB: Rất cám ơn sự đóng góp đó! Bạn có thể làm điều đó trong C #? HOẶC, tôi có thể lấy bao gồm cho delphi ở đâu? Và - có một trình biên dịch delphi miễn phí ở đâu đó không? Cảm ơn, Ken

  9. #9
    Cảm ơn bạn đã nỗ lực, rangebound.

  10. #10
    Không có hack để buộc EA chạy định kỳ. Bạn chỉ không quay lại từ cuộc gọi start () trên tích tắc đầu tiên. (Bạn phải đợi đánh dấu đầu tiên đó). Mẹo nhỏ là bạn cần kiểm tra cờ IsStopped () ít nhất mỗi 2,5 giây. Nếu người dùng yêu cầu MT4 dừnghủy tải EA, MT4 sẽ khiến IsStopped () bắt đầu trở lại đúng và đợi tối đa 2,5 giây để EA quay lại từ cuộc gọi bắt đầu ban đầu đó. Nếu bạn không làm điều đó, MT4 sẽ đơn giản làm gián đoạn mã của bạn theo cách không được đánh giá cao. Một mẹo liên quan là bạn không muốn có một vòng lặp 'hoang dã' để thăm dò ý kiến ​​lặp đi lặp lại nhanh như mã có thể thực thi. Bạn sẽ tiêu tốn hết thời gian của CPU và khiến mọi thứ dường như chậm chạp. Nếu không có gì khác, chỉ cần gọi Ngủ ở đâu đó trong vòng lặp chính của bạn. Hầu hết các chức năng chặn cửa sổ sẽ có tham số hết thời gian (ví dụ: WaitForSingleObject (để chờ một cái gì đó giống như một quy trình bên ngoài để thoát)) Giá trị trả về thường sẽ cho phép bạn phân biệt giữa trả lại do sự kiện mong muốn xảy ra và một thời gian chờ xảy ra. Nếu bạn đang chờ đợi trên một quy trình dài hạn, bạn có thể có một vòng lặp chờ quá trình lên tới 500ms với WaitForSingleObject, kiểm tra giá trị trả về để xem WaitForSingleObject chỉ hết thời gian. Nếu quá thời gian chờ, bạn có thể kiểm tra IsStopped () để xem bạn có nên thoát EA không và nếu nó vẫn sai thì tiếp tục lặp./mã chưa được kiểm tra và chưa hoàn chỉnh chỉ có nghĩa là đưa ra ý chính của khái niệm while (1) {ret = WaitForSingleObject (someProcessHandle, 500); if (ret == WAIT_OB DỰ_0 | | IsStopped ()) break; }

Quyền đăng bài

  • Bạn không thể đăng bài viết mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng tệp đính kèm
  • Bạn không thể chỉnh sửa bài đăng của bạn
  •