degiro-connector
degiro-connector copied to clipboard
Order only succeeds when logged in once via browser
I do have some strange errors when ordering:
2022-03-09 18:37:57,586 CRITICAL MainThread 400
2022-03-09 18:37:57,586 CRITICAL MainThread {"errors":[{"text":"order.error.128"}]}
2022-03-14 11:42:02,077 CRITICAL MainThread 500
2022-03-14 11:42:02,077 CRITICAL MainThread {"errors":[{"text":"Internal server error"}]}
Unfortunately there is no more debug output despite I set
level=logging.DEBUG
I just found out that at least the
{"errors":[{"text":"Internal server error"}]}
error is gone, when I login to degiro once via browser. I guess this is a bug. The session is created correctly:
2022-03-14 12:08:17,645 INFO MainThread get_session_id:response_dict: {'isPassCodeEnabled': True, 'locale': 'de_DE', 'redirectUrl': 'https://trader.degiro.nl/trader/', 'sessionId': 'xxxxxxxxx.prod_a_116_4', 'status': 0, 'statusText': 'success'}
Might always happen after a weekend, when I did not login for a long time, but not sure. No, happened this morning again. Always have to login first, until buy order is executed.
This can be reproduced regularly on my account, does nobody else have this problem?
I also have the same issue. Any solution?
Could it be that you need to "sleep" in between two calls to the api enough time?
I have it also this morning
I wait between buy orders for 5 seconds, but it might be necessary to wait between every API call, will try this. The {"errors":[{"text":"order.error.128"}]}
error happens not so often and cannot be reproduced on my site.
@coveritytest I'm glad you brought this up, since I have the same experience. It's certainly not related to a timeout issue between consecutive API calls, see my remark in this post.
Work-around
- Our script with the DeGiro Connector (API) runs dedicated on laptop 1.
- We start it 1.5 hours before New York Market opening and let it run for 9 hours in total
- Together with the start of the script, we login to DeGiro web portal on laptop 2.
- After a random amount of time, the web portal on laptop 2 is logged out automatically.
- Orders created with the API on laptop 1 will be executed without issues.
When we omit step 3, step 5 will fail with errors.
Observations
- Since we use 2 different laptops, nothing can be set on the local machine. So DeGiro must link something to the account.
- Since the API error is introduced after time (i.e. when not logged in to the web portal for 1 day) it seems to relate to something as an OAuth expiration.
- Apparently the login to the web portal does something else to the DeGiro account server, than the API
connect()
method. @Chavithra Do you have any idea what this difference might be?
I agree that the login process for the web portal is different from DeGiro's API connect() method. I have noticed that if you log in via the browser or your phone, no errors pop up until midnight of the next day . So right now I am logging in into Degiro every morning as workaround, so that I am sure my daily orders will go through. But it isn't very pleasant experience, and goes against principle of having automated API where everything supposed to be automated without user intervention.
I can also support and try to find the bug if @Chavithra you can point me out where do you think this is coming from
I have the same issue as well..
Same issue here. Following for a solution!
Any news about this?
Nice analysis.
Will try to reproduce it this month.
Questions :
- Which action fail exactly (create, update, delete order) ?
- What is the duration of these orders ?
- Did you try to force connect() everyday ?
Nice analysis.
Will try to reproduce it this month.
Questions :
- Which action fail exactly (create, update, delete order) ?
- What is the duration of these orders ?
- Did you try to force connect() everyday ?
- When we create the first order of the day,
check_order()
throwsTimeoutError
exception. Our script handles this by aconnect()
and upon success retries thecheck_order()
. This will returnNone
. - It's a day order with some variables:
order = Order(
action = Order.Action.BUY,
order_type = Order.OrderType.LIMIT,
price = price,
product_id = product_id,
size = amount,
time_type = Order.TimeType.GOOD_TILL_DAY
)
- Yes, see answer 1.
I hope this helps for your analysis.
I agree with @funnel20.
If I do not perform a login via browser besides degiro connector once a day, sell and buy orders fail. It's difficult to say those are the only actions failing because I only need to delete an order if it exists. And yes, I've tried to force reconnection. Indeed, I even implemented a connection step before creating a buy/sell order. Even with this "workaround", it still fails.
I was thinking about the issue and, a dirty solution to temporarily mitigate the problem would be the implementation of a browser login with chrome driver working in parallel to connect() function. It's far from ideal, but It can work (desperate times call for desperate measures)
Good day for you guys :)
Did someone manage to solve this without having to manually log in ?
Never had the issue actually, using 2fa auth and running the script from a Google cloud function
Hey, I have the same issue. Any solution/fix?
Same issue here