129 lines
4.1 KiB
Python
129 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
OKX API 连接测试脚本
|
||
用于验证API密钥配置是否正确,以及网络连接是否正常
|
||
"""
|
||
|
||
import okx.api.market as Market
|
||
import okx.api.account as Account
|
||
from config import API_KEY, SECRET_KEY, PASSPHRASE, TRADING_CONFIG
|
||
|
||
def test_public_api():
|
||
"""测试公共API(无需密钥)"""
|
||
print("=== 测试公共API ===")
|
||
|
||
try:
|
||
# 创建市场数据API实例(公共API)
|
||
market_api = Market.Market()
|
||
|
||
# 获取BTC-USDT行情
|
||
result = market_api.get_ticker(instId="BTC-USDT")
|
||
|
||
if result['code'] == '0':
|
||
price = float(result['data'][0]['last'])
|
||
print(f"✅ 公共API测试成功")
|
||
print(f"BTC/USDT 当前价格: ${price:,.2f}")
|
||
return True
|
||
else:
|
||
print(f"❌ 公共API测试失败: {result}")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f"❌ 公共API测试异常: {e}")
|
||
return False
|
||
|
||
def test_private_api():
|
||
"""测试私有API(需要密钥)"""
|
||
print("\n=== 测试私有API ===")
|
||
|
||
try:
|
||
# 检查API密钥是否已配置
|
||
if API_KEY == "your_api_key_here":
|
||
print("⚠️ API密钥未配置,跳过私有API测试")
|
||
print("请在config.py中配置你的API密钥")
|
||
return False
|
||
|
||
# 创建账户API实例
|
||
flag = "0" if TRADING_CONFIG["sandbox"] else "1"
|
||
account_api = Account.Account(
|
||
API_KEY, SECRET_KEY, PASSPHRASE,
|
||
flag=flag, debug=False
|
||
)
|
||
|
||
# 获取账户余额
|
||
result = account_api.get_account_balance()
|
||
|
||
if result['code'] == '0':
|
||
print("✅ 私有API测试成功")
|
||
print("账户余额信息:")
|
||
for balance in result['data']:
|
||
if balance['ccy'] in ['USDT', 'BTC']:
|
||
print(f" {balance['ccy']}: {balance['bal']}")
|
||
return True
|
||
else:
|
||
print(f"❌ 私有API测试失败: {result}")
|
||
if result['code'] == '50001':
|
||
print("可能原因: API密钥错误或权限不足")
|
||
elif result['code'] == '50002':
|
||
print("可能原因: 签名错误")
|
||
elif result['code'] == '50004':
|
||
print("可能原因: 请求过于频繁")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f"❌ 私有API测试异常: {e}")
|
||
return False
|
||
|
||
def test_environment():
|
||
"""测试环境配置"""
|
||
print("\n=== 测试环境配置 ===")
|
||
|
||
print(f"沙盒环境: {'是' if TRADING_CONFIG['sandbox'] else '否'}")
|
||
print(f"交易对: {TRADING_CONFIG['symbol']}")
|
||
print(f"交易数量: {TRADING_CONFIG['position_size']} BTC")
|
||
|
||
# 检查依赖包
|
||
try:
|
||
import pandas as pd
|
||
import numpy as np
|
||
print("✅ 依赖包检查通过")
|
||
except ImportError as e:
|
||
print(f"❌ 依赖包缺失: {e}")
|
||
print("请运行: pip install pandas numpy")
|
||
return False
|
||
|
||
return True
|
||
|
||
def main():
|
||
"""主测试函数"""
|
||
print("🚀 OKX API 连接测试")
|
||
print("=" * 50)
|
||
|
||
# 测试环境配置
|
||
env_ok = test_environment()
|
||
|
||
# 测试公共API
|
||
public_ok = test_public_api()
|
||
|
||
# 测试私有API
|
||
private_ok = test_private_api()
|
||
|
||
# 总结
|
||
print("\n" + "=" * 50)
|
||
print("📊 测试结果总结:")
|
||
print(f"环境配置: {'✅ 通过' if env_ok else '❌ 失败'}")
|
||
print(f"公共API: {'✅ 通过' if public_ok else '❌ 失败'}")
|
||
print(f"私有API: {'✅ 通过' if private_ok else '❌ 失败'}")
|
||
|
||
if env_ok and public_ok:
|
||
print("\n🎉 基础功能测试通过!可以运行主程序了。")
|
||
if private_ok:
|
||
print("🔐 API密钥配置正确,可以进行交易操作。")
|
||
else:
|
||
print("⚠️ API密钥需要配置或有问题,只能使用公共功能。")
|
||
else:
|
||
print("\n❌ 存在配置问题,请检查后重试。")
|
||
|
||
if __name__ == "__main__":
|
||
main() |