![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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);
#importImplementazione 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).
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);
#importareImplementazione 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).
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
aggiunto il supporto per noargs void-method.
Codice MT4:
// chiama un metodo noargs void nella tua classe EA.
callNoArgsMethod(jCtx, "doSomething");
saluti,
cyberflohr
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
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
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 . . .
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