Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Variable figée, à n'y rien comprendre !

  • Nicolab

    Bonjour,

    ça fait 3 jours que je bataille sur un EA pour au final m'apercevoir que l'erreur vient d'une valeur d'un tableau qui est figée :

    Code
    int trade.idx = 0; // Index du dernier trade qui sert aussi de compteur de trade dans le référentiel int trade.magicNumber[]; // MagicNumber du trade int trade.tickets[]; // Tickets des trades int trade.op[]; // Type d'opération OP_BUY, OP_SELL ... http://docs.mql4.com/constants/trading int addRefTrade(string type, int ticket, int op = -1) { if(ticket < 1 || op == -1) return (-1); trade.idx++; ArrayResize(trade.tickets, trade.idx); ArrayResize(trade.op, trade.idx); ArrayResize(trade.type, trade.idx); ArrayResize(trade.status, trade.idx); ArrayResize(trade.magicNumber, trade.idx); trade.tickets[ trade.idx ] = ticket; trade.op[ trade.idx ] = op; trade.type[ trade.idx ] = type; trade.magicNumber[ trade.idx ] = MagicNumber; // Affiche : idx=2, op param=1, op array=0 Print("idx="+trade.idx+", op param="+op+", op array="+trade.op[ trade.idx ]); return (trade.idx); }

    trade.op[ trade.idx ] = op; ne modifie pas la valeur trade.op[ trade.idx ] ! Pourtant l'index lui est incrémenté correctement, je m'y arrache les cheveux, y aurait il une subtilité du langage qui provoque ça ?

    En fait le but ici est de référencer tous les trades avec leurs données dans un tableau, si quelqu'un a une autre solution je suis preneur.
  • Nicolab

    J'ai trouvé, voici la solution si ça peut servir :
    en fait j'ai testé idx+2 et ça fonctionne, donc c'est un problème de taille du tableau. Faudra que je recycle (via une fonction qui s'enclenche toutes les n itérations) les entrées (trades fermés) du tableau pour éviter de saturer la mémoire si l'EA tourne plusieurs jours.

    Une gestion des tableaux dynamiques serait plus pratique ...