L'erreur de Molanis, quelqu'un ? - page 3

 

RJo:

Cela dit, je n'ai pas encore vu un ex4 fonctionnel avec un mq4 défectueux de SB.

Vous avez posté un code mql4 défectueux . ... on dirait que Molanis n'est pas meilleur que EA Builder.
 
RJo:


Ah, alors... les ordinateurs sont les meilleurs en matière de trading et il faut donc se passer de l'humain.


Non.... les ordinateurs sont les meilleurs pour le trading automatisé;)
 
RaptorUK:
Vous avez posté un code mql4 défectueux . ... on dirait que Molanis n'est pas meilleur que EA Builder.


"Défectueux" par rapport au fichier ex4, comme dans le cas où le ex4 est plus fonctionnel que le mq4. Comme indiqué dans mon premier message, je ne suis pas un codeur. Yeesh. Merci pour votre diagnostic spécifique. Ah oui... vous n'en aviez pas.

 
RJo:


"Défectueux" par rapport au fichier ex4, comme dans le cas où l'ex4 est plus fonctionnel que le mq4. Comme indiqué dans mon premier message, je ne suis pas un codeur. Yeesh. Merci pour votre diagnostic spécifique. Oh oui... vous n'en aviez pas.

Je n'ai pas besoin de répéter ce que WHRoeder a déjà donné...
 
JDeel:

Pourquoi ne pas commencer à programmer en assembleur ? Nous pouvons tout contrôler dans le plus bas niveau disponible (après le code machine). Oui, cela demande plus d'efforts pour apprendre cela, mais nous obtiendrons sûrement un code plus petit et super optimisé ! C'est tellement génial, vous ne trouvez pas ?

deVries, Molanis n'est pas mon outil et je n'ai jamais fait d'EA en l'utilisant. Mais je vois que vous n'êtes pas un fan des EA Builders et je peux vous conseiller de ne jamais essayer de travailler avec eux. Utilisez simplement MQL4/MQL5, ce n'est pas interdit. Il y a des gens qui aiment le plus la couleur rose, et d'autres qui aiment le plus la couleur bleue. Il en a toujours été ainsi et il en sera toujours ainsi.


Ne changez pas mes mots.... Prouve-nous que tu peux coder correctement un Expert Advisor en utilisant ton outil que j'ai écrit. Je veux toujours dire que...

Je n'ai jamais écrit que Molanis est votre outil. Si vous cherchez EABuilders sur Google, vous en trouverez d'autres. Peut-être que vous êtes un utilisateur du NoProgra Builder...

et vous pensez que c'est un outil qui peut coder correctement vos EA's pour MetaTrader4 alors prouvez-le avec ce constructeur.

Mais il y a des gens qui conseillent d'utiliser les EABuilders ou qui en font la promotion...

Si vous voulez promouvoir un produit, alors soyez sûr que ce produit est bon en le prouvant.

Et encore je n'ai pas vu quelqu'un réussir à le faire....

Le gros inconvénient de ces outils est qu'il y aura des gens qui penseront qu'il n'est pas nécessaire de connaître les bases du mq4, quand un outil peut faire votre produit.

Mais ils ne savent pas quelle qualité ils obtiennent.... de cet outil. Ou ils ne reconnaissent pas les erreurs dans les programmes qu'ils peuvent obtenir (gratuitement ou non) en utilisant l'internet.

 
RJo:

Merci pour votre diagnostic spécifique. Ah oui... vous n'en aviez pas.

Je vais vous donner un exemple précis...

int CLOSELONG(string symbol_c) {
 CloseAllPositions(symbol_c,OP_BUY,MagicNumberLong);
 CloseAllPositions(symbol_c,OP_BUY,MagicNumberLong);
 return(0);
}

//CLOSESHORT closes short positions
/*
*** Generated with Molanis Strategy Builder 3.1 ***
*** www.molanis.com ***
*** Released 2010-02-20 ***
*/
int CLOSESHORT(string symbol_c) {
 CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
 CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
 return(0);
}

Ces 2 fonctions appellent deux fois la même fonction... CloseAllPositions, la première pour les Longs, la seconde pour les Shorts... pourquoi fait-elle cela ? elle le fait pour nettoyer les ordres qu'elle n'a pas réussi à fermer la première fois que CloseAllPositions est exécuté, pourquoi ne parvient-elle pas à fermer les positions ? parce que la boucle utilisée pour fermer ces positions compte vers le haut et maintenant vers le bas... et vous savez déjà pourquoi cela échoue puisque vous avez lu le fil que j'ai créé sur ce sujet.

Donc, plutôt que de comprendre pourquoi certaines positions restent ouvertes, les bonnes gens de Molanis ont trouvé une solution... appeler la même fonction une deuxième fois pour faire le ménage après la première.

 

Merci de poster le code de Molanis, RJo, je le reverrai plus tard - le calcul des lots de Molanis est très mauvais. Je pense que les utilisateurs de Molanis / EA SB sont des utilisateurs heureux, jusqu'à ce qu'ils apprennent mql, et d'ici là ils verront Molanis / EA SB d'un point de vue totalement différent.

Je pense que nous devons d'abord défendre notre argent plutôt que de défendre Molanis/EA SB - ou notre décision d'en utiliser un ;).

 
RJo:
Indi :


Merci de poster les codes ....

Aussi bon que soit WHRoeder pour signaler les erreurs aussi rapidement, je ne le suis pas et cela n'a aucun sens de le répéter.

Mais si vous ne savez pas comment coder, vous pouvez faire autre chose que ce que vous voyez ici....

.

J'ai fait un test pour voir le comportement de l'indicateur et qui donne aussi une sorte d'avertissement fait deux images

Test sur 1 Minute (fait que l'EA ne trade pas) à partir du 1 jan 2012

Vous pouvez voir le comportement avant le test de l'indicateur dans cette image.

Et le comportement quand le test commence

Ce comportement vous le verrez aussi si vous placez dans le test un EA qui n'utilise pas l'indicateur.

.

Cela ressemble à un comportement totalement différent. C'est aussi un avertissement pour regarder de plus près le code ou le comportement de l'indicateur avant de l'utiliser.

.

Il semble que ce code de l'indicateur n'est pas fait par Molanis parce qu'il commence avec......

// This is Not Tested , Use At Your Own Risk !

//+--------------------------------------------------------------------------+
//| 3 MA Cross w_Alert v2.mq4                                                |
//| Copyright © 2005, Jason Robinson (jnrtrading)                            |
//| http://www.jnrtading.co.uk                                               |
//| 3 ma conversion and Alert , David Honeywell , transport.david@gmail.com  |
//| http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ |
//+--------------------------------------------------------------------------+

/*
  +-------------------------------------------------------------------------------+
  | Allows you to enter 3 ma periods and it will then show you and alert you at   |
  | which point the 2 faster ma's "OPEN" are both above or below the Slowest ma . |
  +-------------------------------------------------------------------------------+
*/   

Je pense que l'erreur de cet indicateur est qu'il calcule le futur.

   for(i = 0; i <= limit; i++)
    {
      
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
       {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
       }
      Range=AvgRange/10;
       
      fasterMAnow      = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+1);
      fasterMAprevious = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+2);
      fasterMAafter    = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i-1);
      
      mediumMAnow      = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i+1);
      mediumMAprevious = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i+2);
      mediumMAafter    = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i-1);
      
      slowerMAnow      = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i+1);
      slowerMAprevious = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i+2);
      slowerMAafter    = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i-1);
Quand " i = 0 " alors " i-1 " est futur.....
 
WHRoeder:

Ichi_Cloud_EA.mql4, sans ordre particulier

  1. Is_micro_account externe au lieu de le calculer via Market_info
  2. L'utilisation de micro_compte et de NormalizeDouble suppose que le lotStep est de 0,1 ou 0,01. Aucune autre valeur définie par le courtier n'est autorisée.
  3. externe FiveDigits au lieu de le calculer. Seulement le test pour 3 ou 5 permet des paires standard, des paires de type jpy. Négociation des métaux FAIL. Pourquoi le test pour les paramètres invalides.
  4. Le PipMultiplier global n'est jamais réinitialisé lors d'un changement de graphique.
  5. Beaucoup de bools externes ne peuvent pas être testés en stratégie.
  6. Aucune raison d'utiliser deux nombres magiques
  7. Négocie uniquement lorsque l'heure est comprise entre TradingStartTime et TradingEndTime. Pas de possibilité de définir une heure supérieure à minuit (par exemple, début 2000, fin 0600, c'est-à-dire uniquement pour la session de Sydney).
  8. Utilise PreviousBarCount==Bars. Les barres ne sont pas fiables (nombre maximum de barres dans le graphique). Le volume n'est pas fiable (vous pouvez manquer des ticks), utilisez toujours l'heure.
  9. utilise iClose(Symbol(),0,1) au lieu de la plus simple et rapide Close[1].
  10. dans Init Slippage = Slippage*PipMultiplier ; signifie que CHAQUE FOIS que vous changez de graphique (paire ou cadre temporel) le Slippage augmente de 3 , 30, 300, 3000 !!!
  11. magiccond et autres bool utilisent if (condition) boolVar= true ; else boolVar = false ; quand il pourrait utiliser le simplier boolVar = condition ;
  12. Ne met jamais en cache les valeurs si (iClose() <> iCustom()) les mêmes appels iClose et iCustom sont appelés 4+ fois.
  13. Le comptage s'effectue pendant la fermeture, la fonction est appelée deux fois. Compter vers le haut signifie qu'il manquera un ordre sur deux. Appeler la fonction deux fois signifie qu'elle échoue sur 4 ordres ouverts ou plus. Comptez toujours vers le bas.
  14. "M-ERROR : L'expiration doit être d'au moins 1 minute ", un message vient d'être publié à ce sujet, la période d'expiration devrait être supérieure à 10 minutes !
  15. Pour l'ordre en attente, appelle Normaliszedouble(price, Digits) qui ne fonctionnera pas si ticksize != Point

Étant le plus concerné par le numéro 10, j'ai enquêté en premier. J'étais en train d'écrire une énorme demande de support à Molanis quand j'ai trouvé ceci :

Le slippage tel qu'utilisé dans le code de l'EA est une variable entière externe (extern int).

"Avant l'exécution de init(), les variables externes obtiendront des valeurs définies par un utilisateur dans la barre d'outils des paramètres et à l'exécution de init(), les variables externes auront de nouvelles valeurs définies par un utilisateur. Ainsi, les nouvelles valeurs des variables externes deviennent valides à partir du moment où une nouvelle session (init - start - deinit) d'un Expert Advisor commence à partir de l'exécution de init()"(https://book.mql4.com/variables/types).

Il apparaît donc que... si les variables globales sont généralement ignorées au profit des anciennes valeurs à l'exécution de init(), les variables externes sont mises à jour à l'exécution de init(). Le slippage reste fixé à 3 (ou à la valeur que j'ai définie), quel que soit le nombre de fois où je change de graphique. Je pense que c'est ainsi que l'EA est conçu pour fonctionner.

 
RJo:
Il apparaît donc que... alors que les variables globales sont généralement ignorées en faveur des anciennes valeurs à l'exécution de init(), les variables externes sont mises à jour à l'exécution de init().

Le slippage reste fixé à 3 (ou à la valeur que je lui ai attribuée), quel que soit le nombre de fois où je change de graphique. Je crois que c'est ainsi que l'EA est conçu pour fonctionner.

FAUX Avez-vous seulement pris la peine de LIRE le lien que vous avez posté(https://book.mql4.com/variables/types) il est dit "Les variables globales sont initialisées une seule fois avant de déclarer l'exécution de fonctions spéciales".

Les variables globales et statiques sont définies lorsque l'EA est CHARGÉE et non pendant le cycle de désinit/init.

Ajoutez une déclaration d'impression juste après le Slippage = Slippage * 10 et exécutez-le et changez les graphiques ou les cadres temporels et regardez dans le journal si vous ne voulez pas croire la documentation de nous...