GithubHelp home page GithubHelp logo

aladdin's People

Contributors

loyd avatar universome avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aladdin's Issues

Устранить двойную деградацию

Сейчас если произошла ошибка во время ставки, то деградация (сейчас она называется регрессией, что не совсем правильно, я считаю) произойдёт дважды.

Редкий EAGAIN

Иногда гемблеры падают при запросах из-за

Network error: Resource temporarily unavailable (os error 11)

Что соответствует EAGAIN. Обычно он возникает при работе с сокетами в неблокирующем режиме. Мы же работаем с блокирующими сокетами (я верю hyper-у, ага) и природа этого мне не ясна.

Возможно с этим связана и другая ошибка:

Network error: Connection closed

Workaround: засыпать на n ms и повторять попытку.

Поправить обновления Betway

  1. Присылают priceDec, но не присылают priceNum и priceDen (а ставку мы делаем на основе них)
  2. Присылают обновления на события, за которыми мы не следим.

Регрессия гемблера

Если гемблер навернулся, необходимо удалять все связанные с ним офферы и определить через сколько его перезапускать и как (с авторизацией или без).

Обособить состояние

Нужно вытащить состояние под мьютекс.

Состояние так или иначе должно включать в себя:

  1. Логи по гемблерам.
  2. Логи общие.
  3. Состояние гемблеров (активны/не активны и баланс).
  4. События.

Модуль сравнения офферов

23:54 arbitrer     |   Opportunity exists (effective margin: 0.44), unbiased strategy:
23:54 arbitrer     |     Place 0.50 on Ehome.L by 1xsporta.space (coef: x4.58, profit: +127.0%)
23:54 arbitrer     |     Place 0.50 on Ehome.L by egamingbets.com (coef: x4.50, profit: +127.0%)
23:54 arbitrer     | Suspiciously high profit (+127.0%)

screenshot from 2016-09-28 23-59-39
screenshot from 2016-09-28 23-59-26

EGB сильно меняет коэффициент

Пример:

23:43 arbitrer     |     27/09 13:00 StarCraft2(Series) #198536 (Jinair.Rogue x1.37|Neeb x2.686) by egamingbets.com
...
23:43 arbitrer     |     Place 0.39 on Neeb by egamingbets.com (coef: x2.69, profit: +4.9%)
....
23:43 egamingbets  | While placing bet: Unexpected error: Rate has changed to 1.992, do you confirm?

В целом, проблему закрывается проверкой в #71, но я бы провёл дополнительное исследование, вдруг парсим что-то не так.

Гемблер betway сошёл с ума

12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated
12:23 arbitrer     | 29/09 11:00 Dota2(Series) #949999 (Braveheart x1.55|(draw) x2.7|Rock x9.7) by betway.com is updated

Сервер произвольно ложится

Это происходит потому что сокет иногда почему-то остаётся висеть, пока не истечёт таймаут:

tcp       32      0 46.101.244.208:48845    104.25.123.32:443       CLOSE_WAIT  1002       1161015     5389/aladdin 

Workaround: не ограничивать сервер одним потоком, пока не пофиксим.

Suspended ставки на betway

Сегодня, из логов:

13:25 arbitrer     |     Place 0.53 on Ehome.Keen by egamingbets.com (coef: x2.14, profit: +13.1%)
13:25 arbitrer     |     Place 0.47 on EHOME Luminous by betway.com (coef: x2.40, profit: +13.1%)
13:25 arbitrer     |   Opportunity exists (effective margin: 0.88), unbiased strategy:
13:25 arbitrer     |     Place 0.53 on Ehome.Keen by egamingbets.com (coef: x2.14, profit: +13.1%)
13:25 arbitrer     |     Place 0.47 on EHOME Luminous by betway.com (coef: x2.40, profit: +13.1%)
13:25 arbitrer     |   Opportunity exists (effective margin: 0.88), unbiased strategy:
13:25 arbitrer     |     Place 0.53 on Ehome.Keen by egamingbets.com (coef: x2.14, profit: +13.1%)
13:25 arbitrer     |     Place 0.47 on EHOME Luminous by betway.com (coef: x2.40, profit: +13.1%)
13:25 arbitrer     |   Opportunity exists (effective margin: 0.88), unbiased strategy:
13:25 arbitrer     |     Place 0.53 on Ehome.Keen by egamingbets.com (coef: x2.14, profit: +13.1%)
13:25 arbitrer     |     Place 0.47 on EHOME Luminous by betway.com (coef: x2.40, profit: +13.1%)
13:25 arbitrer     |   Opportunity exists (effective margin: 0.87), unbiased strategy:
13:25 arbitrer     |     Place 0.52 on Ehome.Keen by cybbet.com (coef: x2.22, profit: +15.3%)
13:25 arbitrer     |     Place 0.48 on EHOME Luminous by betway.com (coef: x2.40, profit: +15.3%)

Коэффициент на betway.com не менялся как минимум с 13:19 до 13:45, когда ставка и была не сделана:

13:45 betway       | While placing bet: Unexpected error: Placing bet failed: PlaceBetResponse { success: false, error: Some(PlaceBetError { message: "This market is current
ly suspended", details: Some([PlaceBetErrorDetail { min: 34, max: 5613 }]) }) }

screenshot from 2016-09-26 23-02-53

Реализовать обвязку вокруг ставок

Необходимо реализовать обвязку вокруг place_bet():

  1. Хранить историю ставок.
  2. Проверять успешно ли прошла ставка (нет ошибок от place_bet и ожидаемо изменился баланс).
  3. Не делать повторных ставок.
  4. В dev-режиме реально не ставить.

Нужно анализировать события повторно

Пример:

13:45 arbitrer     |   Opportunity exists (effective margin: 0.87), unbiased strategy
13:45 arbitrer     |     Place 0.52 on Ehome.Keen by cybbet.com (coef: x2.19, profit: +14.5%)
13:45 arbitrer     |     Place 0.48 on EHOME Luminous by betway.com (coef: x2.40, profit: +14.5%)
... (ставка по ^)
13:47 arbitrer     |   Opportunity exists (effective margin: 0.89), unbiased strategy:
13:47 arbitrer     |     Place 0.51 on Ehome.Keen by egamingbets.com (coef: x2.21, profit: +12.4%)
13:47 arbitrer     |     Place 0.49 on Ehome.L by 1xsporta.space (coef: x2.29, profit: +12.4%)

Вторая пара анализировалась только после действия по первой.

Как деплоить будем?

Варианты:

  1. На сервере стягивается репозиторий, собирается и запускается. Главный минус: все сорцы на сервере (а ещё и пароли) и с сервера есть доступ к репозиторию.
  2. С локальной машины копируются файлы на сервер, а после сборки удаляются, бинарь запускается. Минус: сорцы и пароли некоторое время на сервере.
  3. Кросс-платформенная компиляция. Минус: усложнение сборки (хотя с rustup вроде должно быть просто).

Не всегда верный подход к сортировке

20/09 04:30 Dota2(Series) #196032 (Vici Gaming J|Invictus Gaming) by egamingbets.com
20/09 04:40 Dota2(Series) #93255945 (Vici Gaming J|Invictus Gaming) by 1xsporta.space
Opportunity exists (effective margin: 0.96), unbiased strategy:
  Place 0.57 on Invictus Gaming by 1xsporta.space (coef: x1.83, profit: +3.8%)
  Place 0.43 on Invictus Gaming by egamingbets.com (coef: x2.40, profit: +3.8%)

Сильно похоже на то, что чуваки лоханулись с первоначальной оценкой и на двух сайтах они отличались ну очень сильно. Сейчас всё нормализировалось. В любом случае это не отменяет того факта, что простой сортировки недостаточно.

Я думаю, что нужно проверять, что хотя бы одна пара названий команд совпала по fuzzy_eq: это должно быть верно, т.к. иначе бы эти офферы не попали в одно событие.

При этом, если не совпало, то меняем первый и второй местами и проверяем ещё раз. Пока у нас ставки только на два исхода (три с draw), это должно работать очень неплохо.

Ничья Шрёдингера

Может быть ситуация, когда у одних букмекеров есть «ничья» на событие, а у других — нет.

Пример:

06/09 12:00 CounterStrike(Series) #192738 (Parallax|onestop) by egamingbets.com
06/09 12:00 CounterStrike(Series) #91996389 (Parallax|onestop|(draw)) by 1xsporta.space
06/09 12:00 CounterStrike(Series) #34413 (Parallax|onestop) by cybbet.com

Это приводит к тому, что постоянно возникают возможности:

=> There is an opportunity: [(Outcome("Parallax", 1.81), 0.8191808191808192), (Outcome("onestop", 8.2), 0.18081918081918083)]

Надо, во-первых, разобраться какого хрена у остальных нет ничьи, если она возможна, а, во-вторых, решить что с этим делать.

Учитывать баланс во время ставки

  1. Если баланс на конкретном гемблере небольшой, то учитывать шансы (не ставить при низкий шансах).
  2. Если баланс не позволяет сделать ставку, то нужно исключить гемблер при анализе возможностей.

Обработка сигналов

Теоретически возможна ситуация, когда будет получен сигнал (в первую очередь, конечно, SIGTERM) во время ставки или после того как в db добавится комбо, но перед тем, как завершатся все запросы и в db обновится статус ставки.

Необходимо перехватить сигнал и дождаться завершения ставки.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.