Hi everyone ! I'm new in the game, struggling, stuck, and not ready to give up I tried promising things, but I failed, I need your advices. I'm using the native IB API and python. Target : Make a screener real-time data and handle those data. For example, I would like to be able to sort column (ascending, descending), and display or not rows if the stock answer to my criteria (uncluttered the table). Libraries: With Pandastable, I was able to display a screener, sort the column, but only with static data. Then I tried tkinter treeview, such a good tools as well, the screener was updating real-time data for each symbol. But I was not able to apply sort functions or remove the actions that did not answer to the criteria. Questioning: I need your experience and your advices to solve those issues. Is it possible to reach my target with the precedent libraries ? As well, I'm wondering if it's possible, but maybe harder, to go through a database ? SQLite ? Fetched real-time data, send them to the database, then read, treat and display data from the database to the screener ? Thanks ! Have a nice day Ben
This is not a trivial task. It takes time and resources. IMO such projects succeed only if in advance a good financing of everything that's necessary for the project is assured (ie. manpower, server(s), fast Internet connection(s), funds aka money, etc.). Have you already made the calculations for necessary storage space and bandwidth? These are the very basics to start with, IMO.
IB isn't the right choice for this. You need a dedicated data provider. No need for most of that. It's doable as a one-man operation with some dedication and time. Money will be spent on the data itself and a cloud instance. You don't need physical servers or internet connectivity, it's not the 1990s.
If trading using screener is your stayle, you can buy one. You can use tradestation platform to customize screener and many other on the shelf solutions. If there is nothing unusual in your screener, save your time, focus on trading stuff. But if it's something special.. good luck and enjoy!
It is a hassle to write all the infrastructure (like connecting to a data source, parsing the results and doing an efficient result processing architecture that won't bog down on a big data pipe). For example, if you do "fetch real-time data, send them to the [SQLite] database, then read, treat and display data from the database to the screener" that would introduce huge delays in processing the data. Just having SQLite as a middleman would make it very slow. There are wheels already invented and ready to use For example: Medved Trader will allow you to do real time screening on as many tickers as the data feed can handle, using logic as complex as you would like (and utilizing any of the pre-programmed indicators). For simple logic it is point and click, for more complex it is C#.
There is a good screener built into Thinkorswim (called Scan in the UI). Very configurable and operates on real-time data.
if you know what you're doing this is a trivial task. You can get you're data from ib and relay it to: influxdb, pipelinedb, timescale.com, apache pulsar or flink. Or write your own online algorithm for screening. Getting realtime data and loading into a relational db to then use SQL is
@d08, the project reminded me of an idea of mine I many years ago had in mind whereby I wanted to program a similar thing, but allow also own users to use/query the data, even going up to the level of offering brokerage-like services. Ie. then much more bandwidth and computing power is needed. Of course something more important came in-between and the idea had to be shelved... You are right, his requirements are not that much high and indeed can be done by just one dedicated programmer over a couple of weeks. Yes, an SQL DB is overkill and would slow things significantly; I would use in-memory DB, ie. computer should have much RAM, of course also depending on the # of tickers and barsize (or # ticks) etc.. etc. And regarding servers, yes I too was meaning Internet server(s) in the cloud, not at home.
Like!!!, From a develop POV. So many changes in frameworks, tools, concepts.. Happy to leave this behind me soon..
What kind of data are you talking about? What kind of selection criteria do you want to use to rank the tickers? And with "real time" do you mean tick-by-tick price data? Or e.g. price every minute, hour, ...?