Semplice ponte MT4 - Java - pagina 3

 
cyberflohr:
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 was not set correct: " + getDoubleProperty(jCtx, "DoublePropertySample"));

}


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

Ambiente

========

> MT4.00 build 418

> Java Runtime: C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll

java versione "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)



Inclusione MT4 :

==========

#Importazione "mt4j.dll".

double getDoubleProperty(int jctx, string property);

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

#import


Implementazione Java :

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

privato doublePropertySample;


public double getDoublePropertySample() {

return this.doublePropertySample;

}

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



Viene eseguito il seguente codice:

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

double send_test_double = -8008.12345678912;

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

Print("Double Send (as is) ",send_test_double);
Print("Double Send Test ",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);


Le seguenti linee nel logging del terminale:

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

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: caricato con successo
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received (as is) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received Test -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Comparison Test 1


Spero che tu possa vederci qualcosa, visto che l'ho già confrontato molte volte (forse mi sfugge qualcosa).

 
pivotpoint:

Ambiente

========

> MT4.00 build 418

> Java Runtime: C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll

java versione "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)



Inclusione MT4 :

==========

#importare "mt4j.dll"

double getDoubleProperty(int jctx, string property);

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

#importare


Implementazione Java :

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

privato doublePropertySample;


public double getDoublePropertySample() {

return this.doublePropertySample;

}

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



Viene eseguito il seguente codice:

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

double send_test_double = -8008.12345678912;

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

Stampa("Invio doppio (così com'è) ",send_test_double);
Print("Double Send Test ",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);


Le seguenti linee nel logging del terminale:

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

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Invio doppio (come è) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: caricato con successo
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Test doppio invio -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doppio ricevuto (come è) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doppia ricevuta Test -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Doppio confronto Test 1


Spero che possiate vederci qualcosa, visto che l'ho già confrontato molte volte (forse mi sfugge qualcosa).



O avete per caso versioni aggiornate del software disponibili con altri miglioramenti? Attualmente sto usando la versione v2 della dll.
 

Ciao pivotpoint,

Ho testato il tuo codice con il mio MT build 409 e funziona.

06:37:18 mt4jSample EURUSD,H4: Doppio invio (come è) -8008.1235
06:37:18 stdlib EURUSD,H4: caricato con successo
06:37:18 mt4jSample EURUSD,H4: Test doppio invio -8008.1234567891197003
06:37:18 mt4jSample EURUSD,H4: Doppio ricevuto (come è) -8008.1235
06:37:18 mt4jSample EURUSD,H4: Test doppio ricevuto -8008.1234567891197003

06:37:18 mt4jSample EURUSD,H4: Test di confronto doppio 1


Tuttavia ho cercato in giro e ho trovato un post interessante. Sembra che la versione (418) che stai usando abbia dei seri bug.

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


saluti,

cyberflohr

 
Nuova versione: V0.3

aggiunto il supporto per noargs void-method.

Codice MT4:

// chiama un metodo noargs void nella tua classe EA.
callNoArgsMethod(jCtx, "doSomething");


saluti,

cyberflohr

File:
mt4j_v0.3.zip  17 kb
 
brooky29:

Ciao

L'errore 126 per quanto ne so significa che MT4 non riesce a trovare il file dll. Supponendo che tu lo stia chiamando con il suo nome corretto, deve essere principalmente nella cartella /experts/libraries/. Può andare altrove, ma questa è la posizione migliore.

Spero che questo aiuti.

Saluti

Brooky

Infatti, dopo diverse prove e ricerche su forum esterni, ho scoperto che l'errore 126 viene rilasciato dal sistema quando la DLL non riesce a trovare una delle sue dipendenze... consiglio vivamente di usare lo strumento depends.exe per capire quale dipendenza della DLL manca sul vostro sistema operativo.
 

Ciao,

Sto avendo un errore qui sotto per MT build 432

2012.06.14 00:23:24 2011.09.26 20:00 mt4jSample EURUSD,H4: funzione 'addNewBar' chiamata dalla dll 'mt4j.dll'errore critico c0000005 a 6D8860FA.

Per me, sembra che la build abbia un problema con l'api.

Avremmo lo stesso problema se aggiornassimo con una build MT più recente?


Grazie


 

Salve,

Ho un problema nel caricare il mt4jSample.jar. Ho aggiunto alcuni codici in SampleEA.java che richiedono file jar esterni, tuttavia dopo aver reimpacchettato mt4jSample.jar il sistema sembra non riconoscere o non trovare dove questi file jar esterni.

Il nuovo SampleEA.java funziona bene in Eclipse ma non funziona in MetaTrader 4, se rimuovo il codice che chiama i file jar esterni e lo ricompatto, mt4jSample.jar funziona bene.

Potete per favore dirmi dove dovrei definire o impostare il percorso della classe per quei file jar esterni? Ho provato con mt4j.properties ma non funziona.

Molte grazie

 
javaelf:

Salve,

Ho un problema nel caricare il mt4jSample.jar. Ho aggiunto alcuni codici in SampleEA.java che richiedono file jar esterni, tuttavia dopo aver reimpacchettato mt4jSample.jar il sistema sembra non riconoscere o non trovare dove questi file jar esterni.

Il nuovo SampleEA.java funziona bene in Eclipse ma non funziona in MetaTrader 4, se rimuovo il codice che chiama i file jar esterni e lo ricompatto, mt4jSample.jar funziona bene.

Potete per favore dirmi dove dovrei definire o impostare il percorso della classe per quei file jar esterni? Ho provato con mt4j.properties ma non funziona.

Molte grazie

Questo forum riguarda la codifica di mql4 . . .
 
RaptorUK:
Questo forum riguarda la codifica di mql4 . . .

Grazie, ma come ho detto nel post, non ci sono problemi quando lo eseguo in Eclipse ma ha problemi in MetaTrader4. Non sono sicuro di dove MQL4 o MetaTrader4 dovrebbe configurare il percorso della classe.
 
javaelf:

Salve,

Ho un problema nel caricare il mt4jSample.jar. Ho aggiunto alcuni codici in SampleEA.java che richiedono file jar esterni, tuttavia dopo aver reimpacchettato mt4jSample.jar il sistema sembra non riconoscere o non trovare dove questi file jar esterni.

Il nuovo SampleEA.java funziona bene in Eclipse ma non funziona in MetaTrader 4, se rimuovo il codice che chiama i file jar esterni e lo ricompatto, mt4jSample.jar funziona bene.

Potete per favore dirmi dove dovrei definire o impostare il percorso della classe per quei file jar esterni? Ho provato con mt4j.properties ma non funziona.

Molte grazie

mt4j.properties è il posto giusto per espandere il classpath cioè

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


cyberflohr