millworm / Csgo.tm-Bot

5 stars 4 forks source link

Принцип работы бота #6

Open Beseenok opened 6 years ago

Beseenok commented 6 years ago

Приветствую! Как я понимаю бот работает по принципу If(marketname == listname && marketprice <= listprice) { Buy(); } Или же он перебивает цену по ордерам? если по первому, то от куда берется нужная цена? Если указывать ее вручную, то, если вещь выставят хотя бы на 1коп. больше указанной, то вещь не будет куплена, а это потеря прибыли или я что то не так понимаю?

millworm commented 6 years ago

Бот работает по принципу: Добавить в него предметы, которые хотелось бы покупать. Затем выставить прибыль - либо для каждого предмета своя, либо общая. После бот для каждого предмета возьмет с сайта 2 цены: среднюю и минимально выставленную на продаже. Из них возьмет наименьшую. На основе нее, вышей комиссии с продажи на маркете и выставленной прибыли вычислит цену покупки: MinDiscount-profit (2 для предметов с ценой выше 200р). Так для каждого предмета. После обновления всех цен, выставятся цены в уведомлениях, проверит список быстрых покупок и запустится проход по предметам. Линейный проход по списку с интервалом в Itimer из конфига. И начнет слушать веб-сокеты по двум каналам: newitems_go и webnotify для покупки предметов, ну и остальные каналы для уведомлений о покупке, передачи и тд.

Да, действительно, получается так, что если цена будет на 1 коп. выше, то он не купит

4ikistik commented 6 years ago

Выставление вещей на продажу Можно реализовать, чтобы бот выставлял определенный предмет по определенной цене? Ручками создавать таблицу, аналогичную csgotmitems.dat. P.S. Боюсь, что itm.i_market_hash_name иногда будет некорректно отображаться (пустое значение), зная проблему с именами hash ru и en.

millworm commented 6 years ago

предполагается, что будет выставлять не только то что покупает, но и другие вещи?

4ikistik commented 6 years ago

вот может также осуществить два варианта = другие по стандарту, а "особые" по фиксированной цене, чтобы охватить все желания. но в моем случае интересен пока только особые скины по фиксированной цене.

4ikistik commented 6 years ago

Ввести базу GiveListItems на примере GetListItems с определенным GivePrice и типом

4ikistik commented 6 years ago

Хотел бы немного уточнить по алгоритму выставления товара: например в инвентаре есть 2 одинаковых предмета, один куплен за 60 коп, а другой за 80 коп, то как бот их будет выставлять? ясно, если уже выставленные по 1 руб и бот их выставит по 99 коп, а если на момент выставления стоит предмет с ценой 83 коп, то как? (вижу, что он учитывает скидку)

4ikistik commented 6 years ago

а если предмет не был куплен, а я перекинул в инвентарь с другого персонажа, то в этом случае не выставит?

millworm commented 6 years ago

Хотел бы немного уточнить по алгоритму выставления товара: например в инвентаре есть 2 одинаковых предмета, один куплен за 60 коп, а другой за 80 коп, то как бот их будет выставлять? ясно, если уже выставленные по 1 руб и бот их выставит по 99 коп, а если на момент выставления стоит предмет с ценой 83 коп, то как? (вижу, что он учитывает скидку)

найдет в истории за 7 часов покупки этого предмета, из них возьмет максимальную цену и выставит только в том случае, если находясь на 5(maxPosition в getPriceForSet) позиции с учетом комиссии ты получишь больше чем заплатил. там еще была проверка на то, чтобы не уйти далеко от средней цены: средняя 5, а в списке продаж только цена за 60. должен был вставить за 5+какой-то%. но это отключено. нестабильно работало( вещи, которые ты не купил за последние 7? часов он не выставит

4ikistik commented 6 years ago

больше чем заплатил

на значение Profit?

millworm commented 6 years ago

не помню по какой причине, но я перестал учитывать profit в выставлении. но это легко вернуть. ситуация такая. т.к. это консоль и управление так себе, то я сейчас могу отгрузить изменения, для того чтобы некоторые предметы выставлялись по цене, указанной в конфиге. будет новое поле priceForSetItem, из которого будет браться значение, при SetItemType = 1(ручное выставление цен). так же будет флажок NeedBuy, которые показывает нужно ли покупать этот предмет или он висит в списке только для того, чтобы выставлялись цены.

но все эти настройки будут делаться только руками в файле items.json. если устроит, то сейчас отгружу

millworm commented 6 years ago

т.е. выглядеть это будет примерно так: добавляешь предметы в бота через команду "а", потом выключаешь его, меняешь в items.json настройки для того что нужно, включаешь обратно

4ikistik commented 6 years ago

давай попробуем) тем более, если это будет формат json, который можно редактировать, я сам могу без бота добавлять то, что мне нужно.

millworm commented 6 years ago

т.е. в любом случае предмет придется добавить в бота. не важно, для покупки или только для выставления NeedBuy: true - предмет покупается, false - в списке только для выставления SetItemType: 0 - автоматически подбирать цену, 1 - заданное значение из поля ниже PriceForSetItem - цена, за которую нужно выставить предмет

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

запусти, он пересоздаст файл и можешь настраивать

millworm commented 6 years ago

пора уже делать интерфейс) если стим не закроет все обмены, то сделаем недельки через 2

4ikistik commented 6 years ago

"price": что это за параметр? значение -10.0 = нормально? это по какой цене покупать в случает "priceCheck" = 1?

millworm commented 6 years ago

price это цена покупки priceCheck - как обновлять цену: 0 - считать автоматически, 1 - брать с уведомлений зачем менять в конфиге то, чего не понимаешь? да и в коде все есть

4ikistik commented 6 years ago

я уже понял, но бот мне сам ставил цену, вот и спросил (может лагал сервер, не знаю)

millworm commented 6 years ago

не, там просто разом для всех вещей цены запрашивались. ничего критичного, если "NeedBuy": false сейчас убрал это