Перейти к публикации
Форум ботоводов

Deadhard

Members
  • Публикации

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Deadhard

  1. Вроде как разобрался, осталось только перенести пример в код
    price = 50
    numbers = 2
     
    while price > 10:
    #print(price)
    price = price - numbers
     
    for order in range(1😞
    order = (f"price={price}")
     
    print(order)
     
    Вывод консоли:
    price=48
    price=46
    price=44
    price=42
    price=40
    price=38
    price=36
    price=34
    price=32
    price=30
    price=28
    price=26
    price=24
    price=22
    price=20
    price=18
    price=16
    price=14
    price=12
    price=10
    deadhard@debian:~/Документы/бот$ 
     
    но всё равно выглядит как-то костыльно
  2. Например я могу отправить запрос в цикле for с указанием уже известных переменных 'number', 'market', 'amount', 'price' вписав их в запрос с использованием f" получится что-то типа
    for order in range(number):
          order = exchange.createOrder(f"{market}, side='buy', amount={amount}, type='market', price={price}")
    но это даст выставление ордера несколько раз по одной и той же цене. То есть насколько я понял надо как то при этом каждый раз изменять значение 'price'. Подскажите пожалуйста кто знает то уже всю голову сломал. Функцию же вроде как в запрос не вставить?
  3. Всем привет, экспериментирую с библиотекой ccxt. Хотелось бы выставлять ордера сеткой через заданное расстояние. Использую такой запрос 

    order = exchange.createOrder('DOGE-PERP', side='buy', amount=1, type='market', price=0,2052095)

    Как сделать чтоб этот запрос отправлялся несколько раз при этом каждый раз меняя содержимое параметра 'price' на установленную величину? Как вообще это делается? Есть задумки насчёт 

    for x in range() но может кто подскажет что-то более элегантное?
     
  4. насчет того что написано выше про график я согласен что было бы не плохо, но всё что косается графиков например через matplotlib мне даётся очень трудно да и инфы нормальной мало, а та что есть там чёрт ногу сломит даже с гугл переводчиком

  5. Прикручиваю вот к этому боту https://bablofil.com/bot-dlya-binance-s-indikatorami/ думаю все уже с ним знакомы.

    На дисплей пытаюсь вывести только настройки управления ботом, они там в двух файлах config.py и binance_bot.py

    а именно: апи, телеграм токен для оповещений (добавил от себя),  настройки таймфреймов, параметры klines_limits, points_to_enter и use_open_candles (это уже сделано) всё задается вручную

    , дальше что не получается : задумал сделать настройки индикаторов - не могу заставить изменять например вот эту строчку через гуи

    if rsi_9[-1] < 70 and rsi_14[-1] < 70 and rsi_21[-1] < 70: остальные настройки индикаторов аналогично,

    засада с добавлением пар через гуи

    {
            'base': 'USDT', # Базовая валюта
            'quote': 'BTC', # Квотируемая валюта
            'spend_sum': 10,  # Сколько тратить base каждый раз при покупке quote
            'profit_markup': 1, # Какой навар нужен с каждой сделки?
            'use_stop_loss': False, # Нужно ли продавать с убытком при падении цены
            'stop_loss': 1, # 2%  - На сколько должна упасть цена, что бы продавать с убытком
            'active': True,
        }, т. к. хоть я и научился менять параметры в этом куске кода через гуи, но как добавлять новые пары? у автора просто добавляется необходимое количество таких кусков в код, а как это сделать через гуи, плюс разные настройки на всех парах?

    вывод состояния это просто сокращенный вывод лога только купил и продал и warning (как сделать такой вывод уже нашел) нужен больше для того чтоб знать что он вообще работает, ну и кнопки стоп старт и апдейт(обновление базы данных) точнее даже удаление файла binance_db после чего бот пересоздаст этот файл и обновит настройки.

    вот в принципе  и всё что я пытаюсь сделать, т.е. это больше управлялка получается из под андроида

  6. Начал изучать питон, экспериментирую с gui для управления ботом, пока только вот такой вариант получилось сделать -код ниже. В данный момент вопрс в следующем - как привязать это к коду бота, пока получается через него изменять только апи, таймфреймы и всё что можно задать константами, может подскажет кто нубу как изменять значения через gui внутри функции например в настройках индикаторов вот в этом куске кода

    if rsi_9[-1] < 70 and rsi_14[-1] < 70 and rsi_21[-1] < 70:
                                # RSI не показывает перекупленности
                                enter_points += 2

    ниже код интерфейса

    import PySimpleGUI as sg

    names = ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1M']
    operation = ['<', '==', '>']

    col = sg.Column([[sg.Frame(layout=[[sg.Text('Api key', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Api secret', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Telegram token', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text("Timeframe", size=(16,1)), sg.Combo(names, size=(31,1), enable_events=False, key='_LIST_')],
                          [sg.Text("Klines limits", size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text("Points to enter", size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text("Use open candles", size=(15,1)), sg.CB("Yes")],            
                          [sg.Text("Pairs", size=(16,1)), sg.Output(size=(30,3))],
                          [sg.HorizontalSeparator()],
                          [sg.Text('INDICATORS')],             
                          [sg.HorizontalSeparator()],             
                          [sg.Text(""), sg.Text('Name', size=(8,1)), sg.Text("Operation", size=(9,1)), sg.Text(" Value", size=(7,1)), sg.Text(" Addition", size=(9,1)), sg.Text("Wieght", size=(7,1))],
                          [sg.CB("SMA", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("MACD", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("RSI", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("STOCH", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("ST+RSI", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("BB", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("CCI", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.CB("MFI", size=(7,1)), sg.Combo(operation, size=(6,1), enable_events=False, key='_LIST_'), sg.Input(size=(8, 1)), sg.Input(size=(8, 1)), sg.Input(size=(8, 1))],
                          [sg.HorizontalSeparator()],
                          [sg.Text('ADD  PAIRS')],             
                          [sg.HorizontalSeparator()],              
                          [sg.Text('Base', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Quote', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Spend sum', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Profit markup', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Use stop loss', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Stop loss', size=(16,1)), sg.Input(size=(33, 1))],
                          [sg.Text('Active', size=(16,1)), sg.Input(size=(33, 1))],              
                          [sg.Text('Control', size=(16,1)),sg.Button("Save", size=(12, 1)), sg.Button("Add new", size=(12, 1))],
                          [sg.HorizontalSeparator()],
                          [sg.Text('STATE')],             
                          [sg.HorizontalSeparator()],             
                          [sg.Output(size=(48, 10))],              
                          [sg.Button("Start", size=(12, 1)), sg.Button("Stop", size=(12, 1)), sg.Button("Update", size=(12, 1))],             
                          ], title='BINANCE BOT v1.0')],])

    layout = [ [col],]

    # Position at top left side corner on right hand monitor
    window = sg.Window('Binance bot v1.0', layout, size=(410, 1100))

    event, value = window.Read()

    window.Close()

     

  7. 01.03.2020 в 12:19, admin сказал:

    Я в основном делаю через веб, это удобно, когда например бота переносишь на облако и управляешь им потом с телефона. Правда при этом приходится писать больше кода, и не всегда на питоне.. Но зато универсально и кроссплатформенно

    Андрей а расскажите подробней как это осуществимо, просто сейчас тоже решил заморочаться чем-то подобным и интересно кто как такое делает

×
×
  • Создать...