![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿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);
#importarImplementació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).
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);
#importarImplementació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).
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
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
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
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
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. . .
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