я формирую тело запроса следующим образом:
price = self.get_price()
body = '{' + f'"currency_pair":"{pair}","type":"limit","account":"spot","side":"{side}","amount":"{quantity}","price":"{price}","time_in_force":"gtc"' + '}'
строка в консоли выглядит так:
{"currency_pair":"BNB_USDT","type":"limit","account":"spot","side":"buy","amount":"0.019",
"price":"516.2708","time_in_force":"gtc"}
запрос с таким телом возвращает следующий ответ:
{'status': 405, 'label': 'METHOD_NOT_ALLOWED', 'message': ''}
если немного изменить присваивание цены:
price = 516.2708 # self.get_price()
body = '{' + f'"currency_pair":"{pair}","type":"limit","account":"spot","side":"{side}","amount":"{quantity}","price":"{price}","time_in_force":"gtc"' + '}'
строка выглядит идентично предыдущий:
{"currency_pair":"BNB_USDT","type":"limit","account":"spot","side":"buy","amount":"0.019",
"price":"516.2708","time_in_force":"gtc"}
ответ:
{'id': '109317501746', 'text': 'apiv4', 'create_time': '1641032772', 'update_time': '1641032772', 'create_time_ms': 1641032772621, ... }
функция
get_price()
берет строку цены из сайта, преобразует в float и возвращает значение
host = "https://api.gateio.ws"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = ''
def get_url(self, param=None, host=None):
if host is None:
host = self.host
if param is None:
return host + self.prefix + self.url
return host + self.prefix + self.url + "?" + param
def get_price(self) -> float:
return float(self.get_price_by_str())
def get_price_by_str(self):
self.url = '/spot/order_book'
query_param = f'currency_pair={self.pair}'
r = self.send_request(query_param)
print(r)
return r["bids"][0][0]
def send_request(self, param: str = None, body: dict = None, method='GET', authorization=False):
headers = self.headers
data = None
if body is not None:
data = json.dumps(body)
if authorization is True:
headers.update(self.gen_sign(method, param, data))
r = requests.request(method, self.get_url(param), headers=headers, data=data)
return r.json()
проблема в том, что я должен динамически получать цену и не могу присвоить статическое значение в переменную
если что-то не понятно буду рад дописать больше информации
буду благодарен за любую подсказку/решение :)