Bot for automatic trading on dmarket
- git clone https://github.com/timagr615/dmarket_bot.git
- cd dmarket_bot
- Создайте виртуальное окружение, например python3 -m venv venv
- Затем активируйте virtualenv . venv/bin/activate
- pip install -r requirements.txt
- Создать файл
credentials.pyв корневой директории с следующим содержанием:
PUBLIC_KEY = "your public api key"
SECRET_KEY = "your secret api key"- Запустить бота можно с помощью файла
main.py
- Мультиигровая торговля. Поддержка всех игр, доступных на dmarket
- Автоматический анализ базы скинов для каждой игры
- Выставление ордеров, отобранных по 15-ти различным параметрам. Борьба ордеров за первое место.
- Автоматическое выставление скинов на продажу после покупки. Корректировка цен в соответствии с настройками и борьба за 1 место.
Все параметры бота находятся в файле config.py в корневой директории бота.
logger_config- конфигурация логгера
logger_config = {
"handlers": [
{"sink": sys.stderr, 'colorize': True, 'level': 'INFO'},
# {"sink": "log/debug.log", "serialize": False, 'level': 'DEBUG'},
{"sink": "log/info.log", "serialize": False, 'level': 'INFO'},
]
}
logger.configure(**logger_config)"sink": sys.stderr - выводлогов в консоль
"sink": "log/info.log" - вывод логов в файл
'level': 'INFO' это уровень логов. Возможные уровни: TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR , CRITICAL. Каждый следующий слева направо уровень запрещайт вывод логов более низкого уровня. То есть если указан уровень INFO, сообщения с уровнем TRACE, DEBUG выводиться не будут.
GAMES = [Games.CS, Games.DOTA, Games.RUST]- список игр, по которым будет производиться торговля. Доступные значения:Games.CS, Games.DOTA, Games.RUST, Games.TF2PREV_BASE = 60 * 60 * 4- обновление базы скинов каждыеPREV_BASEсекундORDERS_BASE = 60 * 10- обновление базы ордеров каждыеORDERS_BASEсекундBAD_ITEMS- список слов. Если слово входит в название предмета, то он не будет куплен.
-
STOP_ORDERS_BALANCE = 1000- Останавливать выставление ордеров при балансе на 10 долларов меньше минимальной цены ордера -
MIN_AVG_PRICE = 400- Минимальная средняя цена за последние 20 покупок предмета в центах. Предметы с более низкой ценой не будут добавляться в базу скинов. -
MAX_AVG_PRICE = 3500- Максимальная средняя цена за последние 20 покупок предмета в центах. Предметы с более высокой ценой не будут добавляться в базу скинов. -
FREQUENCY = True- Включить ли алгоритм высокочастотной торговли. При значении True следует указывать параметрPROFIT_PERCENT = 6или меньше, а параметрGOOD_POINTS_PERCENT = 50или выше -
MIN_PRICE = 300- минимальная средняя цена. Ниже этой цены ордер выставляться не будет. -
MAX_PRICE = 3000- максимальная средняя цена. Выше этой цены ордер на предмет не поставится. -
PROFIT_PERCENT = 7- минимальный профит, который мы хотим получить, если купим предмет по цене текущего первого ордера. -
GOOD_POINTS_PERCENT = 50- процент точек в истории 20-ти последних продаж, соответствующих параметруPROFIT_PERCENT = 7. В данном случае, если менне 50 процентов точек продавались с профитом меньше 7 процентов, то ордер на такой предмет ставиться не будет. -
AVG_PRICE_COUNT = 7- высчитование средней цены по последним 7 продажам для формирования предполагаемого профита. -
ALL_SALES = 100- минимальное количество продаж за весь период, ниже которого ордер выставляться не будет -
DAYS_COUNT = 20- не менееSALE_COUNT = 15продаж заDAYS_COUNT = 20дней. Отбор по популярности` -
SALE_COUNT = 15- не менееSALE_COUNT = 15продаж заDAYS_COUNT = 20дней. Отбор по популярности` -
LAST_SALE = 2- последняя продажа не позднее LAST_SALE дней назад -
FIRST_SALE = 15- первая покупка не позже FIRST_SALE дней назад -
MAX_COUNT_SELL_OFFERS = 30- максимальное количество выставленных предметов на продажу. Выше 30 ордер не поставится. -
BOOST_PERCENT = 24- удаляем до 3 точек, которые выше средней цены на 24 процента -
BOOST_POINTS = 3- удаляем до 3 точек, которые выше средней цены на 24 процента -
MAX_THRESHOLD = 1- Максимальное повышение цены на MAX_THRESHOLD процентов от текущего ордера. Максимальное повышение цены нашего ордера от цены текущего первого ордера -
MIN_THRESHOLD = 3- Максимальное понижение цены нашего ордера от цены текущего. Задают границы изменения цены для ордера
MIN_PERCENT = 4- минимальный процент профитаMAX_PERCENT = 12- максимальный процент профита