degiro-connector icon indicating copy to clipboard operation
degiro-connector copied to clipboard

Order only succeeds when logged in once via browser

Open coveritytest opened this issue 2 years ago • 18 comments

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.

coveritytest avatar Mar 14 '22 11:03 coveritytest

This can be reproduced regularly on my account, does nobody else have this problem?

coveritytest avatar Mar 25 '22 07:03 coveritytest

I also have the same issue. Any solution?

TommasoBendinelli avatar Mar 25 '22 13:03 TommasoBendinelli

Could it be that you need to "sleep" in between two calls to the api enough time?

TommasoBendinelli avatar Mar 25 '22 18:03 TommasoBendinelli

I have it also this morning

TommasoBendinelli avatar Mar 26 '22 12:03 TommasoBendinelli

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 avatar Mar 29 '22 06:03 coveritytest

@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

  1. Our script with the DeGiro Connector (API) runs dedicated on laptop 1.
  2. We start it 1.5 hours before New York Market opening and let it run for 9 hours in total
  3. Together with the start of the script, we login to DeGiro web portal on laptop 2.
  4. After a random amount of time, the web portal on laptop 2 is logged out automatically.
  5. 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?

funnel20 avatar Apr 28 '22 09:04 funnel20

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.

TommasoBendinelli avatar Apr 30 '22 07:04 TommasoBendinelli

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

TommasoBendinelli avatar Apr 30 '22 07:04 TommasoBendinelli

I have the same issue as well..

Henriquem-pt avatar May 14 '22 10:05 Henriquem-pt

Same issue here. Following for a solution!

pereira1408 avatar May 15 '22 12:05 pereira1408

Any news about this?

TommasoBendinelli avatar May 21 '22 09:05 TommasoBendinelli

Nice analysis.

Will try to reproduce it this month.

Questions :

  1. Which action fail exactly (create, update, delete order) ?
  2. What is the duration of these orders ?
  3. Did you try to force connect() everyday ?

Chavithra avatar May 24 '22 06:05 Chavithra

Nice analysis.

Will try to reproduce it this month.

Questions :

  1. Which action fail exactly (create, update, delete order) ?
  2. What is the duration of these orders ?
  3. Did you try to force connect() everyday ?
  1. When we create the first order of the day, check_order() throws TimeoutError exception. Our script handles this by a connect() and upon success retries the check_order(). This will return None.
  2. 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
)
  1. Yes, see answer 1.

I hope this helps for your analysis.

funnel20 avatar May 24 '22 07:05 funnel20

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 :)

pereira1408 avatar May 24 '22 08:05 pereira1408

Did someone manage to solve this without having to manually log in ?

Henriquem-pt avatar Jun 16 '22 06:06 Henriquem-pt

Never had the issue actually, using 2fa auth and running the script from a Google cloud function

nine1zero avatar Jun 16 '22 21:06 nine1zero

Hey, I have the same issue. Any solution/fix?

fmcruz avatar Oct 05 '22 15:10 fmcruz

Same issue here

nobodyguy avatar Dec 11 '23 17:12 nobodyguy