Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Okx Exchange - API key unknown #2832

Open
ShinobiCat opened this issue Dec 19, 2024 · 3 comments
Open

Okx Exchange - API key unknown #2832

ShinobiCat opened this issue Dec 19, 2024 · 3 comments

Comments

@ShinobiCat
Copy link

Step 1: Have you search for this issue before posting it?

If you have discovered a bug in the bot, please search our issue tracker.
If it hasn't been reported, please create a new issue.

Step 2: Describe your environment

  • OS : Issue is platform independent
  • Python Version: 3.10.11
  • In case you are not using a binary version:
    • Branch: Master
    • Last Commit ID: 61926c3f8095b46ca867244947bb883fa608f1e8

ccxt/ccxt#24601

Step 3: Describe the problem:

Describe the bug
When entering working api credentials the Exchange accounts setup throws an unknow api key error

Expected behavior
Succes: Account should be linked to api credentials

Steps to reproduce:

  1. Add an exchange account for okx according to octobot docs
  2. Use api credentials from your my.okx.com (EEA) account

Observed Results:

  • Error, can't continue
  • Start using my account

Relevant code exceptions or logs:

More details here

import ccxt
import logging
import traceback

# Configuration (replace with actual values)
API_KEY = 'redacted'
SECRET_KEY = 'redacted'
PASSPHRASE = 'redacted'

# Default domains
domain_myokx = 'https://my.okx.com'
domain_www = 'https://www.okx.com'

# Set up logging
logging.basicConfig(level=logging.DEBUG)  # Use DEBUG level for more detailed logs

def get_account_balance(ticker='ETH'):
    domains = [domain_www, domain_myokx]
    failed_domains = []
    for domain in domains:
        try:
            logging.debug(f"Attempting to create exchange object for domain: {domain}")

            # Create the exchange object with API keys and domain
            exchange = ccxt.okx({
                'apiKey': API_KEY,
                'secret': SECRET_KEY,
                'password': PASSPHRASE,
                'hostname': domain.split('//')[1],  # Set the hostname to use in the URL structure
            })        

            # Fetch the balance
            logging.debug("Fetching balance...")
            balance = exchange.fetch_balance()
            logging.info(f"Balance for {ticker} on {domain}: {balance[ticker]}")
            return balance[ticker]

        except Exception as e:
            failed_domains.append(domain)
            logging.error(f"Failed to get balance from {', '.join(failed_domains)}: {e}")

    raise Exception(f"Failed to get balance from all domains. Failed domains: {', '.join(failed_domains)}")

# Log the beginning of the script execution
result = get_account_balance('ETH')
logging.info("Script started")

# Final result output
if result is not None:
    logging.info(f"Final account balance for ETH retrieved: {result}")
else:
    logging.error("Failed to retrieve account balance for ETH from all domains.")

# End of script
logging.info("Script execution finished")

I would like to add a region variable overwriting the hardcoded ccxt hostname for the okx provider, as shown in the above code this works. We could expose the variable as a boolean switch on the exchange setup page.

@TitaniumMaker
Copy link

Changes in OKX API server.

I recently received an email from OKX telling their API servers will be updated to another host.
So Im trying to find a way to modify the config to change the host but I'm still trying.
The new REST API server address is eea.okx.com and the new domain for the websocket will be changed to wseea.okx.com

I checked the "Updated Documentation" but I couldn't find this information so please check your email for more information.
Guess this can solve the problem but I can't help any further then this so good luck!

@Herklos
Copy link
Member

Herklos commented Dec 20, 2024

Changes in OKX API server.

I recently received an email from OKX telling their API servers will be updated to another host. So Im trying to find a way to modify the config to change the host but I'm still trying. The new REST API server address is eea.okx.com and the new domain for the websocket will be changed to wseea.okx.com

I checked the "Updated Documentation" but I couldn't find this information so please check your email for more information. Guess this can solve the problem but I can't help any further then this so good luck!

Hi @TitaniumMaker, thanks for the update! It will help us fixing the issue.

@ShinobiCat
Copy link
Author

Changes in OKX API server.

I recently received an email from OKX telling their API servers will be updated to another host. So Im trying to find a way to modify the config to change the host but I'm still trying. The new REST API server address is eea.okx.com and the new domain for the websocket will be changed to wseea.okx.com

I checked the "Updated Documentation" but I couldn't find this information so please check your email for more information. Guess this can solve the problem but I can't help any further then this so good luck!

Hi @TitaniumMaker,

I use okx myself and am currently working on a fix which might also solve your issue.

I wasn't aware of these okx changes. You got any docs or information regarding their go live? Also they are splitting the rest and websocket domains? What's the current behaviour?

I've fixed the issue with current eu servers 'my.okx' not working. I have to implement a user friendly way to select custom hostnames still. This might only be for rest though, will have to investigate websocket behaviour.

Soon as I find out where OctoBot is handling it's frontend expect me to push the changes to my fork and send a pull request for the team to review.

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

No branches or pull requests

3 participants