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

Robot de trading

  • Harrakis

    @phil670

    j'ai résolu le pb en installant un indic laguerre que j'ai trouvé ici :

    http://forex-ex.com/indicators/indicator_name_l.html
  • miczou1

    j aurai besoin de toi fury j ai cru comprendre que tu touchais en prog
    j ai un indicateur et je voulais y integré une alerte sonore!
    crois tu que tu pourrais le faire?
    j essaye de conprendre la prog mq4 j en suis au debut et la je ne vois pas comment faire
  • furynick

    @PHIL
    Pas un pb avec le robot, comme l'indique Harrakis il faut installer un indicateur pour qu'EB3 puisse fonctionner. Les v1.05 et 1.06 fonctionnent de la même manière.

    @miczou1
    Pas de souci miczou, envoie-moi un mail avec le prog et à quel moment tu veux l'alerte sonore.
    nico_forex at furyweb point fr

    @MisterM
    Je ne pense pas qu'il y ait quelque chose qui cloche avec EB3 ... comme l'a dit Furax il fonctionne mieux en semi-auto
  • furynick

    @PHIL, il faut bien entendu lire Spoutnik et pas EB3 dans mon précédent message.
  • miczou1

    j ai envoyer le mail merci fury

    dis moi si tu l as bien recu
  • PHIL670

    @ Harrackis

    Merci pour le lien!
    Sinon, question bete,je prends lequel :)




    Laguerre MinusDi.mq4 [View]

    Laguerre PlusDi.mq4 [View]

    Laguerre RSI.mq4 [View]

    Laguerre.mq4 [View]

    Laguerre1.mq4 [View]

    LaguerreFast.mq4 [View]

    LaguerreVolume.mq4 [View]

    Laguerre_MinusDi.mq4 [View]

    Laguerre_PlusDi.mq4 [View]

    Laguerre_ROC.mq4 [View]

    Laguerre_RSI.mq4 [View]
  • Harrakis

    @Phil670

    Je savais pas non plus, alors je suis allé au plus simple ! j'ai pris le Laguerre.mq4 tt bête. pquoi se compliquer des fois :).
  • Harrakis

    3 positions positives sur 4 (erreur de ma part sur la perdante).

    je lui faisait pas trop confiance alors j'ai descendu les lots à 0.05. Même en démo je reste prudent :P.
    j'aurais pas du, avec des 0.1 il aurait cartonné !

    J'affine les réglages cet aprem, et c'est parti pour un gros test la semaine prochaine ^^
  • Harrakis

    voilà l'historique.

    le -15 c'est mon erreur de jugement.
    le perte profit à -3.96 est du aux tests de spoutnik, que crazy bot remonte tt doucement.

    Je cloture les positions manuellement car je trouve les TP un poil aberrants.
    Harrakis a joint une image
    G1343CB
  • antonin1021

    Se matin en ouvrant mon mon compte démo voila de quoi je me suis aperçu une magnifique surprise, plus aucun ordre d'ouvert quelqu’un a une explication?
    antonin1021 a joint une image
    G1345EE
  • antonin1021

    enfin la surprise c'est pas tous les ordres qui se sont fermer c'est plutôt la balance
  • Anonyme (invité)

    @Harakis
    il e ou l'auto trade sur le robot fou ?
  • Anonyme (invité)

    robot fou démarre pas
  • Harrakis

    @anonyme

    Tiens je te mets le code avec les modifs que j'utilise. Il peut mettre bcp de temps avant de prendre position. Le mieux c'est de le lancer le matin tôt et de le surveiller. Il est bon pour du semi-auto, en auto il est un peu casse-cou.
    Comme pour spoutnik, lance le qd tu sens que c'est bon pour rentrer sur le marché.
    Méfies toi des Stop Loss qui sont vraiment très short et très vite atteint. Si tu sens que la position est pas bonne, coupe là direct !

    Là je l'ai modifié pour qu'il prenne au max 4 positions par jour. Lots constants de 0.1. Time frame sur D1. Apperrement il fonctionne que sur EUR/USD.

    Code
    extern string rem1="//---- Definition Trend et Breakout"; extern int BreakoutPeriode=1; extern int TrendPeriode=3; extern string rem2="//---- Order"; extern bool OnlyShort=false; extern bool OnlyLong=false; extern int MaxTradesPerBar=4; extern int StopLoss=40; extern int BreakEven=30; extern int SeuilSL = 330; extern int PartialTP1=550; extern int PartialRatio1=30; extern int PartialTP2=1100; extern int PartialRatio2=70; extern int TakeProfit=1500; extern int Slippage=30; extern int MaxSpread=22; extern int Magic=12387; extern string rem3="//---- MM: 1.Fixed 2.Geometrical 3.Proportional 4.Smart 5.TSSF"; extern int MMType=1; extern double FixedLots=0.1; extern int GeometricalFactor=50; extern int ProportionalRisk=90; extern int LastXTrades=10; extern double DecreaseFactor=2; extern double TSSFTrigger1=1; extern int TSSFRatio1=50; extern double TSSFTrigger2=2; extern int TSSFRatio2=75; extern double TSSFTrigger3=3; extern int TSSFRatio3=100; extern string rem4="//---- Debug"; extern bool DebugMode=false; double Lots; bool SignalBuy=false; bool SignalSell=false; double highrange, lowrange; double trend, trend1, signaltrend; datetime LastTradeTime=0; int MaxTrades=false; int FlagPartial=0; int OrdersThisBar; int orders; int losses; int nbDecimales; int i; int tradegagnant,tradeperdant; double profit, perte, avgwin, avgloss, prcwin, tssf; bool TradingRange; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- nbDecimales = 5; double tempPoint = Point; while(tempPoint < 1) { tempPoint *= 10; nbDecimales++; } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (OrdersTotal()>0) OrdersList(); if (OrdersTotal()<1) FlagPartial=0; highrange=High[iHighest(NULL,0,MODE_HIGH,BreakoutPeriode,1)]; lowrange=Low[iLowest(NULL,0,MODE_LOW,BreakoutPeriode,1)]; trend=iMA(NULL,0,TrendPeriode,0,MODE_SMMA,PRICE_MEDIAN,0); trend1=iMA(NULL,0,TrendPeriode,0,MODE_SMMA,PRICE_MEDIAN,1); signaltrend=trend-trend1; if (Time[0]==LastTradeTime&&OrdersThisBar>=MaxTradesPerBar) {MaxTrades=true;} else {MaxTrades=false;} if (Time[0]!=LastTradeTime) {OrdersThisBar=0;} if (Close[0]==High[0] &&Close[0]>highrange &&signaltrend>0 &&OrdersTotal()<1 &&MaxTrades==false &&Ask-Bid<=MaxSpread*Point &&!OnlyShort) SignalBuy=true; if (Close[0]==Low[0] &&Close[0]<lowrange &&signaltrend<0 &&OrdersTotal()<1 &&MaxTrades==false &&Ask-Bid<=MaxSpread*Point &&!OnlyLong) SignalSell=true; //+------------------------------------------------------------------+ //| Money Management | //+------------------------------------------------------------------+ if (SignalBuy==true||SignalSell==true) { if (MMType==1&&OrdersTotal()<1)Lots=FixedLots; if (MMType==2&&OrdersTotal()<1)Lots=0.1*MathSqrt(AccountBalance()/1000)*GeometricalFactor; if (MMType==3&&OrdersTotal()<1)Lots=AccountEquity()/Close[0]/1000*ProportionalRisk/100; if (MMType==4&&OrdersTotal()<1) {orders=HistoryTotal(); // Historique des ordres losses=0; // Nombre de trade perdants consécutifs Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/10000,1); for(int i=orders-1;i>=orders-LastXTrades;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==False) { Print("Erreur dans l historique!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) Lots=NormalizeDouble(Lots-Lots*losses/DecreaseFactor,1); } if (MMType==5&&OrdersTotal()<1) { orders=HistoryTotal(); tradegagnant=0; tradeperdant=0; profit=0; perte=0; avgwin=0; avgloss=0; prcwin=0; tssf=0; for(int j=orders-1;j>=orders-LastXTrades;j--) { if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==False) { Print("Erreur dans l historique!"); break; } if(OrderProfit()>=0) { tradegagnant++; profit=profit+OrderProfit(); } else { tradeperdant++; perte=perte+OrderProfit(); } } if (orders>LastXTrades)avgwin=profit/tradegagnant; if (orders>LastXTrades)avgloss=perte/tradeperdant; if (orders>LastXTrades)prcwin=tradegagnant/(tradegagnant+tradeperdant); if (orders>LastXTrades)tssf=avgwin/avgloss*((1.1-prcwin)/(prcwin-0.1)+1); if(tssf<=TSSFTrigger1)Lots=0.1; if(tssf>TSSFTrigger1&&tssf<=TSSFTrigger2)Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/TSSFRatio1*100/100000,1); if(tssf>TSSFTrigger2&&tssf<=TSSFTrigger3)Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/TSSFRatio2*100/100000,1); if(tssf>TSSFTrigger3)Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/TSSFRatio3*100/100000,1); } Lots = arrondirLots(Lots); double minLot = MarketInfo(Symbol(), MODE_MINLOT); double maxLot = MarketInfo(Symbol(), MODE_MAXLOT); if (Lots<minLot)Lots=minLot; if (Lots>maxLot)Lots=maxLot; } //+------------------------------------------------------------------+ //| Passage des ordres | //+------------------------------------------------------------------+ if (SignalBuy==true) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"MindFulNess",Magic,Blue); SignalBuy=false; LastTradeTime=Time[0]; OrdersThisBar++; } if (SignalSell==true) { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MindFulNess",Magic,Red); SignalSell=false; LastTradeTime=Time[0]; OrdersThisBar++; } if (DebugMode==true) { Comment ( "OboTrading, @2009 Christophe Sangouard", "\nStopLoss="+StopLoss*Point, "\nStopLevel="+DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL),0), "\nSpread= "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),0), "\nLastError="+GetLastError() ); } //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ void OrdersList() { for (int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS); if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic) { if (OrderType()==OP_BUY) { //---- BreakEven if (BreakEven>0 &&Bid-OrderOpenPrice()>Point*BreakEven &&NormalizeDouble(OrderStopLoss(),nbDecimales)<NormalizeDouble(OrderOpenPrice(),nbDecimales)) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,LightGreen); return(0); } //---- Augmentation du SL au delà de zéro if (SeuilSL>0 &&Bid-OrderOpenPrice()>Point*SeuilSL &&NormalizeDouble(OrderStopLoss(),nbDecimales)<NormalizeDouble(OrderOpenPrice()+StopLoss*Point,nbDecimales)) { OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+StopLoss*Point,nbDecimales),OrderTakeProfit(),0,LightGreen); return(0); } //---- PartialTP1 if (Bid-OrderOpenPrice()>Point*PartialTP1&&FlagPartial==0&&PartialTP1>0&&OrderLots()*PartialRatio1*PartialRatio2/10000>=0.1) { OrderClose(OrderTicket(),arrondirLots(OrderLots()*PartialRatio1/100),Bid,Slippage,Red); FlagPartial=1; return(0); } //---- PartialTP2 if (Bid-OrderOpenPrice()>Point*PartialTP2&&FlagPartial==1&&PartialTP2>0) { OrderClose(OrderTicket(),arrondirLots(OrderLots()*PartialRatio2/100),Bid,Slippage,Red); FlagPartial=2; return(0); } } if (OrderType()==OP_SELL) { //---- BreakEven if (BreakEven>0 &&OrderOpenPrice()-Ask>Point*BreakEven &&NormalizeDouble(OrderStopLoss(),nbDecimales)>NormalizeDouble(OrderOpenPrice(),nbDecimales)) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Yellow); return(0); } //---- Augmentation du SL au delà de zéro if (SeuilSL>0 &&OrderOpenPrice()-Ask>Point*SeuilSL &&NormalizeDouble(OrderStopLoss(),nbDecimales)>NormalizeDouble(OrderOpenPrice()-StopLoss*Point,nbDecimales)) { OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-StopLoss*Point,nbDecimales),OrderTakeProfit(),0,LightGreen); return(0); } //---- PartialTP1 if (OrderOpenPrice()-Ask>Point*PartialTP1&&FlagPartial==0&&PartialTP1>0&&OrderLots()*PartialRatio1*PartialRatio2/10000>=0.1) { OrderClose(OrderTicket(),arrondirLots(OrderLots()*PartialRatio1/100),Ask,Slippage,Red); FlagPartial=1; return(0); } //---- PartialTP2 if (OrderOpenPrice()-Ask>Point*PartialTP2&&FlagPartial==1&&PartialTP2>0) { OrderClose(OrderTicket(),arrondirLots(OrderLots()*PartialRatio2/100),Ask,Slippage,Red); FlagPartial=2; return(0); } } } } } double arrondirLots(double nbLots) { double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP); double tempDouble = nbLots + lotStep/2; tempDouble /= lotStep; int tempInt = tempDouble; return (tempInt*lotStep); }
  • MisterM (invité)

    j'ai un petit indicateur j'aimerai en faire un EA quelqu'un avec une bonne volonté pourrait M'aidé :D
  • sidermex

    Dit nous en plus sur cet indicateur :)
  • MisterM

    En faite c'est le simple indicateur Buy And Sell

    mais avant hier avant la fermeture des marchés j'y ai jeté un coup d'œil et en auto il pourrait juste faire a la lettre comme l'indicateur et ça serai parfait :)
  • Furax

    J'ai un problème... j'ai bloqué le back test...:)
    Furax a joint une image
    G1358HC
  • shock

    Hello !

    Furax,

    Peux tu me dire quels sont les indicateurs utilisés
    sur ton screen ci joint ?

    Merci.

    Fred.
    shock a joint une image
    G1359HE
  • Furax

    c'est les indicateurs de Yorgo, rien de particulier.