• Как поставить на автозапуск python скрипт в linux?

    @Astranome
    Вам влом просто вежливо ответить на корректно заданный вопрос.
    Но зато не влом прийти и написать много букав на тостере про "100500 дистров со своими приколами"
    Написано
  • Как вывести определенные данные из Phyton Binance Futures API?

    @Astranome
    а ваш бинанс_ф откуда?
    кстати я легко переделал для маргина-добавил пару строк
    если вам нужна только статистика, то крайне рекомендую использовать вебсокеты. при запуске шустрого клиента получал бан изза превышения к-ва запросов
  • Как вывести определенные данные из Phyton Binance Futures API?

    @Astranome
    я пользуюсь binance_api с сайта баблофил

    тикер

    from turtle import *
    import time
    import json
    from binance_api import Binance
    # from termcolor import colored
    bot = Binance(
    API_KEY='EEt5ipvr7JMMn1CSO6a9786lEKk4Dmz05WOX0hb7TcaBWMqn9evA8PeTjx7e4Ewe',
    API_SECRET='xQpOoyHTWm8jRc5wK4C090ThF3JNxvGgj987meB7rmPaSUIKJsxLhUTTalrHqpUz'
    )

    t = Turtle()
    t.screen.setup(800,550)
    t.screen.bgcolor("#002137")
    t.color('yellow')
    b=1

    while 1==1:

    u=(bot.account(['USDT']))
    balances=u['balances']
    USDT_INFo=balances[11]
    BTC_INFo=balances[0]
    BTC_LOCK=float(BTC_INFo['locked'])
    BTC_FREE=str(BTC_INFo['free'])
    USDT_FREE=str(USDT_INFo['free'])
    USDT_LOCK=float(USDT_INFo['locked'])
    current_rates = bot.tickerPrice(symbol='BTCUSDT') #, limit=5)
    lastprice=float(current_rates['price'])
    print(USDT_FREE,BTC_FREE)
    print (current_rates)
    print (lastprice)

    if(lastprice>b):
    cl='green'
    elif(lastprice cl='red'
    else:
    cl='yellow'
    b=lastprice

    t.clear()
    t.color(cl)
    t.goto(-400,130)
    t.write((lastprice),font=("Arial", 100, "bold"))
    t.color('yellow')
    t.goto(-400,20)
    t.write(('BINANCE SPOT Account'),font=("Arial", 50, "bold"))
    time.sleep(0.1)

    t.color('orange')
    t.goto(-400,-250)
    t.write(("free USDT",USDT_FREE),font=("Arial", 36, "normal"))
    t.goto(-400,-200)
    t.write(('ORDER USDT ',USDT_LOCK),font=("Arial", 36, "bold"))
    t.goto(-400,-120)
    t.write(('FREE BTC',BTC_FREE),font=("Arial", 36, "normal"))
    t.goto(-400,-70)
    t.write(("Order BTC ",BTC_LOCK),font=("Arial", 36, "bold"))

    # t.goto(-400,200)
    # t.write(('BTC_FREEqq=',BTC_FREE),font=("Arial", 32, "normal"))
    time.sleep(1)
    t.screen.exitonclick()
    t.screen.mainloop()
    """

    ask=float(current_rates['asks'][0][0])
    bwusdt=bot.marginMaxBorrowable(asset='USDT')
    bwbtc=bot.marginMaxBorrowable(asset='BTC')
    # print (float(bwbtc['amount']))

    # print (float(bwusdt['amount']))
    # totalassetBTC=float(u['totalAssetOfBtc'])
    # marginLevel=float(u['marginLevel'])
    # totalLiabilityOfBtc=float(u['totalLiabilityOfBtc'])
    # totalNetAssetOfBtc=float(u['totalNetAssetOfBtc'])

    try:
    balances=u['balances']
    except KeyError:
    print('KeyError')
    pass
    else:
    USDT_INFo=userAssets[2]
    BTC_INFo=userAssets[16]
    BTC_BOR=float(BTC_INFo['borrowed'])
    BTC_FREE=str(BTC_INFo['free'])
    BTC_NET=float(BTC_INFo['netAsset'])
    BTC_LOCK=float(BTC_INFo['locked'])

    USDT_BOR=float(USDT_INFo['borrowed'])
    USDT_FREE=float(USDT_INFo['free'])
    USDT_NET=float(USDT_INFo['netAsset'])
    USDT_LOCK=float(USDT_INFo['locked'])

    #### print('====marginLevel=========',marginLevel)
    #### print('=totalLiabilityOfBtc====',totalLiabilityOfBtc)
    # print('=====VsegoBTC===========',totalassetBTC)
    #### print('==totalNetAssetOfBtc====',totalNetAssetOfBtc)
    # print ('==userAssets==',userAssets)
    # print ('USDT-INFO==',USDT_INFo)
    # print ('BTC-INFO==',BTC_INFo)
    print('BTC_BORR====',BTC_BOR)
    print('BTC_FREE===',BTC_FREE)
    #### print('BTC_netAsset',BTC_NET)
    # print('BTC_LOCK=',BTC_LOCK)

    # print(colored.red,('USDT_BORR====',USDT_BOR))
    print('USDT_FREE===',USDT_FREE)
    ## print('USDT_netAsset',USDT_NET)
    # print('USDT_LOCK=',USDT_LOCK)
    """
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    продажа с трейлом
    """
    Подробная информация о боте на сайте bablofil.ru/bot-dlya-binance
    """
    import sqlite3
    import logging
    import time
    import os
    import math

    from datetime import datetime

    from binance_api import Binance

    bot = Binance(
    API_KEY='77775ipvr7JMMn1CSO6alvf6lEKk4Dmz05WOX0hb7TcaBWMqn9evA8PeTjxvvvvvv',
    API_SECRET='5555oyHTWm8jRc5wK4CvgsThF3JNxvGgj987meB7rmPaSUIKJsvvvvvvv'
    )

    settings = dict(
    symbol='LTCUSDT', # Пара для отслеживания
    strategy="Long", # Стратегия - Long (повышение), Short (понижение)
    stop_loss_perc = 0.1, # % оставания от цены
    stop_loss_fixed = 0, # Изначальный stop-loss, можно установить руками нужную сумму, потом бот подтянет.
    # Можно указать 0, тогда бот высчитает, возьмет текущую цену и применит к ней процент
    amount = 0.26, # Кол-во монет, которое планируем продать (в случае Long) или купить (в случае Short)
    # Если указываем Long, то альты для продажи (Например, продать 0.1 ETH в паре ETHBTC)
    #amount = 11 # Если Short, то кол-во, на которое покупать, например купить на 0.1 BTC по паре ETHBTC
    startrate = 0 # Нефиг продавать себе в убыток
    )

    multiplier = -1 if settings['strategy'] == "Long" else 1
    mstart = 1 if settings['strategy'] == "Long" else -1 # startrate множитель
    print("Получаем настройки пар с биржи")
    symbols = bot.exchangeInfo()['symbols']
    step_sizes = {symbol['symbol']:symbol for symbol in symbols}
    for symbol in symbols:
    for f in symbol['filters']:
    if f['filterType'] == 'LOT_SIZE':
    step_sizes[symbol['symbol']] = float(f['stepSize'])

    while True:
    try:
    print('Проверяю пару {pair}, стратегия {strategy}'.format(pair=settings['symbol'], strategy=settings['strategy']))
    # Получаем текущие курсы по паре
    current_rates = bot.depth(symbol=settings['symbol'], limit=5)

    bid=float(current_rates['bids'][0][0])
    ask=float(current_rates['asks'][0][0])

    # Если играем на повышение, то ориентируемся на цены, по которым продают, иначе на цены, по которым покупают
    curr_rate = bid if settings['strategy'] == "Long" else ask

    if settings['startrate'] == 0:
    settings['startrate'] = (curr_rate/100) * (settings['stop_loss_perc']*mstart+100) # авто трейлстоп стартовый

    print("Текущие курсы bid {bid:0.8f}, ask {ask:0.8f}, выбрана {cr:0.8f} stop_loss {sl:0.8f}".format(
    bid=bid, ask=ask, cr=curr_rate, sl=settings['stop_loss_fixed']
    ))

    # Считаем, каким был бы stop-loss, если применить к нему %
    curr_rate_applied = (curr_rate/100) * (settings['stop_loss_perc']*multiplier+100)

    if settings['strategy'] == "Long":
    # Выбрана стратегия Long, пытаемся продать монеты как можно выгоднее
    if curr_rate > settings['stop_loss_fixed']:
    print("Текущая цена выше цены Stop-Loss")
    if curr_rate_applied > settings['startrate']:
    if curr_rate_applied > settings['stop_loss_fixed']:
    print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))
    settings['stop_loss_fixed'] = curr_rate_applied
    else:
    # Текущая цена ниже или равна stop loss, продажа по рынку
    res = bot.createOrder(
    symbol=settings['symbol'], # symbol=orders_info[order]['order_pair'],
    recvWindow=15000,
    side='SELL',
    type='MARKET',
    quantity=settings['amount']
    )
    print('Результат создания ордера', res)
    if 'orderId' in res:
    # Создание ордера прошло успешно, выход
    break
    else:
    # Выбрана стратегия Short, пытаемся купить монеты как можно выгоднее
    if curr_rate < settings['stop_loss_fixed']:
    print("Текущая цена ниже stop-loss")
    if curr_rate_applied < settings['stop_loss_fixed']:
    print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))
    settings['stop_loss_fixed'] = curr_rate_applied
    else:
    # Цена поднялась выше Stop-Loss, Покупка по рынку
    quantity = math.floor((settings['amount']/curr_rate)*(1/step_sizes[settings['symbol']]))/(1/step_sizes[settings['symbol']])
    print("Цена поднялась выше Stop-Loss, Покупка по рынку, кол-во монет {quantity:0.8f}".format(quantity=quantity))
    # math.Floor(coins*(1/stepSize)) / (1 / stepSize)
    res = bot.createOrder(
    symbol=settings['symbol'],
    recvWindow=15000,
    side='BUY',
    type='MARKET',
    quantity=quantity
    )
    print('Результат создания ордера', res)
    if 'orderId' in res:
    # Создание ордера прошло успешно, выход
    break

    except Exception as e:
    print(e)
    time.sleep(1)
    #print(bot.myTrades(symbol='PPTETH'))