|
|
|
|
-
Mi objetivo final es poder usar múltiples plataformas MT45 para alimentar una aplicación personalizada escrita en C #.
Código insertado MT5 | | \MT5 - caja negra C # programlt; --- MT5\ | | MT5
Por el momento, la caja negra no hace nada. Solo estoy trabajando en la comunicación.
Tengo Client.cs y Server.cs correctamente hablando entre ellos. Cuando envío PipeServer a un archivo .dll e intento cargar en MT5, aparece el error, No puedo encontrar 'SendString' en 'PipeServer.dll'. He intentado todo lo que puedo pensar. He leído numerosos artículos en línea y todavía estoy dando vueltas en círculos.
Código C # para PipeServer: (no importa todos los comentarios. Simplemente hace que sea más fácil alternar entre dll y exe)
Código insertado usando el sistema; utilizando System.Collections.Generic; utilizando System.Linq; utilizando System.Text; utilizando System.IO.Pipes; utilizando System.IO; utilizando System.Diagnostics; utilizando System.Runtime.InteropServices; utilizando RGiesecke.DllExport; espacio de nombres PipeServer {public class Server {//static void Main (string # 91; # 93; args) # 91; DllExport (SendString, CallingConvention = CallingConvention.StdCall) # 93; public static void SendString (cadena args) {using (NamedPipeServerStream pipeServer = new NamedPipeServerStream (testpipe, PipeDirection.InOut)) {//Console.WriteLine(NamedPipeServerStream creado objeto.);/Espere a que un cliente se conecte/Console.Write(Waiting for client connection ...); pipeServer.WaitForConnection ();/Console.WriteLine(Client conectado.);/bool Disconnect = false; intente {//Lea la entrada del usuario y envíela al proceso del cliente. utilizando (StreamWriter sw = new StreamWriter (pipeServer)) {//string temp;/while (pipeServer.IsConnected! Disconnect)/{sw.AutoFlush = true;/Console.Write(Ingrese texto:);/temp = Console.ReadLine ();/if (temp == exit) Disconnect = true;/Desconectar = verdadero; sw.WriteLine (args);/}}}/Detecta la excepción IOException que se genera si el conducto/está roto o desconectado. ch (IOException e) {Console.WriteLine (ERROR: {0}, e.Message); }}}}}
Código C # para el PipeClient:
Código insertado usando el sistema; utilizando System.Collections.Generic; utilizando System.Linq; utilizando System.Text; utilizando System.IO.Pipes; utilizando System.IO; utilizando System.Diagnostics; espacio de nombres PipeClient {clase pública Cliente {static void Main (string # 91; # 93; args) {using (NamedPipeClientStream pipeClient = new NamedPipeClientStream (., testpipe, PipeDirection.InOut)) {//Conectar a la tubería o esperar hasta que la tubería está disponible. Console.Write (Intentando conectar a la tubería ...); pipeClient.Connect (); Console.WriteLine (Conectado a la tubería.); Console.WriteLine (Actualmente hay {0} instancias de servidor de tuberías abiertas., PipeClient.NumberOfServerInstances); while (pipeClient.IsConnected) {using (StreamReader sr = new StreamReader (pipeClient)) {//Muestra el texto leído a la cadena de la consola temp; while ((temp = sr.ReadLine ())! = ) {Console.WriteLine (Recibido del servidor: {0}, temp); }}}} Console.Write (Presione Entrar para continuar ...); Console.ReadLine (); }}}
Código MQL5 para EAscript:
Código insertado/ --------------------------------------------- --------------------- /| TestPipeServer.mq5 |/| Copyright, NINGUNA |/| |/ ----------------------------------------------- ------------------- /# property script_show_inputs #import PipeServer.dll static void SendString (string args); #import///--------------------------------------------- --------------------- /| Función de inicio del programa de script |/ ----------------------------------------------- ------------------- void OnStart () {Print (prueba cargada correctamente); SendString (prueba);/si comento esta llamada de función, el script funciona}/ --------------------------------- ---------------------------------
Prueba de C # lt; - C # ofrece un rendimiento de más de 165,000 ticssegundo sin ningún ajuste de rendimiento. Esta es una de las razones principales por las que quiero usar una solución DLL. Además, el desarrollo en C # es mucho menos restrictivo. Entiendo que hay maneras de usar el código nativo de MQL5 pero esa no es la ruta que estoy siguiendo.
Entonces, mi pregunta general es ¿cómo puedo llamar correctamente a mi SendString (string someParameter)?
No importa en este momento qué tipo de datos envío. Puede ser un int, doble o cadena. Solo quiero que la funcionalidad funcione.
Cualquier ayuda o sugerencia sería muy apreciada para que pueda parar.
Gracias,
Jason
Permisos de publicación
- No puedes crear nuevos temas
- No puedes responder temas
- No puedes subir archivos adjuntos
- No puedes editar tus mensajes
-
Reglas del foro
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso.
Más información y política de cookies.
Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español.
Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.