Simple MT4 - Pont Java - page 3

 
cyberflohr:
Utilisez-vous la bonne méthode getter - getDoubleProperty(jCtx, "DoublePropertyName") ?

J'ai vérifié l'échantillon mt4jSAmple.mq4 avec des valeurs doubles et cela fonctionne.

setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty) ;
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double wasn't set correct : " + getDoubleProperty(jCtx, "DoublePropertySample")) ;

}


Peut-être que c'est la valeur flottante elle-même, quelle est la valeur flottante ?

Environnement

========

> MT4.00 build 418

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

java version "1.6.0_31"
Environnement d'exécution Java(TM) SE (build 1.6.0_31-b05)

Java HotSpot(TM) Client VM (build 20.6-b01, mode mixte, partage)



Inclusion MT4 :

==========

#Importation de "mt4j.dll".

double getDoubleProperty(int jctx, string property) ;

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

#import


Implémentation Java :

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

privé doublePropertySample ;


public double getDoublePropertySample() {

retourner this.doublePropertySample ;

}

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



Le code suivant est exécuté :

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

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) ;


Lignes suivantes dans le journal du terminal :

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

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 : chargé avec succès
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


J'espère que vous pouvez y voir quelque chose, car je l'ai déjà comparé plusieurs fois (j'ai peut-être oublié quelque chose).

 
pivotpoint:

Environnement

========

> MT4.00 build 418

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

Version de java "1.6.0_31".
Environnement d'exécution Java(TM) SE (build 1.6.0_31-b05)

Java HotSpot(TM) Client VM (build 20.6-b01, mode mixte, partage)



Inclusion MT4 :

==========

#Importation de "mt4j.dll".

double getDoubleProperty(int jctx, string property) ;

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

#import


Implémentation Java :

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

private doublePropertySample ;


public double getDoublePropertySample() {

retourner this.doublePropertySample ;

}

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



Le code suivant est exécuté :

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

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("Test de réception de double ",DoubleToStrMorePrecision(received_test_double,16)) ;
Print("Test de comparaison de double ",send_test_double == received_test_double) ;


Lignes suivantes dans le journal du terminal :

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

2012.05.10 00:55:55 ATT - Java EURUSD,M5 : Double Send (tel quel) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5 : chargé correctement
2012.05.10 00:55:55 ATT - Java EURUSD,M5 : Test du double envoi -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5 : Double Réception (tel quel) -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 : Test de double comparaison 1


J'espère que vous pouvez y voir quelque chose, car je l'ai déjà comparé plusieurs fois (j'ai peut-être oublié quelque chose).



Ou bien disposez-vous d'une version actualisée du logiciel avec d'autres améliorations ? J'utilise actuellement la version v2 de la dll.
 

Salut pivotpoint,

J'ai testé votre code avec mon MT build 409 et il fonctionne.

06:37:18 mt4jSample EURUSD,H4 : Double envoi (tel quel) -8008.1235
06:37:18 stdlib EURUSD,H4 : chargé avec succès
06:37:18 mt4jSample EURUSD,H4 : Test du double envoi -8008.1234567891197003
06:37:18 mt4jSample EURUSD,H4 : Double Received (as is) -8008.1235
06:37:18 mt4jSample EURUSD,H4 : Double Reçu Test -8008.1234567891197003

06:37:18 mt4jSample EURUSD,H4 : Test de double comparaison 1


Néanmoins, j'ai fait des recherches et j'ai trouvé un message intéressant. Il semble que la version (418) que vous utilisez présente de sérieux bugs.

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


Salutations,

cyberflohr

 
Nouvelle version : V0.3

ajout d'un support pour noargs void-method.

Code MT4 :

// appelle une méthode noargs void dans votre classe EA.
callNoArgsMethod(jCtx, "doSomething") ;


salutations,

cyberflohr

Dossiers :
mt4j_v0.3.zip  17 kb
 
brooky29:

Bonjour

D'après ce que je comprends, l'erreur 126 signifie que MT4 ne trouve pas le fichier dll. En supposant que vous l'appelez par son nom correct, il doit principalement se trouver dans le dossier /experts/libraries/. Il peut être placé ailleurs, mais c'est le meilleur emplacement.

J'espère que cela vous aidera.

Salutations

Brooky

En fait, après plusieurs tests et recherches sur des forums externes, j'ai découvert que l'erreur 126 est émise par le système lorsque la DLL ne trouve pas l'une de ses dépendances... Je recommande vivement d'utiliser l'outil depends.exe pour déterminer quelle dépendance de la DLL manque sur votre système d'exploitation.
 

Bonjour,

J'ai l'erreur suivante pour MT build 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.

Pour moi, il semble que le build a eu un problème avec l'api.

Est-ce que nous rencontrerons le même problème si nous mettons à jour avec une version plus récente de MT ?


Merci


 

Bonjour,

J'ai un problème pour charger le mt4jSample.jar. J'ai ajouté quelques codes dans SampleEA.java qui nécessitent des fichiers jar externes, cependant après avoir repackagé mt4jSample.jar le système semble ne pas reconnaître ou ne peut pas trouver où ces fichiers jar externes.

Le nouveau SampleEA.java fonctionne bien dans Eclipse mais ne fonctionne pas dans MetaTrader 4. Si je supprime le code qui nécessite des fichiers jar externes et que je reconditionne, mt4jSample.jar fonctionne bien.

Pouvez-vous me dire où je dois définir le chemin de la classe pour ces fichiers jar externes ? J'ai essayé mt4j.properties mais cela ne fonctionne pas.

Merci beaucoup.

 
javaelf:

Bonjour,

J'ai un problème pour charger le mt4jSample.jar. J'ai ajouté quelques codes dans SampleEA.java qui nécessitent des fichiers jar externes, cependant après avoir repackagé mt4jSample.jar le système semble ne pas reconnaître ou ne peut pas trouver où ces fichiers jar externes.

Le nouveau SampleEA.java fonctionne bien dans Eclipse mais ne fonctionne pas dans MetaTrader 4. Si je supprime le code qui nécessite des fichiers jar externes et que je reconditionne, mt4jSample.jar fonctionne bien.

Pouvez-vous me dire où je dois définir le chemin de la classe pour ces fichiers jar externes ? J'ai essayé mt4j.properties mais cela ne fonctionne pas.

Merci beaucoup

Ce forum est consacré au codage mql4 . . .
 
RaptorUK:
Ce forum est consacré au codage mql4 . . .

Merci, mais comme je l'ai mentionné dans le post, il n'y a aucun problème lorsque je l'exécute dans Eclipse mais a des problèmes dans MetaTrader4. Je ne sais pas où MQL4 ou MetaTrader4 doit configurer le chemin de la classe.
 
javaelf:

Bonjour,

J'ai un problème pour charger le mt4jSample.jar. J'ai ajouté quelques codes dans SampleEA.java qui nécessitent des fichiers jar externes, cependant après avoir repackagé mt4jSample.jar le système semble ne pas reconnaître ou ne peut pas trouver où ces fichiers jar externes.

Le nouveau SampleEA.java fonctionne bien dans Eclipse mais ne fonctionne pas dans MetaTrader 4. Si je supprime le code qui nécessite des fichiers jar externes et que je reconditionne, mt4jSample.jar fonctionne bien.

Pouvez-vous me dire où je dois définir le chemin de la classe pour ces fichiers jar externes ? J'ai essayé mt4j.properties mais cela ne fonctionne pas.

Merci beaucoup.

mt4j.properties est le bon endroit pour étendre le classpath c'est à dire

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


cyberflohr