-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Предложения] Логика автопокупки карт. Круто улучшения купил #142
Comments
Та же ерунда. Это из-за новой карты в Specials (Hamster+TON=Success), которая уже на 1 лвл стоит 1М. Хорошо хоть минимальный баланс засэйвил в конфиге, так бы всё под ноль ушло. |
Так теперь логика по покупке выгодных карточек не работает получается? |
Там логика такая: Профит (доход в час) / цену
Однако, этот код надо доработать. Во первых надо уточненить значимости. Поскольку некоторые карты могут иметь нулевую цену, то следует учесть это при расчете значимости. Если цена равна нулю, значимость также должна быть нулевой. Так же, предлагаю учитывать уровень карты. Уровень карты также влияет на её прибыль. Поэтому лучше учесть уровень карты в расчете значимости, чтобы более точно определить, какая карта является наиболее прибыльной.
Так же, не помешает оптимизация сортировки. Вместо сортировки списка queue
Так же, карточки с нулевым доходом можно не покупать автоматически, они обычно стоят от 1М, для новичков это вообще смертельно. Поэтому можно дополнительное условие сделать |
Несогласен. Текущая оценка покупки, зависящая от уровня дохода в отношении затрат на покупку, по моему мнению является более успешной. Ведь покупка одной карточки условно первого уровня с бОльшим доходом за каждую потраченную монету в долгосроке является приоритетней покупки карты условно 10го левела но с меньшим доходом за каждую потраченную монету.
Да, тут есть проблема. Безусловно, покупки карточек без доходов автоматизировать не нужно и у себя предложенный код ( Далее, считаю что покупка карточек с высокой стоимостью должна зависеть от "прокачанности" акка. Например от дохода в час. Условно говоря - разрешать покупки карточек, стоимость которых не превышает указанного в конфиге левела и стоимости, равному [ Одному | Двум | Трем ] часам дохода. Готов подискутировать на данную тематику |
Не знаю, но может ещё как-то вот так делать?
Сейчас постараюсь объяснить, в логике автозакупки берётся не доход в час от карточки, а насколько карточка увеличит свой доход в час. Поэтому, мне кажется что всё же лучше по окончательному доходу считать значимость, чем по тому, насколько оно увеличит. |
Такой формулой мы сильно преувеличиваем доходность. Проверь просто в Excel`е (я свои догадки подтвердил именно так). Выберутся карточки с бОльшим уровнем дохода в абсолютном выражении. |
Согласен, но при расчётах могут быть нюансы. Давай вместе попробуем вывести идеальную формулу. То есть мы должны учитывать окупаемость с учётом профита на следующем уровне улучшения, за который мы заплатим, а не на текущем. Для этого нам нужно вывести формулу по которой расчитываются цены следующего улучшения и профита карточек. |
Учитывать окупаемость в очереди возможно тоже стоит, но не думаю что так.
Как я понимаю - каждый новый уровень сильно удорожает стоимость 1 единицы дохода: Поэтому считаю что если уже у нас есть Возможно я не уловил ход мысли, поясни пж. Более актуально сейчас привязка к уровню акка. Т.к вручную новый акк прокачиваю выше, тратя экономно, чем отдав на обработку боту. В который раз себя убеждаю что стоит привязываться к уровню дохода при покупке. Подумаю еще |
Тогда предлагаю ввести ограничение на максимальную цену апгрейда карточки. Например сейчас стоит MAX_LEVEL=12
и в файле .env добавим: |
И так, подводя итоги, что нужно добавить: В настройки:
В логику:
На этом все? |
@shamhi, подожди немного. Давай еще немного помыслим.
И, получается я покупаю все эти карточки. Но, compliance_officer 10го левела выгоднее! То есть я к тому, что хорошо было бы после покупки пройтись снова в поисках карточек, возможно открылись зависимые, или улучшить нужно ту же что уже улучшили, понимаешь? В таком случае мы плавно поднимаем акк и не тратим много монет на дорогие карточки |
а в чем проблема? не понял |
то есть, сделать 2 круга покупок за один раз? |
Я бы заменил на:
Потом ещё на 410 строке сделать более удобный вывод, например вот так:
Я бы везде заменил {earn_on_hour} и {balance} на {earn_on_hour:,} и {balance:,} |
Нет. Нам по сути очередь не нужна. Такой алгоритм максимально эффективен если вводим |
Может так: |
Это первое что приходит в голову, но есть пару нюансов. Может ввести коэф. зависящий от баланса? В идеале бы посмотреть на таблицу прокачек карточек (уровни/стоимость). Поделить если есть у кого. |
800 000 x 5 = 4 000 000
Если у меня доход в час 800к, а на балансе 100 000? А на втором аккаунте доход в час 5к, а баланс 5 000 000? Тогда нужно коэффициент брать из дохода в час + баланс. Например:
Тогда если у нас на одном аккаунте доход 5к в час, а баланс 5 000 000, то maxPrice = 5000x5+5000000/10=525 000 |
В любом случае это лучше чем константа
Да, верно, проверка на внимательное чтение пройдена) Предлагаю так: То есть на одну покупку можем потратить не более 70% "свободных" денег
|
Тогда если у нас на одном аккаунте доход 5к в час, а баланс 5 000 000, то |
Немножко не так. Нам нужно не превысить 70% от "свободных денег" на одну покупку:
|
Так если у нас не выполнится условие price < maxPrice то всё остальное не имеет значение. А оно может не выполниться: PS: давай не будем путать названия переменных, вместо free_money уже есть tempBalance, а вместо max_price_limit есть maxPrice. А то щас каша получится в сообщениях. На проде можно будет поменять. |
Я писал об этой проблеме, но выкупая карточки до 25к мы же подымаем и доходность. Нужно тестировать.
Мне не принципиально, просто там в коде нет кемел-кейса. Да и практика заставляет не использовать temp... и прочего типа названия для переменных. Только осмысленные значения. |
Если BALANCE_TO_SAVE=2000000 то когда на балансе меньше 2 000 000, автоапгрейд не работает. Поэтому баланс менее 2 000 000 не рассматриваем. Далее возьмём эту формулу:
BALANCE_TO_SAVE тоже можно сделать динамическим, по формуле, но оставить возможность ручного ограничения в конфиге (два условия для проверки). Потому как maxPrice: 37 600 000, я всё равно не считаю целесообразным тратить на улучшение более 8 000 000.
Тогда можно безопасно задавать в конфиге MAX_LEVEL=20 |
Я не понимаю смысла в этой формуле. Поясни.
Посмотри еще раз на мой вариант:
Если подставить сюда не 0,7, а, например, 0,166 (16% от свободных денег) можно получить то, чего ты хочешь (не тратить выше 8кк при 50кк) но другой, мелкий акк, сломается) На практике получится иначе, при 50кк баланса обычно уже очень прокачанные карточки и дешевых там просто не будет, потому лучше оставить 0.7 и подождать фидбек. |
Хорошо, заменяем maxPrice на max_price_limit и tempBalance на free_money во избежание дальнейшей путаницы. Но меня смущает условие. Давай посмотрим на твоё условие: Теперь возьмем earn_on_hour = 5000, balance=5000000 и BALANCE_TO_SAVE=2000000 Я же предлагаю формулу и условия:
Если например MAX_UPGRADE_PRICE=8000000 то:
Если в конфиге MAX_LEVEL=20, то карточки из вкладки Markets или PR на 15 lvl будут стоить менее 1кк, а карточки из Specials уже на 5 lvl некоторые стоят более 5кк. Поэтому пусть оно лучше все дешевые карточки докачает до 20 lvl, а потом уже можно прокачать самые дорогие которые свыше 8кк стоят. Когда не останется дешевых карточек, можно вручную в конфиге повышать MAX_UPGRADE_PRICE=50000000 |
Не будет работать для 2+ акка. В общем я так понимаю мы не можем найти консенсус по максимальной сумме покупки. Давай для начала упростим и опишем хотелки. Вот мои, например:
|
У нас же ещё есть total:
Я добавил новую переменную max_price_for_upgrade, которая вычисляет верхний % от свободных денег на балансе, например 70%: (free_money * 0.7). Для каждого диапазона дохода в час (earn_on_hour) определены минимальный (min_percent) и максимальный (max_percent) проценты, которые необходимо использовать. Теперь процент, используемый для расчета лимитов, будет равномерно распределен в диапазоне дохода в час. Например, для новичков с доходом 1000 в час процент будет равен 0.9, а с доходом 300000 в час процент будет равен 0.7. Для средних с доходом 300000 в час процент будет 0.7, а с доходом 600000 в час процент будет 0.6. |
конечно, спрашиваешь еще... |
весь день жду этот апдейт |
Я в восторге, здорово получилось :) Благодарю всех кто принимает участие в развитии этого проекта! Совместными усилиями делаем это творение ещё лучше! Одна голова хорошо, а десять - ещё лучше и эффективнее. Ещё маленькие косметические доработки:
|
Лично я себе ещё добавил: в bot/config/config.py например после 16 сроки добавим: Добавим всего одну строчку в код bot/core/tapper.py (у меня 445 строка):
и в файле .env добавим: В идеале ещё и в .env-example это добавить и в README.md добавить описание этого параметра. P.S: Вот люди тоже просят добавить эту фичу: #192 |
Не уверен, но мне кажется так не будет проблем с авторегами. Насколько я понял, от подключения по API аккаунты хорошо отлетают |
Сегодня вышла еще одна новая карточка, 0 уровень. |
Супер, спс |
Когда денег на балансе монет достаточно, тогда бот выбирает самые выгодные карточки. Но если денег нет, то прокачиваться начинают самые дешёвые.
Из-за того что расчёт свободных средств проходит в цикле отбора карточек, в очередь попадают только самые дешёвые, но не самые окупаемые. Например, есть карточки 1кк/+300 и 1,2кк/+3700. Когда накопится 1,43кк прокачается первая карточка, вторая не пройдёт по условию, хотя она очевидно выгоднее. Я предлагаю убрать free_money из цикла и проверять хватает ли средств перед самой покупкой, чтобы копились монетки на более выгодные карточки |
Так же, пишите предложения по логике покупки комбо карт: #251 |
1.2 Затем вычисляем у каких карт наиболее выгодный коэффициент. Если грубо, то:
1.3. Затем сортировка от наиболее выгодного к менее Таким образом будет динамическое решение о приобретении карт исходя из текущего списка
p.s. Спасибо за проект автору, в первую очередь как за отличный пример аккуратного кода |
Ознакомьтесь с текущим алгоритмом: HamsterKombatBot/bot/core/tapper.py Lines 313 to 332 in ef2a958
Он работает так же, плюс еще несколько приятных плюшек, описанных на этой странице. |
@VintaGist О, так это уже в мейне. Найс! Ну, тогда из идей можно выставить автонакопление за |
Для этого мы используем настройку неснижаемого отстатка BALANCE_TO_SAVE 😎 Закупка комбо может снижать баланс ниже этой настройки, что компенсируется бонусом от комбо |
@VintaGist Может продумать ограничение на выгодность вложений, чтобы бот не покупал за неимением альтернатив совсем бред) Иными словами, чтобы не рассматривались инвестиции, которые приносят слёзы
|
Да я так и сделал , те прокачка идет не просто так а по значимости и берётся топ |
Подскажите, как выключить автоматический сбор шифра и ежедневного бонуса? |
Предлагаю немного другую логику покупки карт. Параметр MAX_UPGRADE_PRICE нет смысла вводить, вместо него уже есть max_price_limit = earn_on_hour * 5 где тот же принцип, только в зависимости от прибыли в час. |
расчеты по закупам конечно неебически работают. въебать 25 лямов ради прибыли +10к это сильно
The text was updated successfully, but these errors were encountered: