everything below is from a technical pov (and sorry if I over explain things : D )
`The only significantly difficult thing in the rest two of our milestones (stocks, options) is: figuring out an efficient and at the same time, scalable way to communicate those conditions to our system`
to explain:
- everything other than the above challenge is straightforward (or not so tedious at least for a few of 'em).
- getting data in real time - Not a problem. we just need an API stream.
- processing data in real time - Not that big of a problem. this of course depends on the level of processing needed and the amount of concurrency required in the tasks but overall from a general assumption should not be a pain.
- sending trades based off of results concluded from the processing done in step2 - cake walk for general trades, would need a bit of hustle for complex orders.
**talking about the challenge as mentioned**
I'll try to create an example scenario. Lemme know if that conveys something to you that I intend to.
taking a sample condition from one of your illustrations above: `current price>1.0175*previous close then Send Alert`
this is a very simple condition. Doesn't need any processing at all. just a comparison.
implementing this comparison is cakewalk if the system knows what the *exact* condition is. for eg if we were to implement the condition mentioned above, it wouldn't take more than an hour honestly including manual testing of the system.
but from a technical pov, the challenge arises when there is another condition that the system isn't aware with. This *unawareness* could be due to having a different format than the known ones (knwn to the bot, I mean) or having something that the bot didn't know how to handle.
If this made any literal sense to you, read along...
**what could be the possible approaches for the challenge then**
this is where it gets interesting.
the most fundamental solution I can imagine is to have a `Universal set` of criterias. If that doesn't make any sense, bear with me :smile:
This is probably the most feasible solution considering the technical pov. The conditions can of course be added in here. which complies with your statement of having `multiple criteria`. If it still doesn't make a lotta sense, think about it as having different criterias. Whenever we want the bot to be able to make decisions based on a new criteria, we just add that to the bot.
a scenario where this approach might be implied enough to be made sense of:
I'm extending your example involving the list of tickers for the initial phase of stock scanner. say our initial `universal set of criteria` includes conditions: `F up more than X, then...` and `current price>1.0175*previous close then ...` and they both are active on a set of tickers that we have set up (which as you stated above, could be separate or same). Now say we want to add another criteria, we just add it to our universal set of conditions in a way that the bot can understand.
That way will need to be figured out keeping a lot of things in mind including but not limited to: convenience, degree of automated behavior, resource constraints (this includes things like costs of hosting the bot as we might need hella processing power at scale and of course with selection of a cloud service, the constraints of that platform - generally not a big deal but can be a pain sometimes so worth mentioning)
Every other aspect of our system is either already figured out or related enough to the existing code base to be found out easily
Hope that makes at least *some* sense : )