Puente simple MT4 - Java - página 3

 
cyberflohr:
¿Estás usando el método getter correcto - getDoubleProperty(jCtx, "DoublePropertyName") ?

He verificado el ejemplo mt4jSAmple.mq4 con valores dobles y funciona.

setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double was not set correct: " + getDoubleProperty(jCtx, "DoublePropertySample"));

}


Tal vez sea el propio valor del flotador, ¿cuál es el valor del flotador?

Entorno

========

> MT4.00 build 418

> Tiempo de ejecución de Java : C:\NArchivos de programa (x86)\NJavajre6\bin\client\jvm.dll

java versión "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)

Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)



Inclusión de MT4 :

==========

#importar "mt4j.dll"

double getDoubleProperty(int jctx, string property);

void setDoubleProperty(int jctx, string property, double value);

#importar


Implementación en Java :

==============

private doubleMuestraDePropiedad;


public double getDoublePropertySample() {

return this.doublePropertySample;

}

public void setDoublePropertySample(double doubleProperty) {
this.doublePropertySample = doubleProperty;
}



Se ejecuta el siguiente código :

==============

double enviar_prueba_doble = -8008.12345678912;

setDoubleProperty(pid, "DoublePropertySample",send_test_double);
double received_test_double = getDoubleProperty(pid, "DoublePropertySample");

Print("Envío doble (tal cual) ",send_test_double);
Print("Prueba de envío doble ",DoubleToStrMorePrecision(send_test_double,16));
Print("Double Received (as is) ",received_test_double);
Print("Double Received Test ",DoubleToStrMorePrecision(received_test_double,16));
Print("Double Comparison Test ",send_test_double == received_test_double);


Las siguientes líneas en el registro del terminal :

=======================

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Envío doble (tal cual) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: cargado con éxito
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Prueba de envío doble -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doble Recibido (tal cual) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doble Recibido Test -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doble Comparación Test 1


Espero que puedas ver algo al respecto, ya que lo he comparado muchas veces (quizás se me pasa algo por alto).

 
pivotpoint:

Entorno

========

> MT4.00 build 418

> Tiempo de ejecución de Java : C:\_Archivos de programa (x86)\_Javajre6\bin\client\jvm.dll

versión de java "1.6.0_31"
Entorno de ejecución Java(TM) SE (build 1.6.0_31-b05)

Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)



Inclusión de MT4 :

==========

#importar "mt4j.dll"

double getDoubleProperty(int jctx, string property);

void setDoubleProperty(int jctx, string property, double value);

#importar


Implementación en Java :

==============

private doublePropertySample;


public double getDoublePropertySample() {

return this.doublePropertySample;

}

public void setDoublePropertySample(double doubleProperty) {
this.doublePropertySample = doubleProperty;
}



Se ejecuta el siguiente código :

==============

double send_test_double = -8008.12345678912;

setDoubleProperty(pid, "DoublePropertySample",send_test_double);
double prueba_recibida = getDoubleProperty(pid, "MuestraDoble");

Print("Envío doble (tal cual) ",send_test_double);
Print("Prueba de envío de doble ",DoubleToStrMorePrecision(send_test_double,16));
Print("Doble recibido (tal cual) ",received_test_double);
Print("Prueba de doble recibido ",DoubleToStrMorePrecision(received_test_double,16));
Print("Prueba de comparación de dobles ",send_test_double == received_test_double);


Las siguientes líneas en el registro del terminal :

=======================

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Envío doble (tal cual) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: cargado con éxito
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Prueba de envío doble -8008.1234567891197003
2012.05.10 00:55 ATT - Java EURUSD,M5: Doble recibido (tal cual) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Prueba de recepción doble -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Prueba de comparación doble 1


Espero que podáis ver algo en ella, ya que la he comparado ya muchas veces (quizás se me pase algo por alto).



¿O por casualidad tienen disponibles versiones actualizadas del software con otras mejoras? Actualmente estoy usando la versión v2 de la dll.
 

Hola pivotpoint,

He probado tu código con mi MT build 409 y funciona.

06:37:18 mt4jSample EURUSD,H4: Doble envío (tal cual) -8008.1235
06:37:18 stdlib EURUSD,H4: cargado con éxito
06:37:18 mt4jSample EURUSD,H4: Prueba de envío doble -8008.1234567891197003
06:37:18 mt4jSample EURUSD,H4: Doble recibido (tal cual) -8008.1235
06:37:18 mt4jSample EURUSD,H4: Doble prueba recibida -8008.1234567891197003

06:37:18 mt4jSample EURUSD,H4: Prueba de doble comparación 1


No obstante he buscado por ahí y he encontrado un post interesante. Parece que la versión (418) que está utilizando tiene algunos errores graves.

https://www.mql5.com/en/forum/138657


saludos,

cyberflohr

 
Nueva versión: V0.3

se ha añadido soporte para el método void noargs.

Código MT4:

// llama a un método noargs void en tu clase EA.
callNoArgsMethod(jCtx, "doSomething");


saludos,

cyberflohr

Archivos adjuntos:
mt4j_v0.3.zip  17 kb
 
brooky29:

Hola

El error 126 significa que MT4 no puede encontrar el archivo dll. Asumiendo que lo estás llamando por su nombre correcto, necesita estar principalmente en la carpeta /experts/libraries/. Puede ir en otro lugar, pero esta es su mejor ubicación.

Espero que esto ayude.

Saludos

Brooky

De hecho, después de varias pruebas y de buscar en foros externos, encontré que el error 126 es lanzado por el sistema cuando la DLL no puede encontrar una de sus dependencias... recomiendo encarecidamente usar la herramienta depends.exe para averiguar qué dependencia de la dll falta en tu sistema operativo.
 

Hola,

Estoy teniendo error de abajo para MT construir 432

2012.06.14 00:23:24 2011.09.26 20:00 mt4jSample EURUSD,H4: function 'addNewBar' call from dll 'mt4j.dll' critical error c0000005 at 6D8860FA.

Para mí, parece que la construcción tiene problema con la api.

¿Volveremos a tener el mismo problema si actualizamos con una nueva versión de MT?


Gracias


 

Hola,

Tengo un problema al cargar el mt4jSample.jar. He añadido algunos códigos en SampleEA.java que requieren archivos jar externos, sin embargo, después de volver a empaquetar mt4jSample .jar el sistema parece no reconocer o no puede encontrar donde esos archivos jar externos.

El nuevo SampleEA.java funciona bien en Eclipse pero no funciona en MetaTrader 4, si quito ese código que llama a los archivos jar externos y lo vuelvo a empaquetar, mt4jSample.jar funciona bien.

¿Puede decirme dónde debo definir o establecer la ruta de la clase para esos archivos jar externos? He probado con mt4j.properties pero no funciona.

Muchas gracias

 
javaelf:

Hola,

Tengo un problema al cargar el mt4jSample.jar. He añadido algunos códigos en SampleEA.java que requieren archivos jar externos, sin embargo, después de volver a empaquetar mt4jSample .jar el sistema parece no reconocer o no puede encontrar donde esos archivos jar externos.

El nuevo SampleEA.java funciona bien en Eclipse pero no funciona en MetaTrader 4, si quito ese código que llama a los archivos jar externos y lo vuelvo a empaquetar, mt4jSample.jar funciona bien.

¿Puede decirme dónde debo definir o establecer la ruta de la clase para esos archivos jar externos? He probado con mt4j.properties pero no funciona.

Muchas gracias

Este Foro es sobre la codificación de mql4. . .
 
RaptorUK:
Este Foro es sobre la codificación de mql4. . .

Gracias, pero como he mencionado en el post, no hay problemas cuando lo ejecuto en Eclipse pero tiene problemas en MetaTrader4. No estoy seguro de donde MQL4 o MetaTrader4 debe configurar la ruta de la clase.
 
javaelf:

Hola,

Tengo un problema al cargar el mt4jSample.jar. He añadido algunos códigos en SampleEA.java que requieren archivos jar externos, sin embargo, después de volver a empaquetar mt4jSample .jar el sistema parece no reconocer o no puede encontrar donde esos archivos jar externos.

El nuevo SampleEA.java funciona bien en Eclipse pero no funciona en MetaTrader 4, si quito ese código que llama a los archivos jar externos y lo vuelvo a empaquetar, mt4jSample.jar funciona bien.

¿Puede decirme dónde debo definir o establecer la ruta de la clase para esos archivos jar externos? He probado con mt4j.properties pero no funciona.

Muchas gracias

mt4j.properties es el lugar correcto para expandir el classpath, es decir

jvmOption.1=-Djava.class.path=expertos\libraries\mt4jSample.jar;expertos\libraries\mylib.jar;c:\mylibs\mylib2.jar


cyberflohr