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

Corriger un code MQl4, besoin d'aide

  • gangstasiide

    bonsoir tout le monde, je suis nouveau sur le forex. là j'apprends la progragrammation mql4 et il y a un truc qui me bloque
    ecrire mon code de sorte que l'EA n'exécute qu'un seul ordre
    par exemple si j'ecris
    void OnTick()
    {
    //---
    iTicket=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",iMagic,0,Blue);
    }
    l'EA va exécuter plusieurs ordres au lieu d'un seul
    que mettre après ça pour qu'il n'en exécute qu'un seul
  • novatrice1

    Ce serait sympa si un ou plusieurs programmeurs pouvaient aider quelques débutants à débugger de petits codes simples
  • Papyrox

    Bonsoir,

    Voici un code réglé pour 1 trade par jour (D1), à modifier si nécessaire...

    Code
    //+------------------------------------------------------------------+ //| | //| | //| | //+------------------------------------------------------------------+ int iMagic = 123456; datetime lastTrade = EMPTY_VALUE; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(lastTrade != iTime( NULL, PERIOD_D1, 0)) // Changer la période souhaitée { lastTrade = iTime( NULL, PERIOD_D1, 0); // Changer la période souhaitée { //--- int iTicket=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",iMagic,0,Blue); } } } //+------------------------------------------------------------------+
  • novatrice1 — en réponse à Papyrox dans son message #104470

    Super !!!!
    Je vais essayer de comprendre ce qu’il y a écrit la et me faire les dents en modifient ce code .
    Merci
  • gangstasiide — en réponse à Papyrox dans son message #104470

    merci
    je vais essayer de le comprendre aussi et poster les résultats
  • Papyrox

    Ce code répond simplement à la question posée plus haut par Gangstasiid, il ouvre une position par jour à l'achat quel que soit le timeframe utilisé.
    PERIOD_D1 = 1 position par jour
    PERIOD_M1 = 1 position par minute
    PERIOD_H1 = 1 position par heure
    Etc...

    Pour l'utilisé avec le timeframe actif, pour ouvrir 1 position par bougie, remplacer:
    PERIOD_D1 par PERIOD_CURRENT

    Ceci dit, ce module n'a rien de stratégique, il ne ferme même pas les positions ouvertes. Tu peux nous en dire un peu plus sur ton projet?
  • gangstasiide — en réponse à Papyrox dans son message #104479

    Oui bien sur
    je veux ecrire un code pour trader les annonces economiques tres fortes
    la strategie est simple
    quelques minutes avant l'annonce
    l'EA place un BUYSTOP et un SELLSTOP
    c'est tout
    ça ressemble à un truc comme ça


    Code
    Extern int heureannonce = 8 ; extern int distance = 8; //+------------------------------------------------------------------+ void OnTick() { Int heureactuelle ; Heureactuelle=hour() ; If(heureannonce==heureactuelle) int iTicket=OrderSend(Symbol(),OP_BUYSTOP,1,Ask+distance,3,0,0,"",iMagic,0,Blue); int iTicket=OrderSend(Symbol(),OP_SELLSTOP,1,Ask+distance,3,0,0,"",iMagic,0,Blue); {

    là je suis en voyage
    mais demain des que je rentre je poste ce que j'ai ecris afin que t'y jette un coup d'oeil
    Modifié le 2016-02-18 13:10:30 par AliX
  • novatrice1

    Quelque un pourrait-il m’aider
    Dans un Tuto datant avant le build 600 je trouve les warning: return value of … should be checked après la compilation
    Dans toute mes recherche je n ais pas trouve solution à ce problème.
    Quelque un pourrait-il de que ça veut dire pour le compilateur, quel faute à t-il trouver et comment le résoudre.
    novatrice1 a joint une image
    corriger-un-code-mql4-besoin-d-aide-10183
  • gangstasiide

    j'ai eu le meme probleme
    try if (orderselect(.....) == true )
  • novatrice1

    Merci pour ta réponse gangstasilde, pourrais-tu être un peu plus explicite en ce qui concerne le codage en MQL 4 je suis débutant.
    Si j’ai bien compris il faut que je teste if orderselect(….) est égal a true
  • novatrice1

    Bonjour gangstasiide
    J aimerais te faire parvenir un code du tuto 4 qui ouvre et ferme des positions en fonction d’une MA
    Il marche sur le DAX et CO car les variables sont du type int le dax n a pas de virgule
    A la compilation tu auras 3 alarmes car le code date avant le build 600
    Le fichier TXT est trop grand pour le poster sur le forum
    novatrice1 a joint une image
    corriger-un-code-mql4-besoin-d-aide-10184
  • Wilaime49 — en réponse à Papyrox dans son message #104470

    svp pouvez vous m'aidé je veux créer un EA baser sur le croisement de deux Moyennes mobiles respectivement de 10 et 26 periode. il devrait prendre des positions automatiquement a chaque croisement de mes moyennes mobiles mais jarrive pas a taper un code correcte
  • kirby1 — en réponse à Wilaime49 dans son message #118440

    tu n'as que ça comme conditions ? 2 moyennes qui se croisent ?