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

Language MT4 et MQL besoin d'aide pour un EA

  • adelmegharbi8

    Bonsoir tout le monde je suis nouveau ici, déja deux ans que je spécule sur le marché financier, et par dessus ça j'aime l'informatique en unissant les deux ont peut atteindre de bon résultats.

    J'ai donc cherché une strategie de trading sur prorealtime qui m'a donné de bon resultat sur une période d'une année, mais language qui en est généré n'est malheureusement pas valable sur MetaTrader j'ai donc essayé de me mettre au mql et cela fait plusieurs jour que je bloque sur les conditions que je veux appliquer a mon Expert advisor, je sais il y a plusieurs erreurs, j’espère que vous pourrait méclairer:

    Code
    int iRSI; int init() { var1 = iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0); var2 = iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,4); itotal = OrdersTotal(); return(0); } int start() { if( itotal < 4 ) { if(var1 > var2) { int buyticket1 = OrderSend(Symbol(),OP_BUY,2,Ask,3,5,15,NULL,0,0,Green); } else{ int buyticket2 = OrderSend(Symbol(),OP_SELL,2,Ask,3,5,15,NULL,0,0,Red); } } return(0); }


    En gros ce que je veux faire c'est placé un ordre d'achat quand la valeur de la période actuel de l'indicateur "rsi" est supérieur a la valeur du "rsi" 4 période avant, et vendre dans le cas contraire c'est à dire quand la valeur du rsi actuel est inferieur a celle de 4 période anterieur bien évidemment avec ses stoploss tout ça.
    Merci la communauté !
    Modifié le 2018-07-06 09:04:06 par AliX : [code][/code]
  • kaliloup

    Bonjour , je suis en vacance et n'ai pas moyen de tester quoi que ce soit sur mt4 don c je vais faire de mon mieux pour vous aider.
    déjà, normalement et si je ne me trompe pas : int iRSI; n'a pas besoin d'être déclaré. Ensuite si vous pouviez me coller les erreurs de votre compilation cela m'aiderais beaucoup.
  • riden

    Salut,
    J'ai rédigé rapidement un morceau de code. Essayes et tiens-moi au courant :)


    Code
    int magic = 3677; bool hedge = false; //si la condition de vente est remplie et qu'une position d'achat est ouverte alors la position d'achat se cloture pour ne pas entrer en hedge // si true alors le hedge est permis int nb_pos_max_tot = 4; // le nombre de positions maximal sur tous les graph. int nb_pos_max = 2; // le nombre de positions maximal / paire de devise bool cons_pos_man = false; // considérer les positions ouvertes manuellement ou à travers d'autre EA dans le nb_pos_max (comptées mais pas gérées) // false càd ne prendre en considération que les positions ouverte par cet EA double var1,var2; int buyticket1, sellticket1; int nb_pos(string ou, string type){ int k; int res=0; if(OrdersTotal()==0) return(0); for(k=OrdersTotal()-1;k>=0;k--){ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)){ if( (OrderMagicNumber() == magic) || (cons_pos_man) ){ if( (ou=="ici") && (OrderSymbol()==Symbol()) ){ if( (type=="achat") && (OrderType()==OP_BUY) ){ res++; } if( (type=="vente") && (OrderType()==OP_SELL) ){ res++; } if (type=="achat/vente") { res++; } } if (ou=="partout") { if( (type=="achat") && (OrderType()==OP_BUY) ){ res++; } if( (type=="vente") && (OrderType()==OP_SELL) ){ res++; } if (type=="achat/vente") { res++; } } } } return(res);} return(res); } void close_pos (string type){ int k; bool temp; if(OrdersTotal()==0) return; for(k=OrdersTotal()-1;k>=0;k--){ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)){ if(OrderMagicNumber() == magic){ if(OrderSymbol()==Symbol()){ if((type=="vente") && (OrderType()==OP_SELL)) temp = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,CLR_NONE); if((type=="achat") && (OrderType()==OP_BUY)) temp = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,CLR_NONE); }}}} } int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if (hedge==true) { if( (nb_pos("ici","achat/vente")>=nb_pos_max) || (nb_pos("partout","achat/vente")>=nb_pos_max_tot) ) return;} var1 = iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0); var2 = iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,4); if(var1>var2){ if(hedge==false){ close_pos("vente"); } if( (nb_pos("ici","achat/vente")<nb_pos_max) && (nb_pos("partout","achat/vente")<nb_pos_max_tot) ){ buyticket1 = OrderSend(Symbol(),OP_BUY,2,Ask,3,5,15,NULL,0,0,CLR_NONE);}} if(var1<var2){ if(hedge==false){ close_pos("achat"); } if( (nb_pos("ici","achat/vente")<nb_pos_max) && (nb_pos("partout","achat/vente")<nb_pos_max_tot) ){ sellticket1 = OrderSend(Symbol(),OP_SELL,2,Bid,3,5,15,NULL,0,0,CLR_NONE);}} }