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

Таблица лидеров

  1. admin

    admin

    Administrators


    • Баллы

      49

    • Публикации

      145


  2. Andrei22

    Andrei22

    Members


    • Баллы

      11

    • Публикации

      45


  3. Astra

    Astra

    Members


    • Баллы

      3

    • Публикации

      17


  4. MotR

    MotR

    Members


    • Баллы

      2

    • Публикации

      1


Популярные публикации

Отображаются публикации с наибольшей репутацией начиная с 21.11.2018 в Сообщения

  1. Всем привет! Сегодня речь пойдет о создании бота на базе самодельного телеграм-клиента. Т.е. смысл такой - берутся исходники телеграма, компилируются, получаем библиотеку. С этой библиотекой работаем от своего имени на питоне - такой бот будет работать от лица пользователя, и иметь те же возможности, которые имеет каждый, у кого есть телеграм - читать, пересылать, удалять и т.п. Например, если у вас есть доступ к платному закрытому каналу, или шифрованному чату, вы сможете пересылать оттуда информацию в любой другой чат, где у вас есть право голоса - и никаких ботов не нужно бу
    6 баллов
  2. Этап 3 - непосредственно запуск и работа В директории C:\code\examples\telegram создайте файл main.py со следующим содержимым: # -*- coding: utf-8 -*- # # Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 # # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # from ctypes.util import find_library from ctypes import * import json import sys API_KEY = 111111 API_HASH = '........' PHONE_NUMBER = '+7913212313' # load shared library tdjson_path =
    4 балла
  3. Этап 1 - сложный, его можно пропустить Для начала будет нужно скомпилировать себе библиотеку от телеграма Для этого понадобится программа Git for Windows Скачиваем, устанавливаем, теперь давайте создадим папку, где будем ТВОРИТЬ! У меня это будет папка C:/code/examples/telegram – в ней будет всё, как промежуточное, так и итоговое. В этой папке теперь создадим папку src. На новой папке src щелкаем правой кнопкой мыши, и выбираем в контекстном меню Git Bash Here: В появившемся окне пишем (обратите внимание на точку в конце: git clone https://github.com/tdlib/td.git .
    4 балла
  4. Привет, друзья. Опубликована новая статья и выложен скрипт для трейлинга. Можем обсудить тут
    3 балла
  5. Так-с, ну собственно задача выполнена. Немного об ограничениях - сейчас берутся 100 самых свежих чатов, из-за особенностей работы АПИ. Можно сделать больше, но это нужно больше кода писать, сейчас не вижу в этом смысла. Оба канала - источник и приемник, должны быть в первой сотне. Можете их прикрепить, тогда они всегда гарантировано будут сверху. Можете захардкодить ID каналов, что бы сразу пересылать из одного в другой. Еще бот пересылает текстовые сообщения - пусть с картинками и прочим. Это большинство сообщений телеграмма в большинстве каналов, но бот не будет пересылать пост-картинку
    3 балла
  6. Этап 2 - подготовка На этом этапе подразумевается, что у вас уже есть файл tdjson.dll - вы или скомпилировали его, или взяли мой, или скачали откуда-то из интернета для своей платформы. Рекомендую положить его в C:\Windows\System32 (нужны права администратора), а так же скопировать в папку с программой C:\code\examples\telegram. Запустите командную строку от имени администратора, и в ней выполните команду regsvr32 tdjson.dll Впрочем, оно может выдавать ошибки, и не факт, что по делу, так что можете пока не обращать на ошибки внимания. Теперь нужно завести applicati
    3 балла
  7. # Ф-ция, которая приводит любое число к числу, кратному шагу, указанному биржей # Если передать параметр increase=True то округление произойдет к следующему шагу def adjust_to_step(value, step, increase=False): return ((int(value * 100000000) - int(value * 100000000) % int( float(step) * 100000000)) / 100000000)+(float(step) if increase else 0) если пара BNBUSDT, ее CURR_LIMITS['filters'][2]['stepSize'] получит с биржи 0.01000000 если settings['amount'] дать цифру 0.58 (settings['amount']=0.58) quantity = adjust_to_step(settings['amount'], CURR_LIMITS['filter
    2 балла
  8. Нет. На примере бинанса: Бинанс разрешает что ваше время не может быть больше чем на 1 секунду чем время сервера, иными словами вы не можете ордер поставить из будущего. Одну сек они видимо на погрешность дают. Ваше время может быть меньше чем на бинансе, если я правильно помню они дают 5 сек на это, здесь уже расчет идет на то что сеть может быть загружена, интернет плохой т.п. Другими словами они считают нормой 5 сек если ордер затеряется, но они позволяют и вручную создавать это окно времени в которое по вашему времени может быть нормальная задержка. Это параметр recWindow, он если память н
    2 балла
  9. у меня так работает: local_time = int(time.time()) restart_time = local_time + 82800 # 23 часа (82800 сек) def on_message(ws, message): global restart_time if 'e' in socket_data: ....... if 's' in socket_data: ......... local_time = int(time.time()) if local_time > restart_time: print("время рестарта") time.sleep(30) local_time = int(time.time()) restart_time = local_time + 82800 def on_error(ws, error): print(error) def on_close(ws): print("### cl
    2 балла
  10. Я делал на голанге, но общий принцип одинаков: Сначала надо отправить обычный запрос (такой же, как и другие в binance_api, с заголовком ) на /api/v3/userDataStream https://github.com/binance-exchange/binance-official-api-docs/blob/master/user-data-stream.md Он вам даст ключ (строку) С этой строкой надо подлючиться через сокеты на wss://stream.binance.com:9443/ws/<listenKey> Потом он начнет спамить всё про изменения баланса и про создание/изменение статусов всех ордеров. Остается только фильтровать.. Важный момент, что нужно раз в сутки этот ключ
    2 балла
  11. Здравствуйте! Подскажите, пожалуйста, есть ли возможность интегрировать "Бот для trailing stop на Binance" в "Бот для Binance с индикаторами"? Торгую с профитом 0,5%, но очень часто упускаю значительный рост. Спасибо!
    2 балла
  12. Ну, а теперь последний шаг - давайте постить всё найденное на форум (IPB в данном случае). В админке я создал API ключ для своего скрипта (но вам не покажу), и познал сокрушительный удар - оказывается, Invision прячется за CloudFront, а те режут Post запросы, поля которых содержат больше 2кб.... Ну что ж делать, не выбрасывать же скрипт.. Теперь будут вороваться те новости, в которых меньше 2000 байт :) import os import re import time from bs4 import BeautifulSoup import requests from xml.etree import ElementTree as etree forum_id = 13 api_key = '....' author_id=3 max_text_size=2000 # С
    2 балла
  13. После срабатывания ордера нужно получать его историю сделок. В истории сделок указывается, какие были сделки по ордеру, на какие суммы и какие комиссии в какой валюте были удержаны. На основе этих данных можно высчитать уже и кол-во полученных монет в результате исполнения ордера, кол-во потраченных денег в той или иной валюте и т.п.
    1 балл
  14. Отображение инфы - в отдельном скрипте 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(start
    1 балл
  15. Вот сделал с использованием 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))
    1 балл
  16. В Питоне есть Ткинтер, вот в нем и стоит сделать ГЮИ # Биткоин тикер, отображает курс БТЦ к Тезер на бирже Бинанс 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
    1 балл
  17. создай бат файл там же где лежит бот, например start.bat внутрь: @ECHO OFF TIMEOUT /T 30 MODE 120,20 title Yobit bot ))) setlocal set PYTHONPATH=./ python ./yobit_perc.py endlocal pause далее, ПКМ создать ярлык (ярлык это ссылка на этот бат файл) далее ПКМ на Пуск -> выполнить -> пишешь shell:startup (откроется папка автозагрузки) далее ПКМ на ярлык - > копировать -> вставить в папку автозагрузки звук проверь что диск с ))) и есть ли этот wave там: import winsound soundfile = "c:/Windows/Media/chimes.wav" winsound.PlaySound(sound
    1 балл
  18. Это ограничение API Bittrex. Впрочем, можно брать минутные свечи или любые другие, и агрегировать их в нужный интервал, например по три шт.
    1 балл
  19. Приветствую, бот binance с индикаторами можно сделать, чтобы он продолжал торговать после каждой убыточной сделки и рассчитывал суммарно средневзвешенную цену для закрытия всех сделок с установленным профитом? Если требуется оплата за доработку прошу написать в личном сообщении.
    1 балл
  20. Подскажите что делать дальше. Дошел до момента Enter code, мне пришёл код на ТГ, после чего нажимаю Enter, и глухо В папке telegram создается две папки, общий вес которых 104 кб. Пробовал скачивать VPN, так же не помогло. Что делать? Есть ли решение?
    1 балл
  21. Учите программирование, если хотите развиваться и что-то менять. Иначе так и будете простыни посылать, а толку никакого. Эта функция , как видно из файла котоырй вы привели , поиском находится в строке: from misc import adjust_to_step, sync_time, calc_buy_avg_rate, calc_sell_avg_rate, get_order_trades Эта строка говорит что функция adjust_to_step находится и берется из файла misc.py - там ее и смотрим и правим Ошибка действительно подтвердилась, это легко проверить, если поставить точку останова в самой функции и по подставлять туда разные значения. С
    1 балл
  22. Отличный бот. Спасибо. Подскажите, как можно бота заставить править некоторые сообщения, если они имеют одинаковое наполнение. Например, сначала пришло сообщение в котором текст "Петров - козел", через несколько сообщений пришло сообщение "Петров - козел и дурак", можно сделать, чтобы бот второе сообщение про петрова не новым отправлял, а правил старое. Также в тексте этих сообщений имеются одинаковые даты и время.
    1 балл
  23. Можно например не закупать, если цена выше 70% от суточной, а так же выше 70% от месячной. Но не закупая на хаях можно пропустить весь рост, почему бы не продумать стратегию безопасного ухода с купленного хая (например, так)
    1 балл
  24. А как его использовать? У меня правда такая ошибка... ====================================================== RESTART: C:\Telegram\Resend\main.py ====================================================== Traceback (most recent call last): File "C:\Telegram\Resend\main.py", line 25, in <module> tdjson = CDLL(tdjson_path) File "C:\Users\novikov_a\AppData\Local\Programs\Python\Python38\lib\ctypes\__init__.py", line 373, in __init__ self._handle = _dlopen(self._name, mode) FileNotFoundError: Could not find module 'C:\WINDOWS\system32\tdjson.dll'. Try using the full path with cons
    1 балл
  25. virtualB это не функция, уберите скобки for struct in virtualB['balances']:
    1 балл
  26. Так вы монету не передаёте, замените get_virtual_balance() на get_virtual_balance("BTC")
    1 балл
  27. Напишу тут про синхронизацию ))) Все равно не работает синхронизация времени как написано в "Бот для бинанса с индикаторами". Я что то не до понимаю )) if __name__ == "__main__": sync_time(bot, log, False, limits) t1 = threading.Thread(target=main_flow) t2 = threading.Thread(target=sync_time, args=(bot, log, True, limits)) threads = [t1, t2] for t in threads: t.start() for t in threads: t.join() этот блок кода создаст второй поток и запустит функцию sync_time передав туда limits для определения серверного времени в функции же включи
    1 балл
  28. Вообще такое запрещено настройками безопасности IOS или Android, ведь тогда какие-то сторонние приложения могли бы читать данные клиент-банков, смс и тп. Время от времени появляются какие-то черные способы обхода, но и их оперативно фиксят. Если уж очень нужно то наверняка можно извернуться, например получая push уведомления на какой-то менее защищенный девайс, типа смарт-часов, или снимать изображение с экрана и распознавать его через машинное зрение, все технологии для этого есть. Как вариант можно анализировать трафик, которым обменивается телефон с интернетом, ведь сигналы приход
    1 балл
  29. В силу стратегии бот торгует не ровно, один месяц может 20% выжать, другой 0, но в целом это очень хороший сервис. Регистрируйтесь по моей ссылке и я помогу и расскажу что и как настраивать и что от чего зависит.
    1 балл
  30. типа вот так: 'marginLoanG': {'url': 'sapi/v1/margin/loan', 'method': 'GET', 'private': True}, 'marginRepayG': {'url': 'sapi/v1/margin/repay', 'method': 'GET', 'private': True}, а иначе он постом продолжает занимать )))
    1 балл
  31. Сорри за долгий ответ, расширил код, можете взять со статьи или гитхаба
    1 балл
  32. Шалом Туда, где requests.request, завести словарь и добавить его к реквесту, вот так: proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', } response = requests.request(method=self.methods[command]['method'], ...., headers=headers, proxies=proxies)
    1 балл
  33. Можно указать часть названия сайта, любое слово которое может встречаться в тексте
    1 балл
  34. Выложен бот для Binance с индикаторами, вот бот Бот для Binance с индикаторами, вот статья https://bablofil.ru/bot-dlya-binance-s-indikatorami/ Можете мучать/тестировать)
    1 балл
  35. Входите с той суммой, которую не жалко потерять :) Для человека без опыта зарабатывать что с ботом что без, очень сложно. Все равно приходится распределять средства, выбирать пары, иногда что то продать с убытком, иногда что-то придержать. Бот это автомат, а трейдер - солдат, и если выпустить неопытного солдата с автоматом в бой.. Ну вы поняли
    1 балл
  36. Небольшой кусок кода для выставления вилки цен на Binance - как известно, нельзя штатными средствами выставить И тейк-профит, и стоп-лосс. В коде указываете пары, указываете цены sl и tp (стоп-лосс и тейк профит соответственно), и кол-во к продаже. Когда текущая цена окажется ниже первой или выше второй, бот продаст указанное кол-во по рынку. import sqlite3 import logging import time import os from datetime import datetime from binance_api import Binance bot = Binance( API_KEY='', API_SECRET='' ) pairs = { 'LTCBTC': { 'sl':0.00810600, 'tp':0.009098,
    1 балл
  37. Оно работает в потоках, т.е. каждая пара независимо от других лезет на биржу, делает свои дела и потом спит сколько скажут Вы можете изменить код примерно так: Код run.py замените на import threading from config import Config from main import process_market if __name__ == '__main__': while True: for market in Config.MARKETS: process_market(market) А в main.py после строки time.sleep(Config.MARKET_WAIT_TIME) добавьте break time.sleep(Config.MARKET_WAIT_TIME) break Это такой хак будет, они пойдут друг за другом и каждый будет ждать
    1 балл
  38. В общем тут защита от ДДОСа стоит, показывается капча и т.п. Защищаются от кого-то, ввели видимо лимиты. Придется либо ждать, либо использовать прокси
    1 балл
  39. Поменяйте на market_log.warning(res.text) или на print(res.text) пожалуйста, мало данных
    1 балл
  40. Вот эта строка print(res) Должна выводить ответ биржи, включая и ошибки Попробуйте засечь, что там за текст Если быстро всё меняется, замените на market_log.warning(res.text) и смотрите логи пар, по которым проблема
    1 балл
  41. Смотрите, в конфиге есть такая строка LOG_LEVEL = logging.DEBUG А в боте тут и там строки вида market_log.debug Вот. В конфиге можно поставить LOG_LEVEL = logging.INFO, и тогда все сообщения лога со словом .debug не будут выводиться никуда. В самых нужных сообщениях используйте конструкцию market_log.info, она будет выводиться. ----- В общем если в конфиге стоит LOG_LEVEL = logging.DEBUG то выводятся все market_log.info и market_log.debug Если стоит LOG_LEVEL = logging.INFO то выводится только market_log.info, даже если в коде есть всякие разны
    1 балл
  42. А сейчас работает? Проверьте, открывается ли ссылка в браузере https://api.bittrex.com/api/v1.1/public/getmarkethistory?market=USDT-BTC И вот эта https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=USDT-BTC&tickInterval=thirtyMin Еще может быть какие-то пары убрали с горя (им вчера отказали в лицензии в Нью-Йорке) Еще попробуйте временно заменить res = requests.get("https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=" + market + "&tickInterval="+period, verify=Config.SECURE).json() на res = requests.get("https://bittrex.com/Api/v2.0
    1 балл
  43. Стандартные сервера для обновления времени по интернету вечно заняты и обновляются с 20ой попытки, и если учесть что попытка эта делается раз в неделю по дефолту, то практически время автоматом и не обновляется. Вот кому надо способ: Сервера синхронизации для РФ: 0.ru.pool.ntp.org, 1.ru.pool.ntp.org, 2.ru.pool.ntp.org Как изменить период синхронизации времени в Windows: Все довольно просто. Открываем редактор реестра, для этого выбираем Пуск-Выполнить и вводим команду regedit далее следуем по следующему пути: HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet S
    1 балл
  44. У вас всё есть уже, вам надо просто совместить два скрипта, вот как то так, приложил это еще и в файлах import sqlite3 import logging import time import os import math from datetime import datetime from binance_api import Binance bot = Binance( API_KEY='', API_SECRET='' ) def process_trailing(settings): multiplier = -1 if settings['strategy'] == "Long" else 1 print("Получаем настройки пар с биржи") symbols = bot.exchangeInfo()['symbols'] step_sizes = {symbol['symbol']:symbol for symbol in symbols} for symbol in symbols: for f in symbol['filters']:
    1 балл
  45. Можно каждую пару в отдельном потоке пускать, но все равно будет запаздывать. Поэтому нужно получать курсы по сокетам, в отдельном потоке, а в других потоках переставлять 🙂 Но проще запустить несколько скриптов одновременно и не париться
    1 балл
  46. Периодически мне приходила мысль, что для разработки определенных стратегий необходима история торгов за длительные промежутки времени. К сожалению многие биржи довольно скупо отдают информацию лишь за небольшие промежутки времени. Обнаружил, что многие "криптоспекулянты" постоянно ее собирают кусками, через АПИ бирж, и складируют в базу на ПК. Естественно я тоже собирался идти тем же путем. Но буквально вчера обнаружил некий ресурс: https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=ru&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=ru&amp;
    1 балл
  47. Итак, теперь мы можем получать ссылки на самые последние статьи. Но нам-то нужен полный текст новости со всем содержимым - его не будет в RSS. Давайте парсить страницы. Логика усложнится - теперь мы для каждой новой новости (пфф) будем получать текст её страницы, и разбирать её на составляющие. Можно делать это регулярными выражениями или вообще голой логикой в стиле программирования на C, но мы пойдем ленивым путем и поставим модуль beautifulsoup4 pip install beautifulsoup4 И давайте испытывать её в деле. Откроем исходный код страницы любой новости с сайта и изучим. Найдем интерес
    1 балл
  48. Демонстрация работы с биржей indx.ru (от вебмани) Полный список методов - тут Код получает баланс пользователя (подставьте свои значения). Login и пароль можно получить в личном кабинете пользователя import requests import hmac, hashlib import base64 login = "WU...V" wmid = "5...5" password = "AT...ug" culture = "ru-RU" url = "https://api.indx.ru/api/v2/trade/Balance" headers = {'Content-type': 'text/json', 'Accept': 'text/json'} # Как по ссылке, в том же порядке, везде разные payload_str = login+ ';' + password+ ';' + culture+ ';' +wmid # А тут одинаковое везде h = ba
    1 балл
×
×
  • Создать...