Puente simple MT4 - Java - página 2

 

Gracias cyberflohr por tu respuesta. Tengo otra pregunta.

Hay métodos predefinidos definidos en SampleEA, que vienen con su muestra. Estos métodos están vinculados a MT4 a través de mt4j.dll. si quiero añadir mi propio método a SampleEA.java y quiero que sea llamado en MT4, ¿qué debo hacer? modificar el mt4j.dll?

cyberflohr:
desafortunadamente escribir en System.out / System.err no mostrará los mensajes en su terminal MT. debe escribir sus mensajes en un archivo (usando java.io) o usar un marco de registro java como log4j o slf4j.

Prepararé un ejemplo más complejo que haga algunas operaciones en los próximos días.

Saludos,
cyberflohr
 

Puedes añadir tus propios métodos set/get a tu clase, por ejemplo void setBuyPrice(double price), double getPrice(), pero añadir métodos con una lista de parámetros variable no es posible.

PD: Podría añadir soporte para métodos noargs si quieres, eso significa que primero llamas a tus métodos setter para preparar tu objeto instancia con datos y luego llamas al método noargs para empezar a procesar - lo que quieras.

 

Sería muy útil el soporte de métodos noargs (void someMethod()). Ya que esto mejoraría la separación de la transferencia de los datos y el control de las operaciones a ejecutar en ellos.


Saludos,

 

Hola cyberflohr,

Excelente herramienta. Tengo una pregunta:

¿Cómo puedo volver a generar mt4j.dll si quiero exponer mi propia api pública de java para llamar desde MT4?

Gracias,

¡Mucho!

Saludos,

Tamas

 

Hola CyberFlohr, muchas gracias por este MT4 Java Bridge. Estoy interesado en tener algunos rasgos del contenido de la implementación de MT4J.dll, me gustaría tener un punto de partida para desarrollar mi propia DLL, ya que me gustaría añadir algunas funciones técnicas disponibles dentro de la API.


Gracias,

Jesús

 

Hola Cyberflohr,

Seguí tus instrucciones para instalar el mt4jv0.2 y no obtuve ningún error en la plataforma MT4. Sin embargo, desde el SampleEA.java encuentro que hay un método que parece ser ejecutado cuando la inicialización de EA de acuerdo con la descripción en MT4BasicClient.java

código en SampleEA.java:

@Override

public void init() {

System.out.println("init()");

}

descripción en MT4BasicClient.java:Beats by Dr. Dre Solo

/**

* Llamado por el cliente MT4 durante la fase de init.

*/

A partir de este código creo que debe haber algo que se imprime mientras la inicialización. pero U no vio el mensaje "init()" se imprime en la plataforma MT4. ¿He entendido bien el código?

Además, ¿puede dar otra demo para colocar una orden?

muchas gracias, realmente aprecio su código. :D

 

¿Alguien ha hecho alguna prueba rígida sobre el envío de valores dobles?


He probado varias opciones para enviar un valor doble y recibirlo de vuelta, pero sin éxito. El envío al entorno Java tiene éxito (ya que he depurado el valor recibido en el lado java) pero la recepción del mismo valor de vuelta en el entorno MT falla.


Al imprimir el valor recibido se muestra una salida como la siguiente:


2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND


¿Alguien se ha encontrado con lo mismo? Parece que la dll que está haciendo la transferencia real no está manejando correctamente la transferencia de vuelta de los tipos dobles.



Gracias de antemano.

 
pivotpoint:

¿Alguien ha hecho alguna prueba rígida sobre el envío de valores dobles?


He probado varias opciones para enviar un valor doble y recibirlo de vuelta, pero sin éxito. El envío al entorno Java tiene éxito (ya que he depurado el valor recibido en el lado java) pero la recepción del mismo valor de vuelta en el entorno MT falla.


Al imprimir el valor recibido se muestra una salida como la siguiente:


2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND


¿Alguien se ha encontrado con lo mismo? Parece que la dll que está haciendo la transferencia real no está manejando correctamente la transferencia de vuelta de los tipos dobles.



Gracias de antemano.

¿Está utilizando el método getter correcto - getDoubleProperty(jCtx, "DoublePropertyName") ?

He verificado la muestra mt4jSAmple.mq4 con valores dobles y funciona.

setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double no se ha establecido correctamente: " + getDoubleProperty(jCtx, "DoublePropertySample"));

}


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

 
fasdfwesdgwe:

Hola Cyberflohr,

Seguí tus instrucciones para instalar el mt4jv0.2 y no obtuve ningún error en la plataforma MT4. Sin embargo, desde el SampleEA.java encuentro que hay un método que parece ser ejecutado cuando la inicialización de EA de acuerdo con la descripción en MT4BasicClient.java

código en SampleEA.java:

@Override

public void init() {

System.out.println("init()");

}

descripción en MT4BasicClient.java:Beats by Dr. Dre Solo

/**

* Llamado por el cliente MT4 durante la fase de init.

*/

A partir de este código creo que debe haber algo que se imprima durante la inicialización, pero no he visto que el mensaje "init()" se imprima en la plataforma MT4. ¿He entendido bien el código?

Además, ¿puede dar otra demo para colocar una orden?

muchas gracias, realmente aprecio su código. :D

Como ya escribí en un post anterior, no hay manera de redirigir los mensajes escritos en System.out/err de vuelta a la plataforma MT4. Por favor, utilice un marco de registro (log4j, slfj) para escribir sus mensajes a un archivo.
Para redirigir los mensajes escritos en System.out a un archivo, sólo tiene que añadir el siguiente código inicializador estático a la clase MT4BasicClient.java

static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
 
cyberflohr:
Como ya escribí en un post anterior, no hay manera de redirigir los mensajes escritos a System.out/err de vuelta a la plataforma MT4. Por favor, utilice un marco de registro (log4j, slfj) para escribir sus mensajes a un archivo.
Para redirigir los mensajes escritos en System.out a un archivo, sólo tiene que añadir el siguiente código inicializador estático a la clase MT4BasicClient.java

static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}


Otro ejemplo de redirección a continuación:


String out_filename = String.format("%s%s.log", "expertos/logs/",this.getClass().getSimpleName());
String err_filename = String.format("%s%s_error.log", "expertos/logs/",this.getClass().getSimpleName());

System.setOut(new PrintStream(out_filename));
System.setErr(new PrintStream(err_filename));


Lo cual registrará muy bien toda la consola y el registro de errores.