Edit: обновлены для поддержки состояний фильтра для заказов
Edit: добавлена поддержка для заполнения или убить и немедленно или отменить заказ
Код:
импорт HTTPLIB
импорт URLLIB
импорт JSON
импорт десятичное
импорт потоковая
гнездо импорта
Класс intersango:
версия = "0,1"
good_til_cancelled = 'GTC'
fill_or_kill = 'Фок'
immediate_or_cancel = 'МОК
Защиту __init __ (я, api_key):
self.api_key = api_key
не self.connection = None
Защита подключения (самостоятельно):
если self.connection не None:
self.connection = httplib.HTTPSConnection ( 'intersango.com')
Защиту make_request (я, call_name, Params):
params.append (( 'api_key', self.api_key))
Тело = urllib.urlencode (PARAMS)
self.connect ()
пытаться:
self.connection.putrequest ( 'POST', '/ API / аутентифицирован / у' + self.version + '/' + call_name +. PHP ')
self.connection.putheader ( 'Connection', 'Keep-Alive')
self.connection.putheader ( 'Keep-Alive', '30')
self.connection.putheader ( 'Content-Type', 'применение / х-WWW-форм-urlencoded')
self.connection.putheader ( 'Content-Length', длина (тела))
self.connection.endheaders ()
self.connection.send (корпус)
ответ = self.connection.getresponse ()
Возвращение json.load (ответ)
кроме httplib.HTTPException:
не self.connection = None
вернуться Ложные
кроме socket.error:
не self.connection = None
вернуться Ложные
Защиту list_accounts (самостоятельно):
вернуться self.make_request (Dict 'listAccounts', ())
Защиту list_orders (я, account_id, last_order_id = None, заявляет = None):
PARAMS = [( 'account_id', ACCOUNT_ID)]
если last_order_id не является None:
params.append (( 'last_order_id', last_order_id))
если состояния не является None:
для государства в государствах:
params.append (( 'состояния []', состояние))
возвращающие self.make_request ( 'listOrders', PARAMS)
Защиту list_deposits (самоповреждения, account_id):
вернуть self.make_request ( 'listDeposits', [( 'account_id', account_id)])
Защиту list_withdrawal_requests (самоповреждения, account_id):
вернуть self.make_request ( 'listWithdrawalRequests', [( 'account_id', account_id)])
Защиту place_limit_order (само, количество, скорость, продажа, base_account_id, quote_account_id, order_type = good_til_cancelled):
PARAMS = []
утверждают, тип (количество) == decimal.Decimal
утверждают, тип (скорость) == decimal.Decimal
params.append (( 'количество', количество))
params.append (( 'Скорость', скорость))
params.append (( 'продажа', ул (продажа) .lower ()))
params.append (( 'base_account_id', base_account_id))
params.append (( 'quote_account_id', quote_account_id))
params.append (( 'типа', order_type))
вернуться self.make_request ( 'placeLimitOrder', Params)
Защиту request_cancel_order (я, account_id, order_id):
вернуть self.make_request ( 'requestCancelOrder', [( 'account_id', ACCOUNT_ID), ( 'ORDER_ID', ORDER_ID)])
б = intersango ( «ключ апи идет здесь»)
b.place_limit_order (decimal.Decimal ('10 '), decimal.Decimal (' 2,49051' ), правда, 1,2, intersango.immediate_or_cancel)
импорт URLLIB
импорт JSON
импорт десятичное
импорт потоковая
гнездо импорта
Класс intersango:
версия = "0,1"
good_til_cancelled = 'GTC'
fill_or_kill = 'Фок'
immediate_or_cancel = 'МОК
Защиту __init __ (я, api_key):
self.api_key = api_key
не self.connection = None
Защита подключения (самостоятельно):
если self.connection не None:
self.connection = httplib.HTTPSConnection ( 'intersango.com')
Защиту make_request (я, call_name, Params):
params.append (( 'api_key', self.api_key))
Тело = urllib.urlencode (PARAMS)
self.connect ()
пытаться:
self.connection.putrequest ( 'POST', '/ API / аутентифицирован / у' + self.version + '/' + call_name +. PHP ')
self.connection.putheader ( 'Connection', 'Keep-Alive')
self.connection.putheader ( 'Keep-Alive', '30')
self.connection.putheader ( 'Content-Type', 'применение / х-WWW-форм-urlencoded')
self.connection.putheader ( 'Content-Length', длина (тела))
self.connection.endheaders ()
self.connection.send (корпус)
ответ = self.connection.getresponse ()
Возвращение json.load (ответ)
кроме httplib.HTTPException:
не self.connection = None
вернуться Ложные
кроме socket.error:
не self.connection = None
вернуться Ложные
Защиту list_accounts (самостоятельно):
вернуться self.make_request (Dict 'listAccounts', ())
Защиту list_orders (я, account_id, last_order_id = None, заявляет = None):
PARAMS = [( 'account_id', ACCOUNT_ID)]
если last_order_id не является None:
params.append (( 'last_order_id', last_order_id))
если состояния не является None:
для государства в государствах:
params.append (( 'состояния []', состояние))
возвращающие self.make_request ( 'listOrders', PARAMS)
Защиту list_deposits (самоповреждения, account_id):
вернуть self.make_request ( 'listDeposits', [( 'account_id', account_id)])
Защиту list_withdrawal_requests (самоповреждения, account_id):
вернуть self.make_request ( 'listWithdrawalRequests', [( 'account_id', account_id)])
Защиту place_limit_order (само, количество, скорость, продажа, base_account_id, quote_account_id, order_type = good_til_cancelled):
PARAMS = []
утверждают, тип (количество) == decimal.Decimal
утверждают, тип (скорость) == decimal.Decimal
params.append (( 'количество', количество))
params.append (( 'Скорость', скорость))
params.append (( 'продажа', ул (продажа) .lower ()))
params.append (( 'base_account_id', base_account_id))
params.append (( 'quote_account_id', quote_account_id))
params.append (( 'типа', order_type))
вернуться self.make_request ( 'placeLimitOrder', Params)
Защиту request_cancel_order (я, account_id, order_id):
вернуть self.make_request ( 'requestCancelOrder', [( 'account_id', ACCOUNT_ID), ( 'ORDER_ID', ORDER_ID)])
б = intersango ( «ключ апи идет здесь»)
b.place_limit_order (decimal.Decimal ('10 '), decimal.Decimal (' 2,49051' ), правда, 1,2, intersango.immediate_or_cancel)