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

Plateforme cAlgo pour EA et indicateurs en CSharp

  • aysos75

    Je viens de tester cet après-midi cAlgo, c'est une plateforme de développement d'EA et d'indicateur en CSharp, on peut les tester aussitôt et faire du backtesting.

    C'est très bien fait, on peut par exemple lancer plusieurs EA sur différents instruments du forex.

    Toutefois les quelques exemples présents sur le site de FxPro (qui soutient cette plateforme cAlgo), ne donnent pas de résultats probant
    sur la période depuis le début de l'année, il ne faut surtout pas se fier aux stats présentés sur le site car ils sont faux ils présentent des gains là ou il y a des pertes.

    Ce qui est plus important, c'est que cette plateforme cAlgo permet d'écrire ses propres EA en Csharp et de les backtester très facilement et assez rapidement, on obtient graphiquement les prises de positions de l'EA et des gains et pertes sur le graphique de l'instrument.
  • jagaur1637 — en réponse à aysos75 dans son message #82029

    aysos75, le 22/09/2013 dit :
    Je viens de tester cet après-midi cAlgo, c'est une plateforme de développement d'EA et d'indicateur en CSharp, on peut les tester aussitôt et faire du backtesting. C'est très bien fait, on peut par exemple lancer plusieurs EA sur différents instruments du forex.

    Bonjour aysos75,
    j'avais une question.
    Est-ce que les Volumes sont des Volumes réels ou bien des nombres de ticks envoyés par le broker comme sur les plateformes MT4 & MT5 ?

    J'ai écrit un blog à ce propos ici : http://beathespread.com/blog/view/22736/volumes-do-not-exist-on-mt4-and-mt5-platforms-incredible

    a+
  • aysos75 — en réponse à jagaur1637 dans son message #82409

    Bonjour,

    à priori ce sont les volumes correspondants au nombre d'ordres passés en volume de 100000$. Mais je ne suis pas du tout certain de cela.
  • jagaur1637

    Cette information est nécessaire et indispensable.
    On ne peut pas être dans l'a- priori, dans le forex car ici, tout est fait pour prendre l'argent des petits porteurs comme vous.
    et ensuite, quand le Yuan deviendra convertible, c'est l'ensemble des monnaies majeures Dollar en premier qui perdront 90% de leurs valeurs

    Quel est votre broker ?
    Modifié le 2013-10-05 22:18:13 par jagaur1637
  • aysos75

    Mon broker est IGMarket, mais IgMarket ne propose pas de volume sur le forex. A loa question IG réponds :

    "Veuillez noter que vous tradez des CFD et non le sous-jacent nous ne pouvons donc pas vous donner le volume tradé sur le sous-jacents. Veuillez noter que l’indicateur de Volume est disponible uniquement pour les actions."

    J'ai aussi un compte FxPro.
  • aysos75 — en réponse à aysos75 dans son message #82029

    aysos75, le 22/09/2013 dit :
    Je viens de tester cet après-midi cAlgo, c'est une plateforme de développement d'EA et d'indicateur en CSharp, on peut les tester aussitôt et faire du backtesting. C'est très bien fait, on peut par exemple lancer plusieurs EA sur différents instruments du forex. Toutefois les quelques exemples présents sur le site de FxPro (qui soutient cette plateforme cAlgo), ne donnent pas de résultats probant sur la période depuis le début de l'année, il ne faut surtout pas se fier aux stats présentés sur le site car ils sont faux ils présentent des gains là ou il y a des pertes. Ce qui est plus important, c'est que cette plateforme cAlgo permet d'écrire ses propres EA en Csharp et de les backtester très facilement et assez rapidement, on obtient graphiquement les prises de positions de l'EA et des gains et pertes sur le graphique de l'instrument.


    Je reprends cette discussion concernant CAlgo, Et je souhaite savoir si certaines personnes seraient intéressée par une discussion concernant la programmation d'un robot en Csharp avec CAlgo.

    A ce sujet il est possible d'utiliser directement Visual studio pour compiler les codes sources. L'avantage par rapport à l'éditeur inclus dans CAlgo, c'est que vous avez accès à tous les outils, vous pouvez facilement découper le code en plusieurs fichiers et les classes en plusieurs classes partielles, d'autre part la gestion de la solution est amplement plus aboutie.

    L'inconvénient c'est que vous devez jongler entre Visual Studio et cAlgo lors des développement, gérer les dll et dossiers de compilations, mais une fois paramétré ça roule.

    Toutefois avec deux écrans c'est pas vraiment un handicap, car sur l'un se trouve VS et sur l'autre cAlgo.
    Modifié le 2013-11-17 10:25:56 par aysos75
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8240
  • aysos75 — en réponse à aysos75 dans son message #86484

    Pour avoir l'environnement de développement Visual studio ultimate gratuit en test pour 90 jours :

    http://www.visualstudio.com/downloads/download-visual-studio-vs
  • aysos75 — en réponse à aysos75 dans son message #86485

    Page de téléchargement de Visual studio
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8241
  • aysos75

    Un autre avantage de l'utilisation de Visual studio dans le développement de robot avec CAlgo, c'est la possibilité de déboguage.

    Pour cela :

    Il faut compiler sous VS le robot dans une DLL, puis référencer la DLL générée dans CAlgo, puis lancer le robot dans CAlgo et enfin attacher le débugger VS à l'instance éxécutable du robot.

    humm pas facile...
    Modifié le 2013-11-17 12:38:18 par aysos75
  • aysos75

    Je vais présenter en plusieurs Messages la façon de faire pour utiliser Visual Studio et CAlgo avec déboguage intégré.

    Plan
    1) installation de cAlgo
    2) installation de visual studio
    3) configuration de l'environnement de visual studio
    4) écriture d'un robot
    5) tests de fonctionnement
    6) déboguage interactif sous visual studio
    7) ?
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8242
  • aysos75

    1) installation de cAlgo

    cAlgo est la plateforme de développement de robots et d'indicateurs associée à cTrader. Pour installer une version démo de cette plateforme récupérez le programme à http://www.spotware.com/products/client-side-applications/calgo (pas besoin d'inscription)
    puis lancez l'application téléchargée. indiquez votre mail, la monnaie de référence (EUR) le montant souhaitée pour trader. C'est tout.

    Vous devez également télécharger cTrader si vous souhaitez faire du trading ou tester en grandeur réelle les robots écrits avec cAlgo.
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8243
  • aysos75

    2) installation de visual studio

    Pour installer visual studio c'est plus long, allez sur le site de Microsoft

    http://www.visualstudio.com/downloads/download-visual-studio-vs

    choisir la version de démonstration valable 90 jours,
    enregistrez-vous,
    choisir la version ISO
    lancez le téléchargement assez conséquent, (on peux aussi trouver cette version limitée à 90j sur T411 mais faut avoir un compte T411).
    Il est aussi possible d'utiliser la version express plus légère.

    J'attends vos commentaires pour passer au chapitre 3.
    Modifié le 2013-11-17 13:25:13 par aysos75
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8244
  • aysos75

    3) configuration de l'environnement de visual studio

    Entrons dans le vif du sujet, vous avez installé cAlgo et Visual Studio. Nous allons créer un projet de type "library", une librairie regroupe des classes contenant du code, des propriétés, etc... elles servent à la modularité du code.

    L'interaction entre VS et CAlgo se fera au travers de cette librairie.

    a) cliquer "fichier"->"Nouveau"->Projet (ou Ctrl+Shift+N)
    b) ouvrez l'onglet "Visual C#"->"Windows"->"Bibliothèque de classes"
    c) appelez le projet "SampleBreakOutRobot"
    d) validez avec "OK"

    Visual studio crée l'ossature de votre projet de librairie.

    e) ajouter une référence à cAlgo.API.dll, cette DLL se trouve dans le répertoire d'installation de cAlgo. Le mieux faite une recherche sur votre disque à partir de "C:\Users\Me\AppData\Local\Apps\"

    d) écrivez le code de votre robot en précisant les directives
    using cAlgo.API;
    using cAlgo.API.Indicators;
    e) dans le prochain message je vous donnerai le code à mettre dans le fichier "class1.cs" créé précédemment par VS
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8247
  • aysos75

    //#reference: F:\Economie\Trading\0Outils\CAlgo\Robots\SampleBreakoutRobot\SampleBreakoutRobot\bin\Debug\SampleBreakoutRobot.dll


    Code
    // ------------------------------------------------------------------------------------------------- // // This code is a cAlgo API sample. // // ------------------------------------------------------------------------------------------------- // Modifié le 17 novembre 2013 par Aysos75. 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 = 10.0, MinValue = 0)] public double BandHeight { get; set; } [Parameter("Stop Loss", DefaultValue = 33)] public int StopLossInPips { get; set; } [Parameter("Take Profit", DefaultValue = 54)] 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")] public MovingAverageType MAType { get; set; } [Parameter("Consolidation Periods", DefaultValue = 1)] 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; if (Symbol.Ask <= top && Symbol.Bid >= bottom) return; TradeType tradeType = TradeType.Buy; consolidation = (top - bottom <= BandHeight) ? consolidation + 1 : 0; 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 11:14:53 par AliX
  • aysos75

    4) Ecriture d'un robot

    L'objectif d'un robot est d'être bénéficiaire sur un temps à définir, par exemple sur les six prochains mois, il faut donc le tester sur les mois voir les années précédentes en espérant que les performances positives passées se retrouvent dans les mois à venir.

    Souvent un robot est seulement performant sur un type de tendance, par exemple il est gagnant sur les périodes haussières, perdant sur les baissières, il peux être bon ou non sur les trading range, ou très vulnérable aux hausse soudaines, qu'importe il faut tester pour connître les caractéristiques de performance du robot dans les différents types d'évolution (haussières, baissières, range, news, horaires etc...)

    Le robot dont j'ai donné le source précédemment utilise une stratégie basée sur la bande de bollinger de type Woolder Smoothing, il fait l'hypothèse standart que la plupart du temps (c'est à dire supérieure à 60%) le cours oscille entre sa bande basse de bollinger et sa bande haute. et parfois casse cette frontière soit à la hausse soit à la baisse. Nous allons tester cette cassure et entrer en position (sur H1, et mini lot) lorsque le cours casse de plus dune valeur définie (DeltaBollinger = 8) sa frontière, si c'est la borne haute, on entre à la vente sinon à l'achat.

    On coupe la position soit sur le stop définit à (Stop Loss=33PIP) soit sur une nouvelle prise de position. Le take profit est définit à +54PIP. le volume est de 10000 soit un mini lot.

    testé sur le mois dernier, ce robot performe à 201 dollars sans optimisation (pas eu le temps).

    L'objectif n'est pas de faire un robot performant, mais de voir comment rendre son écriture facilitée avec Visual studio, en particulier ici nous verrons plus tard comment effectuer de l'optimisation brute à l'aide de visual studio.

    Je n'ai pas de retour sur cette discussion, y'a bien des lecteurs, mais pas de questions, tout est clair pour vous ?
    Modifié le 2013-11-18 11:09:48 par aysos75
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-8251
  • aysos75 — en réponse à aysos75 dans son message #86586

    Finalement Spotware à intégré Visual studio à sa plateforme.

    Le développement de robot va être plus simple de ce fait :

    http://www.spotware.com/about/news-updates
  • jagaur1637

    ok
    je ch à récupérer les informations tickAsk & TicksBid avec leur Volumes respectifs sur un depthlevel de 20 à chaque tick

    mais, je ne vois sur cTDN Forum, http://ctdn.com/algos/cbots
    aucun exemple de robots capable de récupérer les informations de prix Ask & Bid

    toi, tu aurais un exemple ?
  • aysos75 — en réponse à jagaur1637 dans son message #95251

    Salut,

    il n'existe pas de prix askPriceTick. tu peux utiliser Symbol.Bid et Symbol.Ask sur l'événement OnTick.
    Certaines personnes utilisent (Bid + Ask) / 2 afin d'obtenir le prix moyen actuel dans la méthode OnTick()...

    Cordialement,
  • aysos75 — en réponse à jagaur1637 dans son message #95251

    Bonsoir,

    Sur la plateforme protrader 3 les EA sont également en Csharp mais de plus on accède aux volumes de l'ask et du bid sur plusieurs niveaux (deph level).

    http://protrader.com/
    aysos75 a joint une image
    plateforme-calgo-pour-ea-et-indicateurs-en-csharp-9048