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

Astra

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

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

  • Посещение

  • Дней в лидерах

    1

Последний раз Astra выиграл 16 июня 2020

Публикации Astra были самыми популярными!

Посетители профиля

Блок посетителей профиля отключен и не будет отображаться другим пользователям

Astra's Achievements

Newbie

Newbie (1/14)

  • One Month Later
  • One Year In Rare
  • Week One Done

Recent Badges

3

Репутация

  1. Кое что недопонял. " это больше управлялка получается из под андроида" - это как? Где крутится сама программа трейдер-бот? На сервере? А как управление происходит, через Socket, Telegram, Mqtt, SQL ?
  2. имхо, добавление пар - красиво, но не столь необходимо на начальном этапе (тру трейдеры работают на 1-2 парах, макс 3х), я бы сконцентрировался на отображении баланса и графике информативном - где аиден текущий стоплосс и мои продажи-покупки
  3. А к какому боту прикручиваете? Как я себе представляю, бот - это автомат, или полуавтомат, состоящий из элементарный блоков. Нижний уровень - это покупатель (или продавец), задача которого как можно дешевле купить (дороже продать) . Уровень выше - это пара "купи-продай". То есть оператор вручную даёт команду - "поехали!" запускается покупан, когда он купит, запускается продаван. Продал- ждет команды от оператора. Третий уровень- это когда наш робот сам решает, когда стартовать. Теперь про ГУИвизацию. Давайте обсудим, какие параметры должны выводиться на наш дисплей. Я буду рассматривать простейший вариант с трейлстопом. 1. Бид (или АСК) 2. Текущая стратегия (продаём или покупаем) , торговая пара. 3. Изначальный стоплосс (текущий трейлстоп) 4.% трейлинга 5. Некий параметр "curr_rate_applied" - это цена +(-) % (понятно тем, кто разобрал https://bablofil.com/trailing-stop-binance/) 6. ну и конечно же AMOUNT - сколько хотим продать/купить 7. Служебная инфа, например, ошибки соединения или сообщения от биржи о превышении к-ва запросов. неплохо было бы выводить на график п.п. 1 и 5, (график непрерывный, а не часовые свечи), а, в идеале - ставить отметки на нем своих покупок и продаж Теперь перейдем к управлению. 1. Пуск -стоп 2. Регулировка п.4 - "%" п.6 "Amount" и, возможно, п.3.
  4. я пробовал такое через MQTT в качестве БД. Работает.
  5. Если бота запускать на Raspberry Pi , то вот еще вариант
  6. Все это на Пастебине https://pastebin.com/tuCuT45f https://pastebin.com/nvzcEfke https://pastebin.com/kx6xnx1i
  7. Сначала надо создать БД import sqlite3 conn = sqlite3.connect ("tplong.db") # или ':memory:'чтобы сохранить в RAM cursor = conn.cursor() # Создание таблицы cursor.execute("CREATE TABLE albums(bidprice real, startrate real, applied real, stoploss real, strategy text, amount real, trailperc real, id integer )") cursor.execute("INSERT INTO albums VALUES(1, 0, 700, 0, 'Manager', 1,0,1)") conn.commit()
  8. Отображение инфы - в отдельном скрипте from tkinter import * from tkinter.ttk import * import json import time import sqlite3 # создание окна tkinter root = Tk() root.title('BTC USDT Binance') root.geometry("500x500") root.config(bg="purple") def tablo(): conn = sqlite3.connect("tplong.db") cursor = conn.cursor() cursor.execute('SELECT * FROM albums ') raw = cursor.fetchall() pr=raw [0] print(pr) bid=(pr [0]) bid=float(bid) bid=str(bid) startrate=float(pr [1]) startrate=str(startrate) appl=str(pr [2]) sl=str(pr [3]) strat=(pr [4]) am=str(pr [5]) perc=str(pr [6]) lbl.config(text = 'APPLY ' + appl) lbl1.config(text = 'BID ' + bid) lbl2.config(text = 'AMOUNT ' + am) lbl3.config(text = 'StopLoss ' + sl) lbl4.config(text = 'Strategy '+strat) lbl5.config(text = 'PERC ' + perc) lbl6.config(text = 'Startrate ' + startrate) lbl.after(1000, tablo) lbl = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl.place(relx=.25, rely=.01) lbl1 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl1.place(relx=.25, rely=.1) lbl2 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl2.place(relx=.25, rely=.2) lbl3 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl3.place(relx=.25, rely=.3) lbl4 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl4.place(relx=.25, rely=.4) lbl5 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl5.place(relx=.25, rely=.5) lbl6 = Label(root, font = ('calibri', 20, 'bold'), background = 'purple', foreground = 'white') lbl6.place(relx=.25, rely=.6) tablo() mainloop()
  9. Вот сделал с использованием Tk и SQLite "Так что бы на одном экране была видна нужная информация." В бота вставил блок, который загоняет данные (курс, стратегию, стоплосс/трейлстоп ит.д. ) в БД, conn = sqlite3.connect("tplong.db") cursor = conn.cursor() cursor.execute('UPDATE albums SET bidprice = ? , startrate = ? , applied = ?, strategy=?, stoploss=?, amount=?, trailperc=? WHERE id = ?',(bid,settings['startrate'],curr_rate_applied,settings['strategy'],settings['stop_loss_fixed'],settings['amount'],settings['stop_loss_perc'],1)) conn.commit() conn.close()
  10. В Питоне есть Ткинтер, вот в нем и стоит сделать ГЮИ # Биткоин тикер, отображает курс БТЦ к Тезер на бирже Бинанс from tkinter import * from tkinter.ttk import * import json import time import requests # создание окна tkinter root = Tk() root.title('BTC USDT Binance') # Эта функция используется для # отображать курса биткоин на этикетке def ticker(): try: b=requests.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT') # сюда можно вставить другую пару lastprice = float(json.loads(b.text)["price"]) print(lastprice) string = str(lastprice) lbl.config(text = string) lbl.after(500, ticker) except requests.ConnectionError: print ("Error CONNECT") pass lbl.after(100, ticker) # Стилизуем виджет метки так, чтобы тикер # выглядел более привлекательно lbl = Label(root, font = ('calibri', 200, 'bold'), background = '#002137', foreground = 'orange') # Размещение в центре # окна tkinter lbl.pack(anchor = 'center') ticker() mainloop() # для чего это не знаю, может работать и без этой строки clockrest!.exe
  11. дело было в синтаксисе этой строки, а также еще в нюансах отправки запроса с заголовком при создании листенкей
  12. всем спасибо за обширные комменты
  13. пускай вся страна пользуется, не жалко
  14. я вставил в binance_api.py строки 'createListen': {'url': 'api/v3/userDataStream', 'method': 'POST', 'private': True}, 'marginCreateListen': {'url': 'sapi/v1/userDataStream', 'method': 'POST', 'private':True}, код такой import websocket import json import time from binance_api import Binance bot = Binance( API_KEY='qytrs784TNgahAQS6Ly0fR4QxQtj******************PA8zteq', API_SECRET='Yyf39taCznHNxygDXRwX_____________________-JQBLYNUkyzNC4' ) LK = bot.marginCreateListen() print (LK) LKK=LK['listenKey'] print (LKK) def on_message(ws, message): print(message) print( json.dumps( json.loads(message), indent=3, separators=(',',': ') ) ) def on_error(ws, error): print(error) def on_close(ws): print("### closed ###") def on_open(ws): print("### connected ###") if 1==1: # это я так цикл засобачил, не знаю как правильно, подскажите #ws = websocket.WebSocketApp("wss://stream.binance.com:9443/stream?streams=LKKK", ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws/LKK", on_message = on_message, on_error = on_error, on_close = on_close) print(LKK) ws.on_open = on_open ws.run_forever() Нихрена не спамит, я ордера открывал-закрывал, что не так????
×
×
  • Создать...