Bonjour,
Je souhaite développer un ATS ( automatique trading system ) en utilisant les API d'Interactive Brokers :
http://www.interactivebrokers.com
Java API Quick Reference
Java API Quick Reference
Ces API sont asynchrones.
Si je souhaite connaitre toutes les 5 secondes l'évolution des cours d'une action, mon programme doit faire une requette, et ensuite il reçoit les cours toutes les 5 secondes.
Je fais une requette par reqRealTimeBars().
Et je suis informé de l'évolution des cours par realtimeBar()
Il existe un programme écrit en Java qui a implémenté un tel ATS.
C'est JSystemtrader :
JSystemTrader
Sauf erreur de ma part, ce programme lance autant de thread, qu'il souhaite traiter de valeur avec une certaine stratégie.
les requettes vers l'API d'IB sont lancées depuis le programme principal.
Les réponses à ces requettes sont reçues par le programme principal, puis sont diffusées par le programme principal vers les différents threads concernés.
Je souhaite pouvoir disposer de fonctionnalités que n'a pas JSystemTrader, le multi time frame, etc.
Je pense que pour bénéficier de telles fonctionnalités le mieux est de repartir de zéro.
Mon idée d'implémentation :
L'application principale ne fait que lancer deux threads.
Le thread A qui est une instance d'une classe façade autour de l'API d'IB.
Le thread B qui gère les instances des stratégies de trading.
Le thread A reçoit les demandes de types reqRealTimeBars() faites pas le thread B, et exécute ces demandes.
Puis place les réponses faites par realtimeBar() dans une queue de type FIFO.
Signale au thread B que des données sont à traiter.
Le thread B traite séquentiellement les données de la piles FIFO tant qu'il y a des données à traiter.
Que pensez-vous de mon projet d'implantation ?
Partager