Untitled

Binance API
mail@pastecode.io avatar
unknown
python
2 years ago
2.1 kB
2
Indexable
Never
x[-1] - это текущая цена монеты/фьючерса
for i in client.futures_exchange_info()['symbols']:
    if i['symbol'] == 'BTCUDST:
        self.pricePrecision = i['pricePrecision']
        self.quantityPrecision = i['quantityPrecision']
        self.step = float(i['filters'][1]['minQty'])
        self.notional = float(i['filters'][5]['notional'])
        break
# сначала находим минимальное количество, возможное для покупки, (обычно 5$) делим на текущую стоимость
qq = round(self.notional/self.x[-1],True)
# проверяем, соответствует ли это количество минимуму на бинансе, оно там обычно округлено в большую сторону с определенным количеством знаков после запятой, если не соответствует, приводим к соответствующему количеству
quan = round(qq + self.step, True) if qq < self.notional / self.x[-1] else qq
# находим нужный процент от депозита, например, найдем 20% от депозита
balance = float(client.futures_account()['availableBalance']) * 0.2
# делим баланс на минимальную стоимость (а это миним. количество умноженное на стоимость) и узнаем точное число монет/фьючерсов, которое можем купить, и умножаем это число на минимальное количество, таким образом найдем искомое максимальное количество монет, которое надо купить, в зависимости от % депозита.
final_quantity = round(int(balance/round(quan*self.x[-1],self.pricePrecision)) * quan,self.quantityPrecision)
self.orderId = client.futures_create_order(symbol=self.tik, side='BUY', type='MARKET', quantity=final_quantity)['orderId']