From b1363613d311cff304f4da1f52d83920f9b32b64 Mon Sep 17 00:00:00 2001 From: "zihao.jiang" Date: Mon, 14 Aug 2023 20:35:24 +0800 Subject: [PATCH] add spread --- okx/SpreadTrading.py | 67 ++++++++++++++++++++++++++++++++++++++++ test/AccountTest.py | 6 ++-- test/BlockTradingTest.py | 6 ++-- test/BrokerTest.py | 27 +++++++--------- test/ConvertTest.py | 6 ++-- test/CopyTradingTest.py | 6 ++-- test/EarningTest.py | 6 ++-- test/FundingTest.py | 6 ++-- test/GridTest.py | 6 ++-- test/MarketTest.py | 6 ++-- test/PublicDataTest.py | 6 ++-- test/SpreadTest.py | 46 +++++++++++++++++++++++++++ test/StackingTest.py | 6 ++-- test/SubAccountTest.py | 9 ++++-- test/TradeTest.py | 6 ++-- test/TradingDataTest.py | 6 ++-- 16 files changed, 166 insertions(+), 55 deletions(-) create mode 100644 okx/SpreadTrading.py create mode 100644 test/SpreadTest.py diff --git a/okx/SpreadTrading.py b/okx/SpreadTrading.py new file mode 100644 index 0000000..d1ba162 --- /dev/null +++ b/okx/SpreadTrading.py @@ -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) + diff --git a/test/AccountTest.py b/test/AccountTest.py index 0a4c922..65003ac 100644 --- a/test/AccountTest.py +++ b/test/AccountTest.py @@ -4,9 +4,9 @@ from okx import Account class AccountTest(unittest.TestCase): def setUp(self): - api_key = 'e2ea07df-15ca-405c-9e23-addb4aca8a42' - api_secret_key = 'DE69BED90FF154085B56020A88B2638A' - passphrase = '12345678aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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 diff --git a/test/BlockTradingTest.py b/test/BlockTradingTest.py index 4d062a9..e8b0e88 100644 --- a/test/BlockTradingTest.py +++ b/test/BlockTradingTest.py @@ -3,9 +3,9 @@ import unittest from okx import BlockTrading class BlockTradingTest(unittest.TestCase): def setUp(self): - api_key = 'a6f1e378-1c03-472d-ada0-710f4d51eebf' - api_secret_key = '74A6E1E03700D5EFCC2BBB7782170189' - passphrase = 'Qa131415!' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.BlockTradingAPI = BlockTrading.BlockTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') """ diff --git a/test/BrokerTest.py b/test/BrokerTest.py index e4a034c..c3cc2f6 100644 --- a/test/BrokerTest.py +++ b/test/BrokerTest.py @@ -1,18 +1,12 @@ import unittest -from ..okx import NDBroker +from okx import NDBroker class BrokerTest(unittest.TestCase): def setUp(self): - ''' - - 52c37310-a8b0-454a-8191-3250acff2626 - EC37534156E6B8C32E78FE8D8C1D506B - Hanhao0.0 - ''' - api_key = '52c37310-a8b0-454a-8191-3250acff2626' - api_secret_key = 'EC37534156E6B8C32E78FE8D8C1D506B' - passphrase = 'Hanhao0.0' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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): 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__': unittest.main() \ No newline at end of file diff --git a/test/ConvertTest.py b/test/ConvertTest.py index d4faa28..aa1d175 100644 --- a/test/ConvertTest.py +++ b/test/ConvertTest.py @@ -2,9 +2,9 @@ import unittest from ..okx import Convert class ConvertTest(unittest.TestCase): def setUp(self): - api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' - api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' - passphrase = 'Beijing123' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.ConvertAPI = Convert.ConvertAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') ''' diff --git a/test/CopyTradingTest.py b/test/CopyTradingTest.py index dd76a43..95c1739 100644 --- a/test/CopyTradingTest.py +++ b/test/CopyTradingTest.py @@ -3,9 +3,9 @@ from okx import CopyTrading class CopyTradingTest(unittest.TestCase): def setUp(self): - api_key = 'd4ee8839-1142-41c0-add5-e2e82a91efd2' - api_secret_key = '57E5BEFAB7BD024A91647819E9BCA285' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.StackingAPI = CopyTrading.CopyTradingAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0') diff --git a/test/EarningTest.py b/test/EarningTest.py index f81dd76..a0ca88e 100644 --- a/test/EarningTest.py +++ b/test/EarningTest.py @@ -3,9 +3,9 @@ from okx import Earning class EarningTest(unittest.TestCase): def setUp(self): - api_key = 'cfa1017d-940a-445f-af52-b340cbd6b0e0' - api_secret_key = '6C50A4E980230A4BBE7046411DED0276' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.StackingAPI = Earning.EarningAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='0') diff --git a/test/FundingTest.py b/test/FundingTest.py index ea8e872..d5725fd 100644 --- a/test/FundingTest.py +++ b/test/FundingTest.py @@ -4,9 +4,9 @@ from okx import Funding class FundingTest(unittest.TestCase): def setUp(self): - api_key = 'cfa1017d-940a-445f-af52-b340cbd6b0e0' - api_secret_key = '6C50A4E980230A4BBE7046411DED0276' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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 diff --git a/test/GridTest.py b/test/GridTest.py index 5efb68a..6e8f7da 100644 --- a/test/GridTest.py +++ b/test/GridTest.py @@ -4,9 +4,9 @@ from okx import Grid class GridTest(unittest.TestCase): def setUp(self): - api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' - api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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' diff --git a/test/MarketTest.py b/test/MarketTest.py index 7ce0bec..8b5fbae 100644 --- a/test/MarketTest.py +++ b/test/MarketTest.py @@ -14,9 +14,9 @@ BLOCK_TRADES = '/api/v5/market/block-trades'#need to add class MarketAPITest(unittest.TestCase): def setUp(self): - api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' - api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' - passphrase = 'Beijing123' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.MarketApi = MarketData.MarketAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') ''' diff --git a/test/PublicDataTest.py b/test/PublicDataTest.py index f723425..7d7449d 100644 --- a/test/PublicDataTest.py +++ b/test/PublicDataTest.py @@ -2,9 +2,9 @@ import unittest from okx import PublicData class publicDataTest(unittest.TestCase): def setUp(self): - api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' - api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.publicDataApi = PublicData.PublicAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') ''' TestCase For: diff --git a/test/SpreadTest.py b/test/SpreadTest.py new file mode 100644 index 0000000..cbaf6e8 --- /dev/null +++ b/test/SpreadTest.py @@ -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() diff --git a/test/StackingTest.py b/test/StackingTest.py index feff55b..b1b6350 100644 --- a/test/StackingTest.py +++ b/test/StackingTest.py @@ -3,9 +3,9 @@ from okx import Status class StackingTest(unittest.TestCase): def setUp(self): - api_key = 'ef06bf27-6a01-4797-b801-e3897031e45d' - api_secret_key = 'D3620B2660203350EEE80FDF5BE0C960' - passphrase = 'Beijing123' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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' diff --git a/test/SubAccountTest.py b/test/SubAccountTest.py index 69491d9..f8e1caf 100644 --- a/test/SubAccountTest.py +++ b/test/SubAccountTest.py @@ -3,9 +3,9 @@ from okx import SubAccount class SubAccountTest(unittest.TestCase): def setUp(self): - api_key = 'e2ea07df-15ca-405c-9e23-addb4aca8a42' - api_secret_key = 'DE69BED90FF154085B56020A88B2638A' - passphrase = '12345678aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' 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 @@ -46,5 +46,8 @@ class SubAccountTest(unittest.TestCase): def test_get_sub_account_borrow_interest_and_limit(self): 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__": unittest.main() \ No newline at end of file diff --git a/test/TradeTest.py b/test/TradeTest.py index 0434564..53ea252 100644 --- a/test/TradeTest.py +++ b/test/TradeTest.py @@ -2,9 +2,9 @@ import unittest from okx import Trade class TradeTest(unittest.TestCase): def setUp(self): - api_key = 'da097c9c-2f77-4dea-be18-2bfa77d0e394' - api_secret_key = '56CC6C72D6B8A46EC993D48C83142A25' - passphrase = '123456aA.' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.tradeApi = Trade.TradeAPI(api_key, api_secret_key, passphrase, False, '1') """ def test_place_order(self): diff --git a/test/TradingDataTest.py b/test/TradingDataTest.py index e3083fd..ac318b6 100644 --- a/test/TradingDataTest.py +++ b/test/TradingDataTest.py @@ -4,9 +4,9 @@ from ..okx import TradingData class TradingDataTest(unittest.TestCase): def setUp(self): - api_key = '52c37310-a8b0-454a-8191-3250acff2626' - api_secret_key = 'EC37534156E6B8C32E78FE8D8C1D506B' - passphrase = 'Hanhao0.0' + api_key = 'your_apiKey' + api_secret_key = 'your_secretKey' + passphrase = 'your_secretKey' self.TradingDataAPI = TradingData.TradingDataAPI(api_key, api_secret_key, passphrase, use_server_time=False, flag='1') """