Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 1, 2019 11:11:19

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается создать функцию.

Проблема такая. Есть код подключения к бирже Эксмо.

 import urllib
import http.client
import json
import hmac
import hashlib
import time
API_KEY = ''
API_SECRET = b''
API_URL = 'api.exmo.com'
API_VERSION = 'v1'
class ScriptError(Exception):
    pass
class ScriptQuitCondition(Exception):
    pass
def call_api(api_method, http_method="POST", **kwargs):
    payload = {'nonce': int(round(time.time() * 1000))}
    if kwargs:
        payload.update(kwargs)
    payload = urllib.parse.urlencode(payload)
    H = hmac.new(key = API_SECRET, digestmod = hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()
    headers = {"Content-type": "application/x-www-form-urlencoded",
               "Key": API_KEY,
               "Sign": sign}
    conn = http.client.HTTPSConnection(API_URL, timeout = 60)
    conn.request(http_method, "/" + API_VERSION + "/" + api_method, payload, headers)
    response = conn.getresponse().read()
    conn.close()
    try:
        obj = json.loads(response.decode('utf-8'))
        if 'error' in obj and obj['error']:
            raise ScriptError(obj)['error']
        return obj
    except ValueError:
        raise ScriptError('Ошибка анализа возращаемых данных, получена строка', response)

Ниже написал функцию для создания ордера, и соответственно вызываю ее с параметрами USD_RUB, 1:
 def sell(para, volume):
    new_order = call_api(
        'order_create',
        pair = para,
        quantity = volume,
        price = '20',
        type = 'sell'
    )
sell(USD_RUB, 1)

Выдает ошибку: NameError: name ‘USD_RUB’ is not defined

но если код переделать:

 def sell():
    new_order = call_api(
        'order_create',
        pair = 'USD_RUB',
        quantity = '1',
        price = '20',
        type = 'sell'
    )
sell()
работает и выставляет ордер, только функция при этом становится безсмысленной.

помогите с функцией:
 def sell(para, volume):
    new_order = call_api(
        'order_create',
        pair = para,
        quantity = volume,
        price = '20',
        type = 'sell'
    )
sell(USD_RUB, 1)
что я не правильно написал?

Отредактировано ZiG (Янв. 1, 2019 11:12:23)

Офлайн

#2 Янв. 1, 2019 11:47:14

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается создать функцию.

Все, разобрался. Нужно было вызывать так функцию:

 sell('USD_RUB', 1)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version