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

  • MisterM (invité)

    Ouaii Spout niikkk mon compte a moi aussi et en réel ^^ enfin bon je comprend pas furax tu nous montre des belles performance et la soudainement ca fait un bordel pour quoi ?
  • Furax

    si tout était simple il y a aurait 2 solutions :
    Nous serions tous riches ou les EA seraient interdits...
  • Harrakis

    J'ai mis la main sur le code source d'un EA cette nuit.
    j'ai fait plusieurs backtests dessus et les résultats sont hallucinants. Tellement que je me demande si c'est pas un piège pour avoir des visites sur le site ou un genre de rémunération par clic. Le résultat du backtest etait affiché en gros sur le site avec un lien pour le telecharger.
    Ce qui me met la puce à l'oreille, c'est qu'en backtest il fonctionne nikel. Mais en live pas moyen d'ouvrir un trade.

    800000€ en 2ans et en bidouillant un peu, 18 milliards sur 2ans (là mais MDR quoi)

    voilà le code source pour ceux qui veulent faire joujou, ou trouver pkoi il démarre pas

    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=3; 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=2; extern double FixedLots=0.1; extern int GeometricalFactor=3; 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); }
    Harrakis a joint une image
    G1302GE
  • furynick

    je regarderai ça à l'occasion.
  • Harrakis

    Il m'a ouvert 4 positions pour le moment, toutes rouges. C'est assez fidèle au journal du backtest en fait. je vais le laisser tourner pour le fun.

    mais je pense que le SL est trop limite, il cloture quasiement en suivant lol.
    Harrakis a joint une image
    G1303EC
  • Harrakis

    arf, désolé c'est pas la bonne image. c'est un test que j'ai fait sur un autre EA ...

    Voivi celle du Trader fou :
    Harrakis a joint une image
    G1304CA
  • Maka1043

    J'ai laissé tourner Spoutnik toute la nuit.

    Ce matin, j'ai vu que j'avais perdu de l'argent (sur un compte démo).

    En regardant l'historique des trades, je vois que Spoutnik a acheté de EUR/JPY; le cours est descendu, à atteint le S/L...donc clôture des positions....avant de remonter et de générer un profit.

    Je pense pour qu'il ne spout nike pas le compte, la version 1.05 (sans le S/L) apparait comme meilleure.

  • furynick

    Il suffit d'augmenter le stoploss dans les paramètres, disons un peu avant le margin call juste au cas où.
  • MisterM (invité)

    je repet encore ^^
    mais il n'y a pas de T/P Pour moi normal ?
  • furynick

    Si j'ai bien lu, les profits sont gérés directement par le robot.
  • Harrakis

    Alors aujourd'hui c'était une journée de tests pas banale.

    Pour ceux qui ont pas suivi, j'ai mis le code d'un robot qui promet au minimum 800000€ en 2 ans. Le backtest à l'appui sur le site source que je ne citerais pas :).

    Pour le fun car n'y croyant pas 1s, je me suis lancé dans les tests. J'ai backtesté à mort en suivant les même protocoles que l'auteur. Pour m'apercevoir que sa modélisation n'était fiable qu'a 42% (lol).J'ai donc fait ma propre modélisation avec des sources sûre à 90%, et la surprise, j'obtiens la même courbe que lui mais dans l'autre sens (re lol). Mr l'auteur, faut-il lire votre courbe à l'envers ??.

    Pour les tests en live, il prend bien des positions, mais il les perd toutes ou cloture à 00.
    Là ça devient carrément poilant. En fouillant un peu sur le fofo du site source, je trouve un fil expliquant qu'il manque quelques settings au code pour le faire fonctionner correctement et l'auteur se propose de les fournir via un système allopass.
    Sans me vanter, je hante le Web depuis 15ans et allopass j'arrive à le contourner sans tp de pb. Donc je test et je tombe sur le lien des settings, clickage sur download et là une belle erreur 404 !
    Halala le web, paradis des arnaqueurs :)

    Voilà, un post qui sert à rien mais je me suis bien marré.

    Les trades du bot qui gagne en négatif :
    Harrakis a joint une image
    G1312HD
  • antonin1021

    qu'elle sont tes parametre exterieur, en backtest il m'ouvre aucune position? et le time frame

    @furax
    spoutnik ne m'ouvre aucune position depuis sa matin 7h!
  • Harrakis

    @antonin

    Tu parles de quel EA, le robot fou ? ou mégadroid ?
  • Furax

    Comment gagner , avec 1000€, 250€ en 1 heures avec Spoutnik v1.06

    J'ai déjà expliqué qu'il fallait lancer le robot au bon moment...
    Furax a joint une image
    G1316DC
  • Furax

    une fois calé et lancé, Spoutnik choisit les parités au fur et à mesure de la progression et en vitesse de croisière.
    Furax a joint une image
    G1317BD
  • Furax

    Le money managment est automatique sur Spoutnik.

    à partir d'environ 2100€ les lots doubles pour passer à 0.2 .

    ensuite, tous les 1000€ environ, les lots gagnent 0.1 .

    Pas vraiment exponentielle mais quand même...:)

    Testé sur AlpariUK :
    T/P 250
    S/L 500

    Quelques trades sur ZuluTrade aussi, provider "Furax".
  • antonin1021

    le robot fou désolé du manque de précision
  • antonin1021

    j'ai lu mais j'ai pas vraiment compris qu'elle et le bon moment :s
  • Harrakis

    @antonin

    Je te mets des images avec les valeurs que j'utilises. t'as juste à modifier celles que j'ai entouré en rouge. les autres ça va.
    Pour le time frame, j'utilise du D1.

    Après les résultats sont tres variables d'un back à l'autre. TT dépend de la qualité de tes archives.
    Harrakis a joint une image
    G1320EA
  • Harrakis

    @antonin

    Voilà la suite.

    En live j'ai tenté de mettre M30, mais il foire tt à cause du stop loss vraiment tres juste.
    A mon avis il est fait pour tourner sur du D1.
    Il tourne depuis 3H en D1 et toujours pas de trades. On verra demain si ça bouge.

    Bon tests.
    Harrakis a joint une image
    G1321DD