Semplice ponte MT4 - Java - pagina 2

 

Grazie cyberflohr per la tua risposta. Ho un'altra domanda.

Ci sono metodi predefiniti definiti in SampleEA, che vengono con il tuo esempio. Questi metodi sono collegati a MT4 attraverso mt4j.dll. Se voglio aggiungere il mio metodo a SampleEA.java e voglio che sia chiamato in MT4, cosa devo fare? modificare il mt4j.dll?

cyberflohr:
sfortunatamente scrivere su System.out / System.err non mostrerà i messaggi nel tuo terminale MT. devi scrivere i tuoi messaggi su un file (usando java.io) o usare un framework di logging java come log4j o slf4j.

Preparerò un esempio più complesso che faccia alcuni trade nei prossimi giorni.

saluti,
cyberflohr
 

Puoi aggiungere i tuoi metodi set/get alla tua classe, ad esempio void setBuyPrice(double price), double getPrice(), ma non è possibile aggiungere metodi con una lista di parametri variabili.

PS: Potrei aggiungere il supporto per i metodi noargs se vuoi, il che significa che chiami prima i tuoi metodi setter per preparare il tuo oggetto istanza con i dati e poi chiami il metodo noargs per iniziare l'elaborazione - qualsiasi cosa tu voglia.

 

Il supporto per i metodi noargs (void someMethod()) sarebbe molto utile. Poiché questo migliorerebbe la separazione tra il trasferimento dei dati e il controllo delle operazioni da eseguire su di essi.


Saluti,

 

Ciao cyberflohr,

Strumento eccellente. Ho una domanda:

Come posso generare nuovamente mt4j.dll se vorrei esporre la mia api java pubblica da chiamare da MT4?

Grazie,

Molto!

Saluti,

Tamas

 

Ciao CyberFlohr, grazie mille per questo MT4 Java Bridge. Sono interessato ad avere alcuni tratti del contenuto dell'implementazione MT4J.dll, vorrei avere un punto di partenza per sviluppare la mia DLL, perché vorrei aggiungere alcune funzioni tecniche disponibili all'interno dell'API.


Grazie,

Jesus

 

Ciao Cyberflohr,

Ho seguito le tue istruzioni per installare la mt4jv0.2 e non ho ottenuto alcun errore segnalato nella piattaforma MT4. Tuttavia dal SampleEA.java trovo che c'è un metodo che sembra essere eseguito quando l'inizializzazione EA secondo la descrizione in MT4BasicClient.java

codice in SampleEA.java:

@Override

public void init() {

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

}

descrizione in MT4BasicClient.java:Beats by Dr. Dre Solo

/**

* Chiamato dal client MT4 durante la fase di init.

*/

Da questo codice penso che ci dovrebbe essere qualcosa da stampare durante l'inizializzazione. ma non ho visto il messaggio "init()" essere stampato nella piattaforma MT4. Ho capito bene il codice?

Inoltre, puoi dare un'altra demo per piazzare un ordine?

Grazie mille, apprezzo molto il tuo codice :D

 

Qualcuno ha fatto qualche test rigido sull'invio di valori doppi?


Ho provato diverse opzioni per inviare un valore doppio e poi ricevere lo stesso indietro, ma senza successo. L'invio nell'ambiente Java ha successo (come ho debuggato il valore ricevuto dal lato java) ma la ricezione dello stesso valore nell'ambiente MT non riesce.


Stampando il valore ricevuto mostra un output come sotto:


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


Qualcuno ha incontrato lo stesso? Sembra che la dll che sta facendo il trasferimento effettivo non stia gestendo correttamente il trasferimento dei tipi doppi.



Grazie in anticipo.

 
pivotpoint:

Qualcuno ha fatto qualche test rigido sull'invio di valori doppi?


Ho provato diverse opzioni per inviare un valore doppio e poi ricevere lo stesso indietro, ma senza successo. L'invio nell'ambiente Java ha successo (come ho debuggato il valore ricevuto dal lato java) ma la ricezione dello stesso valore nell'ambiente MT non riesce.


Stampando il valore ricevuto mostra un output come sotto:


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


Qualcuno ha incontrato lo stesso? Sembra che il dll che sta facendo il trasferimento effettivo non stia gestendo correttamente il trasferimento dei tipi doppi.



Grazie in anticipo.

Stai usando il metodo getter giusto - getDoubleProperty(jCtx, "DoublePropertyName") ?

Ho verificato il campione mt4jSAmple.mq4 con valori doppi e funziona.

setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double non è stato impostato correttamente: " + getDoubleProperty(jCtx, "DoublePropertySample"));

}


Forse è il valore float stesso, qual è il valore float?

 
fasdfwesdgwe:

Ciao Cyberflohr,

Ho seguito le tue istruzioni per installare la mt4jv0.2 e non ho ottenuto alcun errore segnalato nella piattaforma MT4. Tuttavia dal SampleEA.java trovo che c'è un metodo che sembra essere eseguito quando l'inizializzazione EA secondo la descrizione in MT4BasicClient.java

codice in SampleEA.java:

@Override

public void init() {

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

}

descrizione in MT4BasicClient.java:Beats by Dr. Dre Solo

/**

* Chiamato dal client MT4 durante la fase di init.

*/

Da questo codice penso che ci debba essere qualcosa da stampare durante l'inizializzazione. ma non ho visto il messaggio "init()" essere stampato nella piattaforma MT4. Ho capito bene il codice?

Inoltre, puoi dare un'altra demo per piazzare un ordine?

Grazie mille, apprezzo molto il tuo codice :D

Come ho già scritto in un post precedente, non c'è modo di reindirizzare i messaggi scritti su System.out/err alla piattaforma MT4. Si prega di utilizzare un framework di logging (log4j, slfj) per scrivere i messaggi su un file.
Per reindirizzare i messaggi scritti su System.out a un file, basta aggiungere il seguente codice inizializzatore statico alla classe MT4BasicClient.java:

static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
 
cyberflohr:
Come ho già scritto in un post precedente, non c'è modo di reindirizzare i messaggi scritti su System.out/err alla piattaforma MT4. Si prega di utilizzare un framework di logging (log4j, slfj) per scrivere i messaggi su un file.
Per reindirizzare i messaggi scritti su System.out a un file, basta aggiungere il seguente codice inizializzatore statico alla classe MT4BasicClient.java:

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


Un altro esempio di reindirizzamento qui sotto:


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

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


Che registrerà piacevolmente tutta la vostra console e la registrazione degli errori.