Multiple rates generator for crypto changers and markets.
- Регулярный (ежесекундный) сбор и хранение курсов (
ExternalRate) из внешних источников (RateSource) - Построение и хранение матрицы базовых курсов (
CurrencyRate) для поддерживаемых валют из курсов внешних истичников (ExternalRate) на основе установленного метода расчета (CurrencyRateMode) автоматически или через кросс-курсы. - Построение и хранение матрицы конечных курсов (
DirectionRate) для поддерживаемых платежных сервисов (PaymentSystem) с установленной комиссией (ExchangeRate) - Регулярная группировка базовых и конечных курсов в N-минутные отрезки со свечками для истории (
CurrencyRateHistoryIntervalиDirectionRateHistoryInterval) - Регулярная очистка матриц ежесекундных курсов (за сутки накапливается несколько гигабайт)
Add this line to your application's Gemfile:
gem 'gera'And then execute:
$ bundleOr install it yourself as:
$ gem install geraAdd ./config/initializers/gera.rb with this content:
Gera.configure do |config|
config.cross_pairs = { kzt: :rub, eur: :rub }
# Автокурс: ID нашего обменника в BestChange (для исключения из расчёта позиции)
config.our_exchanger_id = 999
# Автокурс: Порог аномальной комиссии для защиты от манипуляторов (по умолчанию 50%)
config.anomaly_threshold_percent = 50.0
endДля каждого направления обмена (ExchangeRate) можно выбрать тип калькулятора автокурса:
# Legacy (по умолчанию) - старый алгоритм
exchange_rate.update!(calculator_type: 'legacy')
# PositionAware - новый алгоритм с защитой от перепрыгивания позиций
exchange_rate.update!(calculator_type: 'position_aware')PositionAware гарантирует, что обменник займёт позицию внутри целевого диапазона (position_from..position_to), а не перепрыгнет выше. Поддерживает:
- Адаптивный GAP для плотных рейтингов
- Исключение своего обменника из расчёта
- Защиту от манипуляторов с аномальными курсами
- EXMO, Russian Central Bank, Bitfinex, Manual
- RUB, USD, BTC, LTC, ETH, DSH, KZT, XRP, ETC, XMR, BCH, EUR, NEO, ZEC
SQL tables diagram - https://github.com/finfex/gera/blob/master/doc/erd.pdf
- move Authority to application level
- Remove STI from RateSource
- Fork
- Create Pull Request
The gem is available as open source under the terms of the GPLv3.