2009-07-04 9 views
2

Je suis un développeur avec un arrière-plan .NET et je suis impatient d'entrer dans le domaine des applications de trading. Quelles technologies devrais-je apprendre pour pouvoir développer des applications de trading? J'ai vu C/C++, d'autres? Qu'est-ce que les gens utilisent pour l'interface graphique?Développer des applications de trading

Répondre

1

Je vous recommande de choisir deux technologies différentes: une pour la présentation de l'interface graphique et une pour le serveur d'applications de négociation/logique.

Si vous devez choisir entre C++ et C#, utilisez C++ comme serveur et C# comme client.

Mais si vous voulez développer à partir de zéro, je vous recommande de ne pas utiliser C++ côté serveur mais un langage avec des frameworks où transaction, sécurité, ORM sont déjà implémentés.

+0

C++ est une norme pour les applications de trading. –

2

Je vois la plupart des technologies dans les banques (par exemple les frontaux C#, les backends Java, C/C++ pour les analyses). Bases de données SQL/relationnelles de la plupart des saveurs. Les bases de données de séries temporelles et d'objets ne sont pas très utilisées. Ce que je ne vois pas beaucoup, et devrait voir plus, est la compréhension de la mise en réseau et des flux de prix en temps réel (par exemple Tibco/Triarch). Ceux-ci sont la clé pour fournir des données autour de la salle des marchés. Une compréhension des protocoles réseau (par exemple, les différences entre TCP/UDP) et de la capacité est importante pour l'architecture et la performance du système (les performances, dans ce scénario, étant extrêmement importantes).

1

Il peut être judicieux de retarder les décisions techniques spécifiques le plus tard possible, en particulier celles qui impliquent des détails de mise en œuvre plutôt que le comportement du domaine principal, tels que la base de données et le GUI. Une bonne technique consiste à développer d'abord le domaine principal (je pense que Java et C# semblent être les grands langages dans ce domaine), en remplaçant la base de données par un simple dictionnaire, et le gui par des tests unitaires, notamment avec le développement piloté par les tests , vous allez vous retrouver avec une architecture soignée et propre, et moins de couplage entre les "couches". Alors c'est moins dramatique s'il s'avère que vous avez besoin d'utiliser une grosse table db plutôt qu'une rdms par exemple, ou une interface web plutôt qu'une interface graphique.

En ce qui concerne gui, jetez un oeil au modèle MVP. Cela préserve la testabilité sans devoir recourir à des outils de raclage d'écran, tout en améliorant la maintenabilité. Bien sûr, d'autres modèles similaires sont disponibles en fonction de ce que vous finissez par faire, à savoir MVC pour une application Web ou MVVM pour une application WPF.

+0

Comment cela répond-il à la question des OP? Qui est essentiellement "Quelles technologies devrais-je apprendre pour être en mesure de développer des applications de trading?" – Rob

+0

Ne répond pas à la question, mais c'est un conseil très sain ... – Niklas

+0

+1 pour la recommandation de modèles. –

1

Alors, que fait exactement l'architecture se composent d'alors

Il n'y a pas de recette pour développer des applications de trading. Ils viennent dans toutes les saveurs différentes et les besoins de quelqu'un marché rendant des milliers d'options sont très différentes des besoins d'un daytrader ou d'un courtier. Si vous trouvez un créneau où vous pouvez réellement entrer et livrer quelque chose que vous avez écrit vous-même, la chose la plus importante à comprendre n'est probablement pas une langue spécifique mais comment le client travaille et ce dont il a besoin.

De plus, le fait de développer entièrement à partir de maintenant est susceptible d'aboutir à une architecture très différente de ce que vous voyez dans la plupart des produits standard. Si vous ne démarrez pas votre propre atelier à partir de rien, je dirais qu'il est préférable de savoir comment les choses se sont déroulées efficacement il y a 5-10 ans plutôt que d'essayer d'acquérir une bonne connaissance de l'architecture la plus populaire en ce moment.

Pour généraliser, je pense que la plupart des autres commentateurs ont bien compris. La plupart des (nouvelles) interfaces graphiques que vous voyez dans les produits en boîte sont basées sur .NET alors que la plupart des serveurs sont soit Java, C/C++ ou un mélange de tous. Cela aidera probablement à exceller dans au moins l'un d'entre eux.Dans certains segments, j'ai vu Eclipse RCP être sélectionné pour le côté client, ce que je trouve personnellement agréable. Pour les systèmes en place depuis quelques années ou les systèmes développés en interne (il y en a BEAUCOUP), vous devriez vous attendre à tout.

un C# frontal parler aux services Java qui font appel à certains c/C++ Code pour l'analyse sur la même machine ou suis-je loin?

Vous êtes au moins d'aller voir de plus en plus de cela et la partie C/C++ est probablement le peuple partie aimeraient se débarrasser comme java est de mieux en mieux et les sauts de Java à C/C++ sont tous les deux chers (en fonction de ce que vous faites) et difficiles à maintenir.

Je suis dans le secteur depuis un certain temps mais je ne pense pas que je puisse trouver une réponse plus précise étant donné la nature plutôt générale de la question.

+0

Merci pour votre réponse détaillée. Cela m'a donné un bon aperçu technique. Le code C++ de la logique du serveur était-il utilisé en faveur de Java ou C# en raison de la récupération de place à l'exécution? –

Questions connexes