Код взят с блога
import os import json # import requests import urllib, http.client import hmac, hashlib # Вписываем свои ключи API_KEY = '' API_SECRET = b'' """ Каждый новый запрос к серверу должен содержать увеличенное число в диапазоне 1-2147483646 Поэтому храним число в файле поблизости, каждый раз обновляя его """ nonce_file = "./nonce" if not os.path.exists(nonce_file): with open(nonce_file, "w") as out: out.write('1') # Будем перехватывать все сообщения об ошибках с биржи class YobitException(Exception): pass def call_api(**kwargs): # При каждом обращении к торговому API увеличиваем счетчик nonce на единицу with open(nonce_file, 'r+') as inp: nonce = int(inp.read()) inp.seek(0) inp.write(str(nonce+1)) inp.truncate() payload = {'nonce': nonce} 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("yobit.net", timeout=60) conn.request("POST", "/tapi/", payload, headers) response = conn.getresponse().read() conn.close() try: obj = json.loads(response.decode('utf-8')) if 'error' in obj and obj['error']: raise YobitException(obj['error']) return obj except json.decoder.JSONDecodeError: raise YobitException('Ошибка анализа возвращаемых данных, получена строка', response) print ('Получаем информацию по аккаунту', '*'*30) print( call_api(method="getInfo") ) try: print ('Создаем ордер на покупку', '*'*30) print( call_api(method="Trade", pair="ltc_btc", type="buy", rate="0.1", amount=0.01) ) except YobitException as e: print("Облом:", e)
Покупка
print( call_api(method="Trade", pair="ltc_btc", type="buy", rate="0.1", amount=0.01) )
Rate получается цена (вводить приходиться самому), amount количество (вводить приходиться самому).
Как переделать код, чтобы бот цеплял рыночную цену или цену с ордеров на продажу и кол-во денег с баланса биржи.