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

SCALPING MODULO

  • lefeuvr3

    EURUSD 1 minute

    Code
    //+------------------------------------------------------------------+ //| SCALPING MODULO //| //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| PARAMETRES EURUSD 1 MN | //+------------------------------------------------------------------+ int MagicNumber=01012020; //magic extern string Name_EA = "MODULOLG SH TP SL MULTIBUY MULTISELL"; extern double LotFactorLONG=300 ; // double LotFactorSHORT = 130; //lotsize factor extern double MultiplierLONG = 0.2; // double MultiplierSHORT = 0.7; //from 0.04...to 0.09 extern double multiplier1=10; extern double multiplier2=14; extern double multiplier3=3; extern double multiplier4=3; extern double multiplier5=6; extern double multiplier6=4; int long_courtLONG=1; // 0 = Long & 1 = Court int long_courtSHORT=1; // 0 = Long & 1 = Court extern int gainLONG=100; // no comment ;) extern int gainSHORT=300; // no comment ;) input int ecartLONG=82;// Ecart : 150, 1000, ou 1500 selon les paires.. int ecartSHORT=18;// Ecart : 150, 1000, ou 1500 selon les paires extern bool trail=true; extern double TrailingStop=48; double pips = 0.00001; //leave as default for 5 digit brokers int stopOK = 0; // ne pas modifier int sendOK = 0; // ne pas modifier int hour=23; int c=0; double LotSizeLONG; //lotsize double SizeLotLONG; double LotSizeSHORT; //lotsize double SizeLotSHORT; int stop =75; extern int Slippage =0; //---- double TP=0,SL=0,TR; //+------------------------------------------------------------------+ //| Hidden StopLoss Calculations | //+------------------------------------------------------------------+ void StopLoss() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; SL=stop*MyPoint; double OrdP=0,OrdTP=0,OrdSL=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderMagicNumber()==MagicNumber && Symbol()==OrderSymbol()) { OrdP=OrderProfit()-MathAbs(OrderSwap())-MathAbs(OrderCommission()); OrdSL=(-1)*SL*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point; OrdTP=TP*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point; if(OrdP>OrdTP || OrdP<OrdSL) { if(OrderType()==OP_BUYSTOP) bool OrdClP=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red); if(OrderType()==OP_SELLSTOP) bool OrdClL=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue); } } } } //+------------------------------------------------------------------+ //| Trailing Stoploss après Breakeven | //+------------------------------------------------------------------+ void trail() { for (int i = OrdersTotal()-1; i >= 0; i --) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUYSTOP) { if(Bid - OrderOpenPrice() > TrailingStop *10* MarketInfo(OrderSymbol(),MODE_POINT)) { if(((OrderStopLoss() < Bid - TrailingStop *10* MarketInfo(OrderSymbol(), MODE_POINT))&& ((Bid-OrderOpenPrice())>(Point*TrailingStop)))|| (OrderStopLoss()==0)) { bool modify1=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Red); } } } else if(OrderType()==OP_SELLSTOP) { if(OrderOpenPrice()-Ask>TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT)) { if(((OrderStopLoss()>Ask+TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT))&& ((OrderOpenPrice()-Ask)>(Point*TrailingStop)))|| (OrderStopLoss()==0)) { bool modify2=OrderModify(OrderTicket(),OrderOpenPrice(), Ask+TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Blue); } } } } } } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(trail) trail(); double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; if(IsNewCandle()) { Lot_Volume(); //calc lotsize return(0); } //MODIF*********** if(c==0){if(OrderSend(Symbol(), OP_BUYSTOP, SizeLotLONG, Ask, 0, Ask - (stop * Point),0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red))c=1;} // if(c==0){if(OrderSend(Symbol(), OP_BUYSTOP, SizeLotSHORT, Ask, 0, Ask - (stop * Point),0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red))c=1;} // //MODIF*********** Comment(AccountEquity() - AccountBalance()); int type = OrderType(); int type2 = OrderType(); if (Hour()==1 && Minute()==1 && Seconds()==1 && sendOK==0) { sendOK=1;stopOK=0; //+------------------------------------------------------------------+ if(long_courtLONG==1) { { { { { { { { { { { { int ticket1= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier1*pips, 0,0,0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket2= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier2*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket3= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier3*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket4= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier4*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket5= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier5*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket6= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*multiplier6*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); if(long_courtSHORT==1) { { { { { { { { { { { { int ticket7= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier1*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket8= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier2*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket9= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier3*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket10= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier4*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket11= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier5*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); int ticket12= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*multiplier6*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Blue); if(ticket1<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket2<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket3<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket4<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket5<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket6<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket7<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket8<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket9<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket10<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket11<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket12<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } } } } } } } } } } } } } //+------------------------------------------------------------------+ if(long_courtLONG==0) { { { { { { { { { { { { int ticket13= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier1*pips ,0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket14= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier2*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket15= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier3*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket16= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier4*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket17= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier5*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket18= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*multiplier6*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); if(long_courtSHORT==0) // if (!IsTradeContextBusy() && IsTradeAllowed()) { { { { { { { { { { { { int ticket19= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier1*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket20= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier2*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket21= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier3*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket22= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier4*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket23= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier5*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket24= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*multiplier6*pips, 0, 0, 0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); if(ticket13<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket14<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket15<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket16<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket17<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket18<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket19<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket20<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket21<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket22<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket23<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket24<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } } } } } } } } } } } } } } //+------------------------------------------------------------------+ if (Hour()>=hour && stopOK==0) { stopOK=1;sendOK=0; int u = OrdersTotal() - 1; while (u >= 0) { if(OrderSelect(u, SELECT_BY_POS)) if (type == OP_SELLSTOP || type == OP_BUYSTOP) { bool modif3= OrderDelete(OrderTicket()); } u -= 1; } } if (AccountEquity()>= AccountBalance()+ gainLONG) if (AccountEquity()>= AccountBalance()+ gainSHORT) { int w = OrdersTotal() - 1; while (w >= 0) { if(OrderSelect(w, SELECT_BY_POS)) { bool modif1= OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID),2); bool modif2= OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK),2); } w -= 1; } //MODIF*********** // if (!IsTradeContextBusy() && IsTradeAllowed()) int ticket25=OrderSend(Symbol(), OP_BUYSTOP, SizeLotLONG, Ask, 0, Ask - (stop * Point),0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); int ticket26=OrderSend(Symbol(), OP_BUYSTOP, SizeLotSHORT, Ask, 0, Ask - (stop * Point),0, "MODULOLG SH TP SL MULTIBUY MULTISELL",MagicNumber,0 , Red); //--- place market order to buy 1 lot if(ticket25<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); if(ticket26<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); //MODIF*********** } return(0); } //+------------------------------------------------------------------+ //insuring its a new candle function //+------------------------------------------------------------------+ bool IsNewCandle() { static int BarsOnChart=0; if (Bars == BarsOnChart) return (false); BarsOnChart = Bars; return(true); } //+------------------------------------------------------------------+ //Calculates Lot Size based on balance and factor //+------------------------------------------------------------------+ double Lot_Volume() { LotSizeLONG=AccountEquity() * 0.01 /LotFactorLONG ; SizeLotLONG=LotSizeLONG*MultiplierLONG; return(LotSizeLONG); return(SizeLotLONG); LotSizeSHORT=AccountBalance() * 0.01 /LotFactorSHORT ; SizeLotSHORT=LotSizeSHORT*MultiplierSHORT; return(LotSizeSHORT); return(SizeLotSHORT); } //+------------------------------------------------------------------++
    lefeuvr3 a joint une image
    scalping-modulo-11982
  • Fred-FX — en réponse à lefeuvr3 dans son message #118104

    Bonjour, j'ai fait le teste mais la qualité du modelage ne dépasse pas les 25 % sur backtest , il faut au moins 90 % pour dire que la qualité du EA soit bonne .
  • lefeuvr3

    J'en suis désolé mais ma plateforme n'arrive pas a faire mieux...j'ajuste sur le live !
  • lefeuvr3

    Si vous voulez mettre la main à la pate dans le programme pour l' améliorer et le backtester efficacement ,cela serait sympa....depuis que je met des programmes ,pour le moment, personne n' encore bouger ne serait ce qu'une virgule !....ou mis un résultat de backtest !
  • Fred-FX

    Justement je suis occuper a regarder , il est pas mal quand même , je le teste sur 3 ans en M5 (backtest ) et je vais le faire tourner toute la nuit un peut plus lentement ,;j'aurais le résultat demain matin .
  • stani — en réponse à lefeuvr3 dans son message #118109

    lefeuvr3, le 28/01/2020 dit :
    Si vous voulez mettre la main à la pate dans le programme pour l' améliorer et le backtester efficacement ,cela serait sympa....depuis que je met des programmes ,pour le moment, personne n' encore bouger ne serait ce qu'une virgule !....ou mis un résultat de backtest !


    Oui bien sur tu doit te sentir un peut seul, je le conçois, mais cela est peut être dû au fait que tu ne donne aucune information sur ce que tu essaye de faire, c'est un peu un jeu de devinette pour les autres. Qui plus est, ta façon de coder est assez particulière, ce qui ne rend pas les choses ni très claires ni très facile.
    Code tu toi même ou utilise tu un logiciel pour cela ?
  • lefeuvr3

    Je n'utilise pas de logiciel .
    Il suffit de lire les programmes pour en comprendre le fonctionnement....tout y est ....parfois c'est le programme lui même qui s'auto-réalise quant on le met a l’épreuve et qui suggère des modifications.
    De manière général j'essaye d’éviter l'utilisation d'indicateurs ( leurs périodes sont trop fluctuantes et se désynchronisent en permanence)
    Modifié le 2020-01-28 22:11:55 par lefeuvr3 : rajout dans le post
  • wisdome

    Salut moi c' Wisdome ne vous inquiéter plus
    je vous proposes de trader en automatique et vous n 'aurez plus de problèmes
    https://bit.ly/310S9aA
  • jbaptiste

    En 2018 je te faisais remarqué que ton code était pas beau.
    Je t avais invité a faire un truc propre avec des classes et des objets réutilisables ce qui auraient permis qu on bosse a plusieurs sur 1 project propre. Je crois que tu étais parti un peu sur la défensive en prétextant un manque de temps et que tu n étais pas un developpeur expert.

    Pourtant j'avais pris du temps pour regarder tous tes EA et je me souviens très bien qu ils faisaient n'importe quoi.
    En nettoyant ton code et en enlevant les dizaines et les dizaines de lignes inutiles, j'ai compris que la moitié de tes conditions étaient non fonctionnelles. Le rendu était en faite complètement aléatoire.
    Et puis je t'ai vu continuer a poster frénétiquement des codes, tous les jours, du code toujours aussi sale.
    Et la j'ai laché l'affaire, d'autant plus que ça commençait a bien rouler pour moi.

    La situation est toujours la même. Ton code est toujours aussi moche, toujours aussi illisible.
    Si tu veux partager du code, la moindre des choses c'est de ne pas présenter un torchon que tu ne comprends même pas :(
  • lefeuvr3

    jbaptiste,
    il serait interressant que tu postes un code propre et lisible qui fonctionne pour voir à quoi cela ressemble.
    La démarche en serait que plus constructive pour moi et les autres lecteurs du forum
    Merci pour ton intervention
    Bonne journée
    Au plaisir de te lire.
  • jbaptiste

    Bonjour,

    Mais du code bien écrit il y en a partout sur internet et tu en as déjà vu puisque tu ne pars jamais de rien.
    On voit que tu composes sur du code déjà existant.

    Il faut que tu penses à tes lecteurs, on doit lire ton code comme un livre.
    SURTOUT sur du code voué a être participatif alors que ton code est très désorganisé.
    Il y' a des bonnes pratiques en programmation, il faut les respecter, sinon tu ne te feras jamais comprendre.

    Le nommage est important, autant celui des variables que des fonctions.
    Il existe plusieurs conventions, il faut en choisir une et s'y tenir.
    Toi malheuresement tu les utilises toutes, ou aucune, on sait pas du coup.

    La fonction StopLoss() c'est un coup bas.
    D'emblée je ne sais pas vraiment ce qu elle fait.
    Je me doute bien qu elle a un rapport avec le StopLoss mais quel rapport exactement ?
    Le StopLoss de qui de quoi ? Son nom ne veut rien dire a part stop loss.
    Alors je suis obligé de la comprendre par le code.
    Pareil pour trail()


    Ensuite les imbrications des if comme ça, c'est totalement proscrit :

    if(long_courtLONG==1) //vraiment ces noms de variables c'est pas possible hein ...

    {
    {
    {
    {
    {
    {
    {
    {
    {
    {
    {
    {

    3 étages max, mais 12 comme ça non ... c'est signe que le code doit être écrit autrement.

    Tu programmes de manière procédurale,c est ça qui te perd.
    On fini tous pareil quand on code procédural, dans un bordel organisé ou seul le proprio s y retrouve.
    Tu dois t intéresser aux classes, aux objets, surtout pour un algo de trading qui se doit d être facilement tweakable.
    Ton code sera réutilisable d un projet a un autre sans copié/collé, tu y gagneras en clareté, en modularité, en maintenance et plus open donc propices aux participations extérieures.
  • lefeuvr3

    Je code ...je code ...je fais ce que je peux ...ici personne ne mets un programme de trading ....j'ai bien cherché un des tiens mais ,je n'en ai pas trouvé.
    J’étais médecin ,pas informaticien .
    J'en suis vraiment désolé
    Bonne journée
    Gerard
  • billyTom

    Bonjour,

    Je pense que vous êtes tout les 2 de pleins de bonnes intentions pour faire vivre ce forum et je vous en remercie.
    C'est tous ce que je retiens ;)

    Après nous sommes tous perfectible moi le premier et croyez moi y a du taff :P

    Merci,
  • jbaptiste — en réponse à lefeuvr3 dans son message #118124

    lefeuvr3, le 29/01/2020 dit :
    Je code ...je code ...je fais ce que je peux ...ici personne ne mets un programme de trading ....j'ai bien cherché un des tiens mais ,je n'en ai pas trouvé. J’étais médecin ,pas informaticien . J'en suis vraiment désolé Bonne journée Gerard


    Les mêmes excuses qu'il y' a 2 ans.
    Bref, apprend les objets, les classes, apprend a construire une application proprement.
    Ou alors continue de poster des codes illisibles ici si ça te plait, mais te plaint pas de n'avoir aucune coopération.