add spread

This commit is contained in:
zihao.jiang 2023-08-14 20:35:24 +08:00
parent 9266813aac
commit b1363613d3
16 changed files with 166 additions and 55 deletions

67
okx/SpreadTrading.py Normal file
View File

@ -0,0 +1,67 @@
from .client import Client
from .consts import *
class SpreadAPI(Client):
def __init__(self, api_key='-1', api_secret_key='-1', passphrase='-1', use_server_time=False, flag='1', domain = 'https://www.okx.com',debug = True):
Client.__init__(self, api_key, api_secret_key, passphrase, use_server_time, flag, domain,debug)
# Place Order
def place_order(self, sprdId='', clOrdId='', tag='', side='', ordType='', sz='', px=''):
params = {'sprdId': sprdId, 'clOrdId': clOrdId, 'tag': tag, 'side': side, 'ordType': ordType, 'sz': sz,
'px': px}
return self._request_with_params(POST, SPREAD_PLACE_ORDER, params)
# Cancel Order
def cancel_order(self,ordId='', clOrdId=''):
params = {'ordId': ordId, 'clOrdId': clOrdId}
return self._request_with_params(POST, SPREAD_CANAEL_ORDER, params)
# Cancel All orders
def cancel_all_orders(self, sprdId=''):
params = {'sprdId': sprdId}
return self._request_with_params(POST, SPREAD_CANAEL_ALL_ORDERS, params)
# Get order details
def get_order_details(self, ordId='', clOrdId=''):
params = {'ordId': ordId, 'clOrdId': clOrdId}
return self._request_with_params(GET, SPREAD_GET_ORDER_DETAILS, params)
# Get active orders
def get_active_orders(self, sprdId='', ordType='', state='', beginId='', endId='', limit=''):
params = {'sprdId': sprdId, 'ordType': ordType, 'state': state, 'beginId': beginId, 'endId': endId, 'limit': limit}
return self._request_with_params(GET, SPREAD_GET_ACTIVE_ORDERS, params)
# Get orders (last 7 days)
def get_orders(self, sprdId='', ordType='', state='', beginId='', endId='', begin='', end='', limit=''):
params = {'sprdId': sprdId, 'ordType': ordType, 'state': state, 'beginId': beginId, 'endId': endId,
'begin': begin, 'end': end, 'limit': limit}
return self._request_with_params(GET, SPREAD_GET_ORDERS, params)
# Get trades (last 7 days)
def get_trades(self, sprdId='', tradeId='', ordId='', beginId='', endId='', begin='', end='', limit=''):
params = {'sprdId': sprdId, 'tradeId': tradeId, 'ordId': ordId, 'beginId': beginId, 'endId': endId,
'begin': begin, 'end': end, 'limit': limit}
return self._request_with_params(GET, SPREAD_GET_TRADES, params)
# Get Spreads (Public)
def get_spreads(self, baseCcy='',instId='', sprdId='', state=''):
params = {'baseCcy': baseCcy, 'instId': instId, 'sprdId': sprdId, 'state': state}
return self._request_with_params(GET, SPREAD_GET_SPREADS, params)
# Get order book (Public)
def get_order_book(self, sprdId='', sz=''):
params = {'sprdId': sprdId, 'sz': sz}
return self._request_with_params(GET, SPREAD_GET_ORDER_BOOK, params)
# Get ticker (Public)
def get_ticker(self, sprdId=''):
params = {'sprdId': sprdId}
return self._request_with_params(GET, SPREAD_GET_TICKER, params)
# Get public trades (Public)
def get_public_trades(self, sprdId=''):
params = {'sprdId': sprdId}
return self._request_with_params(GET, SPREAD_GET_PUBLIC_TRADES, params)

View File

@ -4,9 +4,9 @@ from okx import Account
class AccountTest(unittest.TestCase): class AccountTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'e2ea07df-15ca-405c-9e23-addb4aca8a42' api_key = 'your_apiKey'
api_secret_key = 'DE69BED90FF154085B56020A88B2638A' api_secret_key = 'your_secretKey'
passphrase = '12345678aA.' passphrase = 'your_secretKey'
self.AccountAPI = Account.AccountAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.AccountAPI = Account.AccountAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''
POSITIONS_HISTORY = '/api/v5/account/positions-history' #need add POSITIONS_HISTORY = '/api/v5/account/positions-history' #need add

View File

@ -3,9 +3,9 @@ import unittest
from okx import BlockTrading from okx import BlockTrading
class BlockTradingTest(unittest.TestCase): class BlockTradingTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'a6f1e378-1c03-472d-ada0-710f4d51eebf' api_key = 'your_apiKey'
api_secret_key = '74A6E1E03700D5EFCC2BBB7782170189' api_secret_key = 'your_secretKey'
passphrase = 'Qa131415!' passphrase = 'your_secretKey'
self.BlockTradingAPI = BlockTrading.BlockTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.BlockTradingAPI = BlockTrading.BlockTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
""" """

View File

@ -1,18 +1,12 @@
import unittest import unittest
from ..okx import NDBroker from okx import NDBroker
class BrokerTest(unittest.TestCase): class BrokerTest(unittest.TestCase):
def setUp(self): def setUp(self):
''' api_key = 'your_apiKey'
api_secret_key = 'your_secretKey'
52c37310-a8b0-454a-8191-3250acff2626 passphrase = 'your_secretKey'
EC37534156E6B8C32E78FE8D8C1D506B
Hanhao0.0
'''
api_key = '52c37310-a8b0-454a-8191-3250acff2626'
api_secret_key = 'EC37534156E6B8C32E78FE8D8C1D506B'
passphrase = 'Hanhao0.0'
self.NDBrokerAPI = NDBroker.NDBrokerAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.NDBrokerAPI = NDBroker.NDBrokerAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''
@ -59,12 +53,13 @@ class BrokerTest(unittest.TestCase):
def test_rebate_daily(self): def test_rebate_daily(self):
print(self.NDBrokerAPI.get_rebate_daily()) print(self.NDBrokerAPI.get_rebate_daily())
def test_create_rebate_per_order(self):
print(self.NDBrokerAPI.generate_rebate_per_orders("20220501","20220801"))
''' '''
def test_get_rebate_per_order(self):
print(self.NDBrokerAPI.get_rebate_per_orders("false",begin="20220501",end = "20220801")) # def test_get_subaccount_info(self):
# print(self.NDBrokerAPI.get_subaccount_info())
def test_set_nd_subaccount_asset_in_demo_trading(self):
print(self.NDBrokerAPI.set_nd_subaccount_asset_in_demo_trading(subAcct="zihaond4",ccy = "BTC"))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -2,9 +2,9 @@ import unittest
from ..okx import Convert from ..okx import Convert
class ConvertTest(unittest.TestCase): class ConvertTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' api_key = 'your_apiKey'
api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' api_secret_key = 'your_secretKey'
passphrase = 'Beijing123' passphrase = 'your_secretKey'
self.ConvertAPI = Convert.ConvertAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.ConvertAPI = Convert.ConvertAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''

View File

@ -3,9 +3,9 @@ from okx import CopyTrading
class CopyTradingTest(unittest.TestCase): class CopyTradingTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'd4ee8839-1142-41c0-add5-e2e82a91efd2' api_key = 'your_apiKey'
api_secret_key = '57E5BEFAB7BD024A91647819E9BCA285' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.StackingAPI = CopyTrading.CopyTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False, self.StackingAPI = CopyTrading.CopyTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False,
flag='0') flag='0')

View File

@ -3,9 +3,9 @@ from okx import Earning
class EarningTest(unittest.TestCase): class EarningTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'cfa1017d-940a-445f-af52-b340cbd6b0e0' api_key = 'your_apiKey'
api_secret_key = '6C50A4E980230A4BBE7046411DED0276' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.StackingAPI = Earning.EarningAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0') self.StackingAPI = Earning.EarningAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0')

View File

@ -4,9 +4,9 @@ from okx import Funding
class FundingTest(unittest.TestCase): class FundingTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'cfa1017d-940a-445f-af52-b340cbd6b0e0' api_key = 'your_apiKey'
api_secret_key = '6C50A4E980230A4BBE7046411DED0276' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.FundingAPI = Funding.FundingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0') self.FundingAPI = Funding.FundingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0')
""" """
CANCEL_WITHDRAWAL = '/api/v5/asset/cancel-withdrawal' #need add CANCEL_WITHDRAWAL = '/api/v5/asset/cancel-withdrawal' #need add

View File

@ -4,9 +4,9 @@ from okx import Grid
class GridTest(unittest.TestCase): class GridTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' api_key = 'your_apiKey'
api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.GridAPI = Grid.GridAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1', debug=False) self.GridAPI = Grid.GridAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1', debug=False)
""" """
GRID_COMPUTE_MARIGIN_BALANCE = '/api/v5/tradingBot/grid/compute-margin-balance' GRID_COMPUTE_MARIGIN_BALANCE = '/api/v5/tradingBot/grid/compute-margin-balance'

View File

@ -14,9 +14,9 @@ BLOCK_TRADES = '/api/v5/market/block-trades'#need to add
class MarketAPITest(unittest.TestCase): class MarketAPITest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' api_key = 'your_apiKey'
api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' api_secret_key = 'your_secretKey'
passphrase = 'Beijing123' passphrase = 'your_secretKey'
self.MarketApi = MarketData.MarketAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.MarketApi = MarketData.MarketAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''

View File

@ -2,9 +2,9 @@ import unittest
from okx import PublicData from okx import PublicData
class publicDataTest(unittest.TestCase): class publicDataTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' api_key = 'your_apiKey'
api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.publicDataApi = PublicData.PublicAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.publicDataApi = PublicData.PublicAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''
TestCase For: TestCase For:

46
test/SpreadTest.py Normal file
View File

@ -0,0 +1,46 @@
import unittest
from okx import SpreadTrading
class TradeTest(unittest.TestCase):
def setUp(self):
api_key = 'your_apiKey'
api_secret_key = 'your_secretKey'
passphrase = 'your_secretKey'
self.tradeApi = SpreadTrading.SpreadTradingAPI(api_key, api_secret_key, passphrase, False, '1')
# def test_place_order(self):
# print(self.tradeApi.place_order(sprdId='BTC-USDT_BTC-USDT-SWAP',clOrdId='b15',side='buy',ordType='limit',
# px='2',sz='2'))
#{'code': '0', 'msg': '', 'data': [{'ordId': '1899422086260064256', 'clOrdId': 'b15', 'tag': '', 'sCode': '0', 'sMsg': ''}]}
# def test_cancel_order(self):
# print(self.tradeApi.cancel_order(ordId='1899422086260064256'))
# def test_cancel_all_orders(self):
# print(self.tradeApi.cancel_all_orders(sprdId='BTC-USDT_BTC-USDT-SWAP'))
#{'code': '0', 'msg': '','data': [{'ordId': '1899453539647750144', 'clOrdId': 'b15', 'tag': '', 'sCode': '0',
# 'sMsg': ''}]}
# def test_get_order_details(self):
# print(self.tradeApi.get_order_details(ordId='1899453539647750144'))
# def test_get_active_orders(self):
# print(self.tradeApi.get_active_orders())
# def test_get_orders(self):
# print(self.tradeApi.get_orders())
# def test_get_spreads(self):
# print(self.tradeApi.get_spreads())
# def test_get_order_book(self):
# print(self.tradeApi.get_order_book(sprdId='ETH-USDT-SWAP_ETH-USDT-230929'))
#
# def test_get_ticker(self):
# print(self.tradeApi.get_ticker(sprdId='ETH-USDT-SWAP_ETH-USDT-230929'))
#
def test_get_public_trades(self):
print(self.tradeApi.get_public_trades(sprdId='ETH-USDT-SWAP_ETH-USDT-230929'))
if __name__=='__main__':
unittest.main()

View File

@ -3,9 +3,9 @@ from okx import Status
class StackingTest(unittest.TestCase): class StackingTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' api_key = 'your_apiKey'
api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' api_secret_key = 'your_secretKey'
passphrase = 'Beijing123' passphrase = 'your_secretKey'
self.StackingAPI = Status.StackingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.StackingAPI = Status.StackingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''
STACK_DEFI_OFFERS = '/api/v5/finance/staking-defi/offers' STACK_DEFI_OFFERS = '/api/v5/finance/staking-defi/offers'

View File

@ -3,9 +3,9 @@ from okx import SubAccount
class SubAccountTest(unittest.TestCase): class SubAccountTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'e2ea07df-15ca-405c-9e23-addb4aca8a42' api_key = 'your_apiKey'
api_secret_key = 'DE69BED90FF154085B56020A88B2638A' api_secret_key = 'your_secretKey'
passphrase = '12345678aA.' passphrase = 'your_secretKey'
self.SubAccountApi = SubAccount.SubAccountAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') self.SubAccountApi = SubAccount.SubAccountAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1')
''' '''
ENTRUST_SUBACCOUNT_LIST = '/api/v5/users/entrust-subaccount-list' #need to add ENTRUST_SUBACCOUNT_LIST = '/api/v5/users/entrust-subaccount-list' #need to add
@ -46,5 +46,8 @@ class SubAccountTest(unittest.TestCase):
def test_get_sub_account_borrow_interest_and_limit(self): def test_get_sub_account_borrow_interest_and_limit(self):
print(self.SubAccountApi.get_sub_account_borrow_interest_and_limit(subAcct='coretrading7')) print(self.SubAccountApi.get_sub_account_borrow_interest_and_limit(subAcct='coretrading7'))
# def test_get_history_of_managed_subAccount_transfer(self):
# print(self.SubAccountApi.get_history_of_managed_subAccount_transfer())
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()

View File

@ -2,9 +2,9 @@ import unittest
from okx import Trade from okx import Trade
class TradeTest(unittest.TestCase): class TradeTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' api_key = 'your_apiKey'
api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' api_secret_key = 'your_secretKey'
passphrase = '123456aA.' passphrase = 'your_secretKey'
self.tradeApi = Trade.TradeAPI(api_key, api_secret_key, passphrase, False, '1') self.tradeApi = Trade.TradeAPI(api_key, api_secret_key, passphrase, False, '1')
""" """
def test_place_order(self): def test_place_order(self):

View File

@ -4,9 +4,9 @@ from ..okx import TradingData
class TradingDataTest(unittest.TestCase): class TradingDataTest(unittest.TestCase):
def setUp(self): def setUp(self):
api_key = '52c37310-a8b0-454a-8191-3250acff2626' api_key = 'your_apiKey'
api_secret_key = 'EC37534156E6B8C32E78FE8D8C1D506B' api_secret_key = 'your_secretKey'
passphrase = 'Hanhao0.0' passphrase = 'your_secretKey'
self.TradingDataAPI = TradingData.TradingDataAPI(api_key, api_secret_key, passphrase, use_server_time=False, self.TradingDataAPI = TradingData.TradingDataAPI(api_key, api_secret_key, passphrase, use_server_time=False,
flag='1') flag='1')
""" """