Llamando a las tuberías con nombre dll de MT5. ¿Cómo? - Página 2
Llamando a las tuberías con nombre dll de MT5. ¿Cómo?

 

Publi

Página 2 de 354 PrimerPrimer 1234 ??ltimo??ltimo
Resultados 11 al 20 de 31

Tema: Llamando a las tuberías con nombre dll de MT5. ¿Cómo?

  1. #11
    Jason, ¿alguna vez averiguaste cómo crear tu C # DLL y llamarlo desde MT4? He estado jugando con él las últimas horas y puedo compartir algo de código si lo desea: Código MT4 Script 'testDLL' a continuación: archivo testUMD.dll agregado a la carpeta de expertosbibliotecas Código insertado #import testUMD.dll int AddInteger (int Value1, int Value2); doble AddDouble (doble Value1, doble Value2); cadena AddDoubleString (doble Value1, doble Value2); string returnString (string Input); #import///--------------------------------------------- --------------------- /| función de inicio del programa de script |/ ----------------------------------------------- ------------------- int start () {//---- Print (AddInteger: AddInteger (250, 750)); doble a = AddDouble (250,750); Imprimir (AddDouble: NormalizeDouble (a, 4)); double d = StrToDouble (AddDoubleString (250, 750)); Imprimir (AddDoubleString: NormalizeDouble (d, 4)); cadena temp = Enviar a DLL; cadena recv = returnString (temp); Imprimir (recv);/---- retorno (0); } Código C # para 'testUMD.dll' a continuación usando la plantilla de DLL no administrada de RGiesecke referenciada en mi publicación anterior en este hilo. Código insertado usando el sistema; utilizando System.Text; utilizando RGiesecke.DllExport; utilizando System.Runtime.InteropServices; utilizando System.Windows.Forms; namespace testUnmanagedDLL {class Test {# 91; DllExport (AddInteger, CallingConvention = CallingConvention.StdCall) # 93; public static int AddInteger (int Value1, int Value2) {MessageBox.Show (Add Integers: Value1.ToString () Value2.ToString ()); retorno (Valor1 Valor2); } # 91; DllExport (AddDouble, CallingConvention = CallingConvention.StdCall) # 93; public static double AddDouble (double Value1, double Value2) {MessageBox.Show (AddDouble: Value1.ToString () Value2.ToString ()); doble Value3 = Value1 Value2; retorno (Value3); } # 91; DllExport (AddDoubleString, CallingConvention = CallingConvention.StdCall) # 93; cadena estática pública AddDoubleString (doble Value1, doble Value2) {MessageBox.Show (AddDoubleString: Value1.ToString () Value2.ToString ()); doble Value3 = Value1 Value2; return (Value3.ToString ()); } # 91; DllExport (returnString, CallingConvention = CallingConvention.StdCall) # 93; cadena pública estática returnString (cadena de entrada) {MessageBox.Show (Received: Input); retorno (ENVIAR a MT4); }}} Resumen del Cursory: Paso entero = éxito, doble paso MT4 a C # = éxito, doble paso desde C # a MT4 = falla, cadena pasando = éxito. No he experimentado con matrices. Código de muestra escrito con VS 10 .NET 4.0. Si alguien sabe cómo hacer dobles para pasar sin conversión a una cadena de C # a MT4 con éxito, ¡por favor suelte una nota en este hilo o PM!

  2.                         
    Publicidad
  3. #12
    Ok, finalmente me di cuenta de cómo usar gitHub. Tenía una carpeta oculta que estaba arruinando mi configuración de un intento anterior para que todo funcionara. Ahora que esto está en funcionamiento, lo usaré para actualizar el código y aquí para publicar el razonamiento detrás de la solución. * editar - añadir enlace *: enlace gitHub:
    https://github.com/jasonforex/MetaTraderBridge

  4. #13
    Actualización rápida: estoy configurando un lugar en GitHub para poder publicar la solución completa y la gente puede ver los cambios que ocurren. Una vez hecho esto, reanudaré la pruebadepuración de este proyecto

  5. #14

    Cita Iniciado por ;
    Chriz, voy a exponer a regañadientes mi novedad a C # aquí. Nunca he usado ILDASM. Lo he visto en muchos artículos pero aún no lo he aprendido. Está en la lista de tareas pendientes, pero aún no es lo suficientemente alto como para detener el desarrollo en mis proyectos actuales. Espero poder dedicar varias horas a este proyecto este fin de semana. He intentado la directiva que mencionaste y el MT5 aún daba el mismo mensaje de error. Sin embargo, no he usado la función MarshalAs. Voy a darle una oportunidad. Si eso funciona, mi siguiente pregunta sería cómo ...
    Creo que ya se han publicado todos estos enlaces y se han discutido los principales problemas, pero hace un tiempo escribí este breve y fácil resumen en
    http://vb6-to-csharp.blogspot.com/20...etatrader.html, en el caso de que alguna vez pueda hacerlo yo mismo. (Todavía no tengo). Por favor, informe de nuevo sobre cómo va!

  6. #15
    Chriz, voy a exponer a regañadientes mi novedad a C # aquí. Nunca he usado ILDASM. Lo he visto en muchos artículos pero aún no lo he aprendido. Está en la lista de tareas pendientes, pero aún no es lo suficientemente alto como para detener el desarrollo en mis proyectos actuales. Espero poder dedicar varias horas a este proyecto este fin de semana. He intentado la directiva que mencionaste y el MT5 aún daba el mismo mensaje de error. Sin embargo, no he usado la función MarshalAs. Voy a darle una oportunidad. Si eso funciona, mi siguiente pregunta sería cómo pasar otros tipos de datos como double o int. Espero que las matrices sean una bestia propia, así como los objetos. Empezando, solo quiero los tipos de datos triviales y luego construirlos a partir de entonces.

  7. #16
    1 Adjunto (s) Hola Jason, ¿probaste con Marshalling? Código PHP: <code> <span style = ???color: # 000000???> <span style = ???color: # 0000BB???> </span> <span style = ???color: # 007700???> # 91; </span> <span style = ???color: # 0000BB???> DllExport </span> <span style = ???color: # 007700???> (</span> <span style = ???color: # DD0000???> ???SendString??? </span> <span style = ???color: # 007700???>, </span> <span style = ???color: # 0000BB???> CallingConvention </span> <span style = ???color: # 007700???> = </span> <span style = ???color: # 0000BB???> CallingConvention </span> <span style = ???color: # 007700???>. </span> <span style = ???color: # 0000BB???> StdCall </span> <span style = ???Color: # 007700???>) # 93;

    publicstatic </span> <span style = ???color: # 0000BB???> voidSendString </span> <span style = ???color: # 007700??? > (# 91; </span> <span style = ???color: # 0000BB???> MarshalAs </span> <span style = ???color: # 007700???> (</span> <span style = ???color: # 0000BB ???> UnmanagedType </span> <span style =??? color: # 007700 ???>. </span> <span style =??? color: # 0000BB ???> LPWStr </span> <span style =??? color: # 007700 ???> ) # 9 3; </span> <span style = ???color: # 0000BB???> stringargs </span> <span style = ???color: # 007700???>)
    {
    ....... .......
    ..............
    </span> <span style = ???color: # 0000BB???> </span> </span> </code> Además, ¿qué dice ILDASM? Esto es lo que veo .. (VS 2010, .NET 3.5) buena suerte chriz
    https://www.forosforex.com/cryptocur...trendline.html

  8. #17
    Simplemente no he tenido la oportunidad de trabajar en eso todavía. También me sorprende que nadie más haya intervenido.

  9. #18
    Hmm, supongo que no funcionó. Es interesante que nadie más ha hablado con ningún pensamiento y es solo que estoy orinando en el viento con conjeturas. debe estar algo solo en su desarrollo .net, al menos en términos de estar también en el comercio.

  10. #19

    Cita Iniciado por ;
    Sabes, eso es muy posible !! Lo he hecho y lo he hecho tantas veces, incluyendo la creación de nuevos proyectos, que probablemente me haya perdido algo. Volveré y echaré un vistazo. Tuve que tomarme un día libre. Terminé muy entusiasmado y tenía problemas para mirarlo objetivamente. En cuanto al 'por qué' de usar .net, lo quiero para más adelante en el futuro. MT5 no es la única aplicación que planeo usar. Escribirimplementar esto en .net a través de una DLL me acerca más a la plataforma neutral. De esta manera, puedo usar MT4, MT5, TradeStation, NinjaTrader, ...
    Te escucho. estado allí. en términos de solo este proyecto, es posible que aún esté mejor implementando un dll de manejo de tuberías c básico que pueda usar con cualquier plataforma que admita la importación de dll ... pero, en términos de poder hacer lo que quiera con. Las bibliotecas de red con cualquier plataforma son seguras, tendrá que encontrar dónde se están rompiendo las cosas actualmente. si fuera usted, empezaría por olvidar la solución de robert e intentaría escribir su propio bridgewrapper. en realidad, ni siquiera estoy seguro de que esto sea necesario. usted podría salirse con la suya con solo escribir una biblioteca .net de manejo de tuberías básica que se compila completamente como código no administrado. creo que solo necesita lidiar con el código de puente de no administrado a administrado cuando está tratando de ser complicado y usar clases y otros conceptos de código de alto nivel que no se transfieren entre asm no administrado y. Lo veo como una lectura de 3 bytes y luego un poco de shing en un entero para convertir 3 valores rgb en un valor de color entero. es sólo el intercambio de datos de un estado a otro. en este caso es muy parecido a simplemente compilar el código en c , simplemente que estás usando tu compilador .net. Deberías tener una grieta en solo hacer eso. escriba su dll de manejo básico de tuberías y configúrelo para que compile todo como intacto. Sospecho que esto funcionará de inmediato, y en este caso no es necesario ninguna otra solución sin sentido, ya que la DLL es solo una DLL básica de manejo de tuberías con poca o ninguna ???pelusa???.

  11. #20

    Cita Iniciado por ;
    Me parece que no ha implementado correctamente la solución de Robert Giesecke. Supongo que acaba de copiar el ejemplo de prueba y de haber archivado los archivos de Robert en algún lugar, pero en realidad no lo configuró correctamente.
    Sabes, eso es muy posible !! Lo he hecho y lo he hecho tantas veces, incluyendo la creación de nuevos proyectos, que probablemente me haya perdido algo. Volveré y echaré un vistazo. Tuve que tomarme un día libre. Terminé muy entusiasmado y tenía problemas para mirarlo objetivamente. En cuanto al 'por qué' de usar .net, lo quiero para más adelante en el futuro. MT5 no es la única aplicación que planeo usar. Escribirimplementar esto en .net a través de una DLL me acerca más a la plataforma neutral. De esta manera, puedo usar MT4, MT5, TradeStation, NinjaTrader, cuentas PAMM, etc.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
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.