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

Que pensez-vous des robots de trading?

  • riden — en réponse à Val54 dans son message #83795

    Salut Val54,
    Si tu as déjà fait de la programmation avant, tu peux commencer directement par là http://book.mql4.com/content puis tu trouveras la bibliothèque de toute les fonctions prédéfinis mql4 que tu as besoin dans http://docs.mql4.com/
    Si tu n'as pas fais de la programmation avant, je pense qu'il est préférable de commencer par apprendre le langage C (ressemble beaucoup au mql4) , tu peux commencer par là : http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c (très bon tuto) juste la partie 1 et 2 (sauf les pointeurs), dans cette étape tu apprends les bases de programmation et la résolution des problèmes simples comme tri d'un tableau (utile dans un EA) ou création de fonctions etc... En suite tu peux attaquer un tuto mql4 en français http://www.eole-trading.com/wp-content/uploads/2012/03/mql4.pdf et à la fin les liens du site mql4 que j'ai cité plus haut.
    Modifié le 2013-10-17 23:18:26 par riden
  • ShipIt

    Perso je programme en java sur la plateforme JForex.
    Tu as donc une alternative au mql.
    L'avantage c'est que le JAVA est l'un des langages (voir meme Le langage) de programmation le plus repandu tu trouvera donc facilement des ressources pour apprendre, a mon sens il est bien plus simple a apprehender que le C, il est bien plus structuré (langage objet).

    Le defaut c'est que la plateforme JForex n'est pas encore aussi utilisé que Metatrader, et que donc des exemple de code java lié au forex tu n'en trouvera pas aussi facilement qu'en mql.
    Dukascopy à developpé un visual JForex qui permet de faire un robot sans programmer, ou du moins sans taper de lignes de codes, via leur outil :
    http://www.dukascopy.com/vjforex/

    Je sais pas ce que ca vaut, mais si tu as la flemme d'apprendre la programmation pourquoi pas essayé ce genre d'outil (ca existe peut etre aussi pour Metatrader !?
    J'imagine qu'on est forcement un peu limité, mais ça peut etre une façon de s'y mettre !
  • chouchou13390 — en réponse à ShipIt dans son message #83809

    ShipIt, le 18/10/2013 dit :
    Je sais pas ce que ca vaut, mais si tu as la flemme d'apprendre la programmation pourquoi pas essayé ce genre d'outil (ca existe peut etre aussi pour Metatrader !?


    Il y a FxPro qui a développé un outil équivalent pour MEtatrader je crois.
    Par contre je ne l'ai pas essayé, je ne sais pas du tout ce que ça vaut.
  • chouchou13390 — en réponse à ShipIt dans son message #83694

    ShipIt, le 17/10/2013 dit :
    Mais le duo humain+machine me semble pas mal aussi !


    Je suis d'accord avec toi.
    Seul le trader peut faire de l'analyse fondamentale, surtout en pré-news, en fonction du contexte économique du moment.
    Après, c'est un ordre à donner au robot : ne chercher que des trades en vente sur telle ou telle paire, etc...

    Perso, je ne trade pas avec un EA (sauf de temps à autre pour cloturer mes trades) mais quand je pense à un EA, çe qui me vient de suite à l'esprit c'est le semi-automatique.
    Je pense que le robot peu faire gagner du temps comme scanner toutes les paires de devises et detecter la tendance dans des UT longues selon une méthode.
    Après, je pense que valider la prise de position en manuel est important.
  • forexensemble

    Je pense aussi que l'idéal est de programmer son propre robot. Il est ainsi possible de l'adapter à son propre style de travail.

    Le problème, à moins qu'on soit du métier comme c'est le cas de plusieurs d'entre nous, réaliser un tel robot est en soit un projet très coûteux en temps d'apprentissage.

    Une solution consiste en effet à créer un projet collaboratif.
    Des idées ?
  • chouchou13390 — en réponse à forexensemble dans son message #83821

    forexomatic, le 18/10/2013 dit :
    Une solution consiste en effet à créer un projet collaboratif. Des idées ?


    Le problème d'un projet collaboratif c'est que tous les collaborateurs doivent se mettre d'accord sur la stratégie que doit adopter le robot.

    Après, l'idée peut être justement de se servir de plusieurs stratégies et de donner les moyens au robot de choisir la méthode et le TF, afin de s'adapter au marché.
    La base pourrait être du swing en H4 ou D1, et après suivant x critères de prendre position en plus dans des UT inférieures suivant telle méthode qui correspondrait à telle configuration.
  • forexensemble — en réponse à chouchou13390 dans son message #83822

    chouchou13390, le 18/10/2013 dit :
    Après, l'idée peut être justement de se servir de plusieurs stratégies et de donner les moyens au robot de choisir la méthode et le TF, afin de s'adapter au marché.

    Complètement d'accord avec toi. A mon avis, un bon robot doit avoir une partie "money management" très robuste et une 2ème partie "stratégie d'entrées/sorties" qui doit pouvoir être adaptée facilement par l'utilisateur lui-même.
  • Chan

    Les robots en day trading je n'y crois pas des masses, une news peut foutre en l'air un compte et un très bon exemple est ce qu'il s'est passé hier sur l'eur/usd. Après vous me direz que tout dépend du robot.

    La ou j'y crois davantage c'est à moyen terme, en D1 la manipulation est beaucoup moins présente puisque beaucoup plus difficile et on peut s'affranchir des ordres stop. Je ne crois pas au broker allant chercher les stop, mais je pense que les MM (market manipulator) le font quand ils ont besoin de liquidité.

    Après je parle clairement de robot, pas d'EA.
    Modifié le 2013-10-18 10:22:54 par Chan
  • riden — en réponse à ShipIt dans son message #83809

    Salut,
    J'ai fait du java mais je ne savais pas qu'on pouvez développer des EA en java (c'est intéressant)
    Le langage le plus utilisé au monde par les développeurs c'est le C (17% des développeurs) contre 16% pour java en deuxième place (octobre 2013).
    C'est sûr qu'apprendre le java est plus simple qu'apprendre le C puis le mql4 (ou java puis mql5 car contrairement au mql4, mql5 est orienté objet) mais les ressources en matière de trading (EA, indicateurs, script... ainsi que la communauté des développeurs) sont beaucoup plus importantes en mql qu'en java.

    @Chan
    Si le trader est surpris par un mouvement brusque à cause d'une nouvelle sur le plan fdm le robot aussi va subir la même chose par contre si le trader est au courant de ce qui va ce passer il peut tenir son robot au courant.
    Le robot ne réfléchi pas, le trader aussi ne réfléchi pas lors de la prise de position mais il a déjà réfléchi et pris une décision avant, cette décision est programmable, donc tout ce que le trader peut le faire le robot aussi et avec plus d'efficacité (plus de précision, écarter l'influence des émotions etc...) ,après ça dépend du talant du développeur.
  • greg3395 — en réponse à riden dans son message #83883

    riden, le 19/10/2013 dit :
    Salut, J'ai fait du java mais je ne savais pas qu'on pouvez développer des EA en java (c'est intéressant) Le langage le plus utilisé au monde par les développeurs c'est le C (17% des développeurs) contre 16% pour java en deuxième place (octobre 2013). C'est sûr qu'apprendre le java est plus simple qu'apprendre le C puis le mql4 (ou java puis mql5 car contrairement au mql4, mql5 est orienté objet) mais les ressources en matière de trading (EA, indicateurs, script... ainsi que la communauté des développeurs) sont beaucoup plus importantes en mql qu'en java.


    je programme en C++
    avec Metatrader tu peu utiliser des fichier dll pour communiquer avec un programme externe.
    l'avantage du C++ , c'est d'utilisée la libraire Cmath.h pour utilisé des calcul beaucoup plus complexe.

    il a des gens qui ne trade pas , toute la journée ils font que des EA pour les revendre.
    il gagne plus d'argent que trader

    pour monter une startup:
    -> une personne qui a des bonne notion en trading et connais le monde du Hight Frequency Trading
    -> un programmeur qui se débrouille bien en POO
    -> une personne qui a des bonne notion en mathématique qui pourrai améliorer l'EA.

    un bon EA , coûte chère et facilement vendable au banque.
    il faut pas demander juste un prix mais d'ouvrir un ou plusieurs compte avec des bon intérêt.
    vaut mieux gagner plus d'argent dans le temps que prendre une grosse sommes d'un coup.
  • mikroub — en réponse à greg3395 dans son message #83885

    Plop, je partage le dernier post de Greg.

    Citation :
    C'est sûr qu'apprendre le java est plus simple qu'apprendre le C puis le mql4

    Pas trop d'accord, le C non orienté objet comporte 35 instructions, le MQL4 est un langage friendly-C donc dénué de la notion pointeur/objet. Il est donc évident qu'il soit plus atteignable que le JAVA, c'est d’ailleurs pour cela que l'on trouve bon nombre de codes (plus ou moins utiles) en MQL4...

    Pour en revenir au sujet , le problème actuel étant que la majorité des EA profitables dilués sur le net ne répondent pas à une chose simple: "Laisser courir les gains et couper les pertes...". Faire un EA avec TP et sans SL (ton screen Riden) ou toute autre martingale (grid & co) est chose simple et aisée pour rendre le rendre profitable... Le Graal, et bien gare au crash de compte...

    Dure réalité sur le fait qu'il soit quasi-impossible de trouver un EA profitable sur le moyen ou long terme (donc sans martingale) en free ou à vendre sur la toile... Les personnes ayant réalisé cette prouesse en font une utilisation perso ou ont ouvert une PAMM (point de vue personnel mais toutefois partagé sur la question qui a suscité l'ouverture de ce fil)...

    Au plaisir de vous lire.
    Modifié le 2013-11-05 18:51:37 par mikroub
  • riden — en réponse à mikroub dans son message #85188

    mikroub, le 05/11/2013 dit :
    ........". Faire un EA avec TP et sans SL (ton screen Riden) ou toute autre martingale (grid & co) est chose simple et aisée pour rendre le rendre profitable... Le Graal, et bien gare au crash de compte... ...........


    Salut,
    Non j'utilise des SL, je travaille avec des fonctions SL mobile (positions perdantes clôturer sur le screen sans SL) que je trouve plus pertinent que le SL classique de la plateforme, d'une part parce qu’il est mobile et suit l'évolution du graphique et d'une autre part il n'est pas soumis à l'écart minimal imposé par le broker.
    Et je protège aussi par Hedge qui inclus automatiquement le SL (les sell/buy-stop sur le screen annulés lors de la prise de profit).
    Avec un matériel puissant, la probabilité de plantage est quasi nulle, donc pour moi, c'est assez sécurisé.
    Pour les martingales, je ne me suis pas intéressé à ce sujet car je n'aime pas ce style de trading risqué.
  • ShipIt — en réponse à mikroub dans son message #85188

    mikroub, le 05/11/2013 dit :
    Plop, je partage le dernier post de Greg. Citation :C'est sûr qu'apprendre le java est plus simple qu'apprendre le C puis le mql4 Pas trop d'accord, le C non orienté objet comporte 35 instructions, le MQL4 est un langage friendly-C donc dénué de la notion pointeur/objet. Il est donc évident qu'il soit plus atteignable que le JAVA, c'est d’ailleurs pour cela que l'on trouve bon nombre de codes (plus ou moins utiles) en MQL4...


    C'est peut etre parce que je suis dans le metier, mais pour moi un langage objet est plus simple et plus clair !
    En java pas de gestion de memoire, le garbage collector s'en charge donc de ce coté la pas de probleme comme en C !
    Et surtout le GROS, l'ENORME avantage du java et du fait qu'il soit un langage objet c'est qu'on peut faire des choses propres facilement maintenable, testable, tout ca avec l'utilisation d'un IDE (gratuit) tel que Eclipse ou Netbean te donne un confort de developpement impossible a obtenir en C et encore moins en MQL.
  • mikroub

    je partage complètement ton point de vue ShipIt, en dehors du trading, je programme sur VS2010 pour le taff ainsi que le perso (VB.NET + lib C++), donc orienté objet. Effectivement tu sembles être de la partie, je te rejoins sur le fait que la station de développement en MQL est légère, notamment en terme de débogage, j'ai tendance à m'arracher les cheveux, bref... Je reste toutefois persuadé que la prise en main est simplissime du fait du nombre limité d'instructions... Après, ce qu'un néophyte programme en 20 lignes de code, quelqu'un de plus expérimenté l'optimisera en le programmant en 5 lignes...

    Citation :
    Non j'utilise des SL, je travaille avec des fonctions SL mobile (positions perdantes clôturer sur le screen sans SL) que je trouve plus pertinent que le SL classique de la plateforme, d'une part parce qu’il est mobile et suit l'évolution du graphique et d'une autre part il n'est pas soumis à l'écart minimal imposé par le broker.

    Autant pour moi Riden, je n'avais pas vu ce détail. De plus le ratio gains/pertes semble correct, que donnes ton EA en backtesting?

    +
    Modifié le 2013-11-06 18:41:47 par mikroub
  • aysos75 — en réponse à mikroub dans son message #85188

    mikroub, le 05/11/2013 dit :
    Pour en revenir au sujet , le problème actuel étant que la majorité des EA profitables dilués sur le net ne répondent pas à une chose simple: "Laisser courir les gains et couper les pertes...". Faire un EA avec TP et sans SL (ton screen Riden) ou toute autre martingale (grid & co) est chose simple et aisée pour rendre le rendre profitable... Le Graal, et bien gare au crash de compte... Dure réalité sur le fait qu'il soit quasi-impossible de trouver un EA profitable sur le moyen ou long terme (donc sans martingale) en free ou à vendre sur la toile... Les personnes ayant réalisé cette prouesse en font une utilisation perso ou ont ouvert une PAMM (point de vue personnel mais toutefois partagé sur la question qui a suscité l'ouverture de ce fil)... Au plaisir de vous lire.


    A partir de quel pourcentage de gain dit-on qu'un robot est profitable, est-ce qu'un robot qui rapporte 2766 euros sur 6 mois est valable ?

    J'ai modifié un tel robot, je l'ai paramétré à la va vite et il me donne 2766 euros de profit entre le 20 mai 2013 et le 18 nov 2013 sur EURUSD soit 6%.

    Le code est ici sur le message suivant et est exécutable sur cAlgo.
    aysos75 a joint une image
    que-pensez-vous-des-robots-de-trading-8252
  • aysos75 — en réponse à aysos75 dans son message #86590

    Source de l'EA qu'il reste à optimiser pour faire mieux encore.

    Code
    //#reference: F:\Economie\Trading\0Outils\CAlgo\Robots\SampleBreakoutRobot\SampleBreakoutRobot\bin\Debug\SampleBreakoutRobot.dll // ------------------------------------------------------------------------------------------------- // // This code is a cAlgo API sample. // // This robot is intended to be used as a sample and does not guarantee any particular outcome or // profit of any kind. Use it at your own risk. // // All changes to this file will be lost on next application start. // If you are going to modify this file please make a copy using the "Duplicate" command. // // The "Sample Breakout Robot" will check the difference in pips between the Upper Bollinger Band and the Lower Bollinger Band // and compare it against the "Band Height" parameter specified by the user. If the height is lower than the number of pips // specified, the market is considered to be consolidating, and the first candlestick to cross the upper or lower band will // generate a buy or sell signal. The user can specify the number of periods that the market should be consolidating in the // "Consolidation Periods" parameter. The position is closed by a Stop Loss or Take Profit. // // ------------------------------------------------------------------------------------------------- // Modifié le 17 novembre 2013 par Aysos75 v1.0.0.0.2. using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Robots { [Robot()] public partial class SampleBreakoutRobot : Robot { #region Properties [Parameter()] public DataSeries Source { get; set; } [Parameter("Band Height", DefaultValue = 7.0, MinValue = 0)] public double BandHeight { get; set; } [Parameter("Stop Loss", DefaultValue = 70)] public int StopLossInPips { get; set; } [Parameter("Take Profit", DefaultValue = 210)] public int TakeProfitInPips { get; set; } [Parameter("Volume", DefaultValue = 10000, MinValue = 0)] public int Volume { get; set; } [Parameter("Bollinger Bands Deviations", DefaultValue = 2)] public int Deviations { get; set; } // BB [Parameter("Bollinger Bands Periods", DefaultValue = 20)] public int Periods { get; set; } [Parameter("Bollinger Bands MA Type", DefaultValue = 6)] public MovingAverageType MAType { get; set; } [Parameter("Consolidation Periods", DefaultValue = 0)] public int ConsolidationPeriods { get; set; } [Parameter("Delta Bollinger", DefaultValue = 8)] public double DeltaBollinger { get; set; } #endregion // How many periods to consolidate in the channel before the strategy is 'armed'. private BollingerBands bollingerBands; private int consolidation; private int lastTrendBarIndex; protected override void OnStart() { bollingerBands = Indicators.BollingerBands(Source, Periods, Deviations, MAType); } protected override void OnTick() { var isNewTrendBar = lastTrendBarIndex < MarketSeries.Close.Count; lastTrendBarIndex = MarketSeries.Close.Count; if (isNewTrendBar) { double top = bollingerBands.Top.LastValue + DeltaBollinger / 10000; double bottom = bollingerBands.Bottom.LastValue - DeltaBollinger / 10000; consolidation = (top - bottom <= BandHeight) ? consolidation + 1 : 0; if (Symbol.Ask <= top && Symbol.Bid >= bottom) return; TradeType tradeType = TradeType.Sell; if (consolidation >= ConsolidationPeriods) { if (Symbol.Ask > top) tradeType = TradeType.Buy; if (Symbol.Bid < bottom) tradeType = TradeType.Sell; Trade.CreateMarketOrder(tradeType, Symbol, Volume); consolidation = 0; } } } protected override void OnPositionOpened(Position openedPosition) { var stopLoss = GetAbsoluteStopLoss(openedPosition, StopLossInPips); var takeProfit = GetAbsoluteTakeProfit(openedPosition, TakeProfitInPips); Trade.ModifyPosition(openedPosition, stopLoss, takeProfit); } private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { return position.TradeType == TradeType.Buy ? position.EntryPrice - Symbol.PipSize * stopLossInPips : position.EntryPrice + Symbol.PipSize * stopLossInPips; } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { return position.TradeType == TradeType.Buy ? position.EntryPrice + Symbol.PipSize * takeProfitInPips : position.EntryPrice - Symbol.PipSize * takeProfitInPips; } } }
    Modifié le 2013-11-18 12:50:40 par aysos75
  • ShipIt

    L'idée de base est simple mais pas mal !
    Si je comprend bien, on lui file un seuil pour la largeur des bolls en dessous duquel on estime que le cours consolide.
    Lorsqu'il consolide il attends que le cours sorte des bolls pour prendre un ordre, avec un TP à 210 et un SL a 70 !!

    Je pense qu'il doit y avoir mieux a faire que d'avoir des SL et TP figé, vu les valeurs par defaut il doit mieux tourné en H4 non ?

    Comme SL on pourrait mettre la largeur de la consolidation, en gros c'est la taille du range d'ou on est en train de sortir. ou alors un multiple de cette largeur, par exemple la moitié pour considéré qu'a la moitié du range la cassure est invalidé !

    Pour le take profit, c'est moins simple, croisement avec la MM des bolls ? ou mieux sur phase 3 des bandes de bollinger, autrement dit quand la bandes opposé au mouvement commence à rejoindre la moyenne mobile.

    J'ajoute une image pour illustrer, c'est une bulle "parfaite" formé par les bandes, la ligne vertical pointillé rouge indique le moment de fermeture de position, sur retournement de la bande opposé au mouvement.
    En bleu le stop = largeur des bande avant prise de position.
    ShipIt a joint une image
    que-pensez-vous-des-robots-de-trading-8253
  • forexensemble

    A propos du langage MQL4 vs C++, Metaquotes a annoncé récemment le portage de l'environnement de développement de MQL5 vers MQL4, ce qui apportera à cette dernière le confort de l'orienté object tout en restant compatible avec l'immense bibliothèque mondiale de codes publiés. Affaire à suivre...
  • aysos75 — en réponse à ShipIt dans son message #86609

    ShipIt, le 18/11/2013 dit :
    L'idée de base est simple mais pas mal ! Si je comprend bien, on lui file un seuil pour la largeur des bolls en dessous duquel on estime que le cours consolide. Lorsqu'il consolide il attends que le cours sorte des bolls pour prendre un ordre, avec un TP à 210 et un SL a 70 !! Je pense qu'il doit y avoir mieux a faire que d'avoir des SL et TP figé, vu les valeurs par defaut il doit mieux tourné en H4 non ? Comme SL on pourrait mettre la largeur de la consolidation, en gros c'est la taille du range d'ou on est en train de sortir. ou alors un multiple de cette largeur, par exemple la moitié pour considéré qu'a la moitié du range la cassure est invalidé ! Pour le take profit, c'est moins simple, croisement avec la MM des bolls ? ou mieux sur phase 3 des bandes de bollinger, autrement dit quand la bandes opposé au mouvement commence à rejoindre la moyenne mobile. J'ajoute une image pour illustrer, c'est une bulle "parfaite" formé par les bandes, la ligne vertical pointillé rouge indique le moment de fermeture de position, sur retournement de la bande opposé au mouvement. En bleu le stop = largeur des bande avant prise de position.


    Je vais intégrer tes idées, c'est à dire ne pas fixer le TP et SL mais les rendrent variables en fonction de la taille de la bande de bollinger.
  • aysos75 — en réponse à ShipIt dans son message #86609

    J'ai un peu amélioré le programme précédent en rendant le deltaBollinger dynamique, il est calculé en fonction de l'étendue de la bande à chaque nouvelle bougie (deltaBollinger=largeurBollinger/5).

    Je l'ai alors lancé sur les 6 précédent mois et sur des unités de temps faible, en M1 ce qui est surprenant c'est qu'il fait du 131%, par contre les variations d'équité sont importantes
    aysos75 a joint une image
    que-pensez-vous-des-robots-de-trading-8254