Simple MT4 - Pont Java - page 2

 

Merci cyberflohr pour votre réponse. J'ai une autre question.

Il y a des méthodes prédéfinies définies dans SampleEA, qui sont fournies avec votre échantillon. Ces méthodes sont liées à MT4 par le biais de mt4j.dll. Si je veux ajouter ma propre méthode à SampleEA.java et que je veux qu'elle soit appelée dans MT4, que dois-je faire ? modifier la mt4j.dll ?

cyberflohr:
Malheureusement, écrire dans System.out / System.err n'affichera pas les messages dans votre terminal MT. Vous devez écrire vos messages dans un fichier (en utilisant java.io) ou utiliser un cadre de journalisation java comme log4j ou slf4j.

Je vais préparer un exemple plus complexe qui fait quelques transactions dans les prochains jours.

Salutations,
cyberflohr
 

Vous pouvez ajouter vos propres méthodes setter/get à votre classe, par exemple void setBuyPrice(double price), double getPrice(), mais l'ajout de méthodes avec une liste de paramètres variables n'est pas possible.

PS : Je pourrais ajouter le support des méthodes noargs si vous le souhaitez, ce qui signifie que vous appelez d'abord vos méthodes setter pour préparer votre objet d'instance avec des données et ensuite appeler la méthode noargs pour commencer le traitement - ce que vous voulez.

 

Le support des méthodes noargs (void someMethod()) serait très pratique. En effet, cela améliorerait la séparation entre le transfert des données et le contrôle des opérations à exécuter sur celles-ci.


Salutations,

 

Salut cyberflohr,

Excellent outil. J'ai une question :

Comment puis-je générer à nouveau mt4j.dll si je souhaite exposer ma propre api java publique à appeler depuis MT4 ?

Merci,

Beaucoup !

Salutations,

Tamas

 

Bonjour CyberFlohr, merci beaucoup pour ce MT4 Java Bridge. J'aimerais avoir un aperçu du contenu de l'implémentation de MT4J.dll, j'aimerais avoir un point de départ pour développer ma propre DLL, car j'aimerais ajouter certaines fonctions techniques disponibles dans l'API.


Merci,

Jesus

 

Bonjour Cyberflohr,

J'ai suivi vos instructions pour installer mt4jv0.2 et je n'ai pas eu d'erreur signalée dans la plateforme MT4. Cependant, à partir de SampleEA.java, je trouve qu'il y a une méthode qui semble être exécutée lors de l'initialisation de l'EA selon la description dans MT4BasicClient.java.

code dans SampleEA.java :

@Override

public void init() {

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

}

description dans MT4BasicClient.java :Beats by Dr. Dre Solo

/**

* Appelé par le client MT4 pendant la phase d'init.

*/

A partir de ce code, je pense qu'il doit y avoir quelque chose à imprimer pendant l'initialisation. Mais je n'ai pas vu le message "init()" s'imprimer dans la plateforme MT4. Ai-je bien compris le code ?

En outre, pouvez-vous donner une autre démo pour placer un ordre ?

Merci beaucoup, j'apprécie vraiment votre code :D

 

Quelqu'un a-t-il fait des tests rigides sur l'envoi de valeurs doubles ?


J'ai essayé plusieurs options pour envoyer une valeur double et ensuite recevoir la même chose en retour, mais sans succès. L'envoi dans l'environnement Java réussit (car j'ai débogué la valeur reçue du côté Java) mais la réception de la même valeur en retour dans l'environnement MT échoue.


Lors de l'impression de la valeur reçue, le résultat est le suivant :


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


Quelqu'un a-t-il rencontré le même problème ? Il semble que la dll qui effectue le transfert réel ne gère pas correctement le transfert en retour de types doubles.



Merci d'avance.

 
pivotpoint:

Quelqu'un a-t-il fait des tests rigides sur l'envoi de valeurs doubles ?


J'ai essayé plusieurs options pour envoyer une valeur double et recevoir la même en retour, mais sans succès. L'envoi dans l'environnement Java réussit (car j'ai débogué la valeur reçue du côté Java) mais la réception de la même valeur en retour dans l'environnement MT échoue.


Lors de l'impression de la valeur reçue, le résultat est le suivant :


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


Quelqu'un a-t-il rencontré le même problème ? Il semble que la dll qui effectue le transfert réel ne gère pas correctement le transfert en retour de types doubles.



Merci d'avance.

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 ?

 
fasdfwesdgwe:

Bonjour Cyberflohr,

J'ai suivi vos instructions pour installer mt4jv0.2 et je n'ai pas eu d'erreur signalée dans la plateforme MT4. Cependant, à partir de SampleEA.java, je trouve qu'il y a une méthode qui semble être exécutée lors de l'initialisation de l'EA selon la description de MT4BasicClient.java.

code dans SampleEA.java :

@Override

public void init() {

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

}

description dans MT4BasicClient.java :Beats by Dr. Dre Solo

/**

* Appelé par le client MT4 pendant la phase d'init.

*/

A partir de ce code, je pense qu'il doit y avoir quelque chose à imprimer pendant l'initialisation. Mais je n'ai pas vu le message "init()" s'imprimer dans la plateforme MT4. Ai-je bien compris le code ?

En outre, pouvez-vous donner une autre démo pour placer un ordre ?

merci beaucoup, j'apprécie vraiment votre code :D

Comme je l'ai déjà écrit dans un message précédent, il n'y a aucun moyen de rediriger les messages écrits dans System.out/err vers la plateforme MT4. Veuillez utiliser un framework de logging (log4j, slfj) pour écrire vos messages dans un fichier.
Pour rediriger les messages écrits dans System.out vers un fichier, il suffit d'ajouter le code d'initialisation statique suivant à la classe MT4BasicClient.java :

static {
essai {
System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\mt4j.log",true))) ;
} catch (FileNotFoundException e) {
e.printStackTrace() ;
}
}
 
cyberflohr:
Comme je l'ai déjà écrit dans un post précédent, il n'y a aucun moyen de rediriger les messages écrits dans System.out/err vers la plateforme MT4. Veuillez utiliser un framework de logging (log4j, slfj) pour écrire vos messages dans un fichier.
Pour rediriger les messages écrits dans System.out vers un fichier, il suffit d'ajouter le code d'initialisation statique suivant à la classe MT4BasicClient.java :

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


Un autre exemple de redirection ci-dessous :


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


Ce qui permettra d'enregistrer joliment toutes vos consoles et erreurs.

Raison: