Memanggil pipa bernama dll dari MT5. Bagaimana caranya? - Page 3
Halaman 3 dari 464 FirstFirst 1234 TerakhirTerakhir
Results 21 to 30 of 31

Thread: Memanggil pipa bernama dll dari MT5. Bagaimana caranya?

  1. #21
    Ok, akhirnya saya tahu cara menggunakan gitHub. Saya memiliki folder tersembunyi yang merusak pengaturan saya dari upaya sebelumnya untuk menyelesaikan semuanya. Sekarang ini sudah aktif dan berjalan, saya akan menggunakannya untuk memperbarui kode dan di sini untuk memposting alasan di balik solusi. * edit - tambahkan tautan *: tautan gitHub:
    https://github.com/jasonforex/MetaTraderBridge

  2. #22
    Jason, apakah Anda pernah mengetahui cara membuat C # DLL dan memanggilnya dari MT4? Saya baru saja mengotak-atiknya beberapa jam yang lalu dan dapat berbagi beberapa kode jika Anda suka: MT4 Script 'testDLL' kode di bawah ini: File testUMD.dll ditambahkan ke folder ahliperpustakaan Disisipkan Kode #import testUMD.dll int AddInteger (int Nilai1, int Value2); double AddDouble (double Value1, double Value2); string AddDoubleString (double Value1, double Value2); string returnString (string Input); #import/ --------------------------------------------- --------------------- /| skrip program mulai berfungsi |/ ----------------------------------------------- ------------------- int start () {//---- Print (AddInteger: AddInteger (250, 750)); dobel a = AddDouble (250,750); Print (AddDouble: NormalizeDouble (a, 4)); d ganda = StrToDouble (AddDoubleString (250, 750)); Print (AddDoubleString: NormalizeDouble (d, 4)); string temp = Kirim ke DLL; string recv = returnString (temp); Cetak (recv);/---- return (0); } C # kode untuk 'testUMD.dll' di bawah menggunakan RGiesecke's Unmanaged DLL template yang direferensikan di posting saya sebelumnya di utas ini. Kode yang dimasukkan menggunakan Sistem; menggunakan System.Text; menggunakan RGiesecke.DllExport; menggunakan System.Runtime.InteropServices; menggunakan System.Windows.Forms; namespace testUnmanagedDLL {class Test {# 91; DllExport (AddInteger, CallingConvention = CallingConvention.StdCall) # 93; int AddInteger statis publik (int Value1, int Value2) {MessageBox.Show (Tambah Integer: Value1.ToString () Value2.ToString ()); kembali (Value1 Value2); } # 91; DllExport (AddDouble, CallingConvention = CallingConvention.StdCall) # 93; public static double AddDouble (double Value1, double Value2) {MessageBox.Show (AddDouble: Value1.ToString () Value2.ToString ()); Nilai ganda3 = Nilai1 Nilai2; kembali (Value3); } # 91; DllExport (AddDoubleString, CallingConvention = CallingConvention.StdCall) # 93; public static string AddDoubleString (double Value1, double Value2) {MessageBox.Show (AddDoubleString: Value1.ToString () Value2.ToString ()); Nilai ganda3 = Nilai1 Nilai2; return (Value3.ToString ()); } # 91; DllExport (returnString, CallingConvention = CallingConvention.StdCall) # 93; public static string returnString (string Input) {MessageBox.Show (Received: Input); kembali (KIRIM ke MT4); }}} Ringkasan Singkat: Passing integer = sukses, kelulusan ganda MT4 ke C # = sukses, kelulusan ganda dari C # ke MT4 = gagal, string passing = sukses. Saya belum bereksperimen dengan array. Kode contoh ditulis dengan VS 10 .NET 4.0. Jika ada yang tahu cara mendapatkan gandakan untuk lulus tanpa konversi ke string dari C # ke MT4 dengan sukses, silakan masukkan atan di utas ini atau PM saya!

  3. #23
    FXEZ, saya membuat sedikit kemajuan. Saya telah dapat memanggil fungsi sederhana seperti yang Anda tunjukkan tetapi membuka pipa bernama masih tidak berfungsi sekarang. Saya beralih dari metode ekspor RGiesecke ke Selvin (
    http://www.codeproject.com/Articles/...on-to-Unmanage). Keduanya mirip tetapi saya menemukan metode Selvin sedikit lebih mudah untuk bekerja. Solusinya termasuk file yang diperlukan untuk membangun .exe dan dll tergantung. Kemajuan saya ada di GitHub (
    https://github.com/jasonforex/MetaTraderBridge) sehingga siapa saja dapat mengunduh arsip zip proyek, atau berkontribusi. Setelah saya mendapatkan semuanya bekerja, saya akan memposting ulang kode yang sudah diselesaikan di sini dan proyek akan tetap di GitHub juga. Saya masih memeriksa utas ini setiap hari jika ada kontribusi atau ide muncul di sini. Satu-satunya hal yang perlu saya tambahkan ke repositori saya adalah skrip uji MT5 yang saya gunakan tetapi itu cukup sederhana.

  4. #24

    Quote Originally Posted by ;
    , Saya membuat sedikit kemajuan. Saya telah dapat memanggil fungsi sederhana seperti yang Anda tunjukkan tetapi membuka pipa bernama masih tidak berfungsi sekarang. Saya beralih dari metode ekspor RGiesecke ke Selvin (
    http://www.codeproject.com/Articles/...on-to-Unmanage). Keduanya mirip tetapi saya menemukan metode Selvin sedikit lebih mudah untuk bekerja. Solusinya termasuk file yang diperlukan untuk membangun .exe dan dll tergantung. Kemajuan saya ada di GitHub (
    https://github.com/jasonforex/MetaTraderBridge) ...
    Sepertinya kita berada di jalur pengembangan yang sama. Namun, saya berencana menggunakan soket untuk implementasi saya daripada pipa bernama. Saat ini saya sedang berpikir untuk menerapkan soket di C # DLL daripada langsung di MQL4. Saya berencana untuk hanya menghubungkan MT4 ke DLL dari waktu ke waktu untuk memeriksa apakah ada pesan baru yang telah diterima. Jika demikian, panggilan akan dilakukan ke DLL dari MT4 untuk mengambil informasi itu dan kemudian menempatkan perdaganganmenyesuaikan posisi berdasarkan arahan yang diambil. Setelah pengisian diterima, informasi itu akan diteruskan ke DLL, kemudian dikirim melalui soket kembali ke program pengendali saya yang juga mengimplementasikan soket dalam C #.

  5. #25
    FXEZ, saya setuju. Saya hanya ingin memulai dengan pipa bernama karena kesederhanaannya. Setelah saya mendapatkan itu bekerja, rencana saya adalah untuk menerapkan beberapa jenis IPC (soket, memori bersama, dan Remoting).

  6. #26
    Hai Teman-teman, jadi kalian semua dapat pekerjaan ini? Ini sangat keren. Jadi apakah kode skrip dapat diterapkan untuk MT4 juga? Tolong beri tahu saya jenisnya tentang apa yang saya kerjakan dengan sangat baik dan bagikan kode Anda dengan komunitas lainnya di sini.

  7. #27
    Jason, apa kamu masih mengerjakan proyek ini? Saya mencoba penerapan soket melalui DLL tetapi katakan saja saya harus kembali dan mengerjakan yang itu lagi.
    Saya mengatur pandangan saya sekarang pada pipa bernama.
    Pada topik C # dll untuk proyek Metatrader, saya akhirnya berhasil menyelesaikan proyek contoh menggunakan metode ekspor Robert Giesecke Unmanaged C # DLL di
    http://vb6-to-csharp.blogspot.com/20...etatrader.htmlbahwa seseorang mungkin akan berguna. Ini berisi proyek sampel yang dapat diunduh dengan kode. Anda benar bahwa berurusan dengan template unmanaged-nya agak rumit dalam membuatnya mengkompilasi menggunakan. Net 4.0.

  8. #28
    Saya mengambil cuti tetapi kembali ke proyek ini dan berhasil. Ini masih sangat kasar sekarang tapi aku akan membersihkannya. Saya akan mencoba menjelaskan langkah-langkah yang saya gunakan untuk mendapatkan ini bekerja. 1)
    https://sites.google.com/site/robert...managedexports. Ikuti langkahnya di mana untuk meletakkan file .zip, cukup mudah. 2)
    https://sites.google.com/site/robert...ds#TOC-Samples. Pastikan Anda memasukkan proyek dalam solusi Anda (klik kanan, tambahkan proyek yang sudah ada). Proyek ini akan menyediakan .exe untuk melakukan semua perbaikan vtable (lebih lanjut di bawah) 3) Buka solusi baru dengan template Unmanaged Export Library yang Anda instal di # 1. 4) Kode fungsi Anda dengan arahan yang tepat, yaitu [DllEkspor, FunctionName]] Saran saya akan mulai sangat sederhana untuk memastikan Anda sudah menyiapkan semuanya dengan benar. 5) Lihat pernyataan terakhir. Jika Anda tidak melakukan ini dengan benar, Anda akan mendapatkan kesalahan FunctionName tidak ditemukan di xxxx.dll. Langkah ini benar-benar memungkinkan kode yang dikelola untuk dikonsumsi oleh kode tidak dikelola dan di mana saya mengalami masalah paling banyak dan bahkan tidak menyadarinya. Contoh yang diberikan RGiesecke adalah baik untuk membuat Anda pergi tetapi kekurangan di beberapa area, kebanyakan string. Jika Anda ingin mengirimkan string ke fungsi C #, Anda meneruskan alamat string, bukan string itu sendiri, yaitu void Function (string str). Bagian yang sulit adalah Anda perlu menggunakan StringBuilder di. Net sebagai tipe parameter, bukan string. Kode yang dimasukkan # 91; DllExport (SetPipeName, CallingConvention.StdCall) # 93; static bool SetPipeName (# 91; In, MarshalAs (UnmanagedType.LPWStr) # 93; # 91; b # 93; # 91; u # 93; StringBuilder # 91;u # 93; # 91;b # 93; nama ) {PipeName = name.ToString (); kembali benar; } Ingin mengakses bidang properti di kode Anda? Begini caranya. Kode Disisipkan string statik privat _serverName; public static string ServerName {# 91; return: MarshalAs (UnmanagedType.LPWStr) # 93; dapatkan {return _serverName; } tetapkan nilai {_serverName =; }} Bagaimana dengan fungsi string yang mengembalikan string? Tambahkan saja parameter Out Inserted Code # 91; DllExport (UpdatePipeName, CallingConvention.StdCall) # 93; static string UpdatePipeName (# 91; In, # 91; b # 93; # 91; u # 93; Out, # 91;u # 93; # 91;b # 93; Marshal As (UnmanagedType.LPWStr) # 93; StringBuilder name) # 91; return: MarshalAs (UnmanagedType.LPWStr) # 93; {PipeName = name.ToString (); return PipeName; } Salah satu masalah lain yang muncul adalah pada ujung lain dari pipa, sisi server (saya memperlakukan terminal MT45 saya sebagai klien saya). Pastikan Anda mengatur pipa server dengan PipeTransmissionMode yang benar. Anda ingin .Message aktif. Jika tidak, pipa Anda mungkin terhubung tetapi tidak akan berperilaku dengan benar. Sisi server menentukan mode dan .Message memungkinkan operasi pesan dan operasi byte. Tautan lain yang saya rujuk:
    http://www.mql5.com/en/docs/basis/preprosessor/import
    http://docs.mql4.com/basis/variables/extfunctions
    http://www.mql5.com/en/articles/115?print=
    http://www.codeproject.com/Articles/...oduction-and-S* 5) Terakhir dan paling penting: pastikan Anda mengatur acara pembuatan posting Anda dengan benar. Jika Anda memiliki lokasi direktori yang memiliki spasi, sertakan kutipan di sekitar jalur Anda. Bagi saya, saya punya Path ke Path DllExport.exe dikompilasi saya untuk saya. Dll dari proyek sayaDebug atauRelease

  9. #29
    Terima kasih atas rekapnya, Jason. Saya tidak tahu konsep string passing (stringbuilder) atau point # 5, yang mungkin menjadi penyebab beberapa kesengsaraan saya dengan template ini. Ini informasi yang bagus! Saya bisa mendapatkan proyek pipa C # bernama saya sendiri untuk berhasil bekerja. Saya memiliki beberapa masalah awal dengan keamanan pipa tetapi setelah menambahkan izin berhasil mendapatkan pipa bernama untuk bekerja di jaringan lokal.

  10. #30
    Anda juga pernah melihat ini?
    http://beathespread.com/blog/view/14...ngodb-encog-eaMungkin layak untuk mencari ide dan cara untuk menerapkan protokol lewat perintah dan cara untuk menyertakan kemampuan lain dalam C #, seperti database, dan akses ke fungsi matematika seperti NN.

Similar Threads

  1. Bagaimana broker dapat menghasilkan uang dari kontes
    By estehhyo in forum Pialang Forex
    Balasan: 31
    Postingan Terakhir: 08-04-2023 16:24, 04:24 PM
  2. Balasan: 5
    Postingan Terakhir: 12-14-2021 11:01, 11:01 AM
  3. Bagaimana saya bisa menghentikan MT4 dari memperbarui secara otomatis
    By v4hwas in forum Pembicaran Bitcoin dan Mata Uang Kripto
    Balasan: 7
    Postingan Terakhir: 12-07-2021 19:25, 07:25 PM
  4. IBFX Bernama Penyedia FX Online Terbaik
    By Haqehyvet in forum Pialang Forex
    Balasan: 6
    Postingan Terakhir: 11-01-2021 23:26, 11:26 PM
  5. Membantu! - Bagaimana caranya agar trailing stop tidak mengambil kerugian saat laba negatif?
    By HYitthyeweed in forum Pembicaran Bitcoin dan Mata Uang Kripto
    Balasan: 5
    Postingan Terakhir: 10-20-2009 14:51, 02:51 PM

Izin Posting

  • Anda tidak boleh memposting thread baru
  • Anda tidak boleh memposting balasan
  • Anda tidak boleh memposting lampiran
  • Anda tidak boleh menyunting postingan Anda
  •  
  • Kode BB Aktif
  • Smilies Aktif
  • Kode [IMG] Aktif
  • Kode [VIDEO] Aktif
  • Kode HTML tidak aktif
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.