Skip to content
This repository has been archived by the owner on Mar 28, 2024. It is now read-only.

Improve trading performance #77

Open
sthewissen opened this issue May 30, 2018 · 3 comments
Open

Improve trading performance #77

sthewissen opened this issue May 30, 2018 · 3 comments
Labels

Comments

@sthewissen
Copy link
Owner

Currently the trading process has a serial nature to it. It retrieves all the markets, checks them all for possible trades and then creates all the found trades until no traders are available anymore. This means that a trade may be placed minutes after it was found which is not optimal. The process takes some time and could be optimised further:

  • Stop checking for more trades when the amount of possible trades is exceeded
  • Immediately place a trade as soon as TA has found it
  • Run the TA in parallel instead of one after another?
@LORDofDOOM
Copy link
Contributor

Sound good. Also parallel processing is IMHO a important change because with sequential processing a buy is possibly to late.

Checking for new trades even if all traders are at work could possibly still be a useful option. If a trader sell it already have a buy option and could check if the TA is still valid

@sthewissen sthewissen added help wanted WIP Working on it :) labels May 30, 2018
@sthewissen
Copy link
Owner Author

I could use input on a lot of things probably when it comes to this.

  1. First off I believe @cryptoandrej had the idea to combine the PaperTradeManager and the LiveTradeManager into one. Switching between the two would then be as simple as a boolean toggle in the constructor. I support that idea.

  2. The Initialize() method seems a bit redundant in many cases. Currently it runs before each buy loop and queries the database to see if it needs to create or change how the current trader instances are set up. This seems like a lot of overhead once the bot is up-and-running. Especially when trading lower timeframes a useless DB call every 1 or 5 mins seems like a total waste of resources. Could we simplify this Trader setup process?

I'm working on this in the trademanager-performance branch if anyone wants to pitch in :) If you have additional ideas on how to go about improving how the trademanager works at the moment, feel free to post here :)

@twixwix
Copy link

twixwix commented May 30, 2018

Hey guys I think we have a thread issue with the initialize(); sometimes when the cron is to fast it hits that twice. So if DB context is already in use we have the problem from asynchronous DB context. We have some ways to get rid of that.

  1. Maybe a pseudo object which contains the DB context and we save it in the end so there would be no lock in database.

  2. Semaphore lock in sell or buy. Therefore only one task can go in the semaphore it is like a queue.

Parallel loops would be must have if we want more frequent trading bots.

But all in all I like the idea to get rid of duplicate code from traders...

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants