All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [Supports] Associate supports to futures trading instead of websockets
- [Futures] Automatically select contract types in simulator mode
- [Symbols] Update for symbol object
- [Exchanges] Backtesting KeyError on OHLCV simulator
- [Exchanges] Supported exchanges
- [Cython] Fix header files
- [Cython] Fix header files
- [Exchanges] Fix crash on compiled exchanges init
- [Orders] Order total
- [Contracts] Fix inverse contracts issues
- [Trading mode] Scripted trading mode system
- [Orders] Chained orders
- [Portfolio] Historical portfolio values
- [Signals] Trading signals
- [PricesManager] Fix mark price float issue
- [Asset] Add restore state when raising PortfolioNegativeError
- [Position] Add get_margin_from_size and get_size_from_margin
- [ExchangePersonalData] Deduct funding fee from the position margin when no sufficient available balance
- [Exchange] hollaex support
- [MarkPrice] Decimal conversion
- [FutureCCXTExchange] is_linear_pair and is_inverse_pair
- [FutureExchange] contract initialization
- [FutureContract] maintenance_margin_rate
- [FutureExchange] position mode parsing
- [FutureExchange] is_inverse, is_linear and is_futures
- [PositionsManager] both position side in position id
- [FutureContract]
__str__ - [PositionsManager] get_symbol_positions with None symbol
- [API] positions
- [CCXTExchanges] get_default_type
- [Position] initial_margin and fee_to_close in _update
- [Trader] close position, set_margin_type, set_leverage and set_position_mode
- [MarginContract] check_leverage_update
- [Transaction] class
- [TransactionsManager] class
- [TransactionsManager] factory
- [TransactionsManager] transfer, blockchain, fee and realised_pnl
- [Positions] missing mark_price fetching
- [Positions] Prevent negative margin
- [LinearPosition] liquidation price calculation
- [Position] liquidation PNL total impact
- [FuturePortfolio] order available decreasing size release
- [FutureExchange] "open" position references
- [Portfolio] inheritance
- [Portfolio] unused async
- [CryptofeedWebsocketConnector] future index feed
- [CryptofeedWebsocketConnector] sandbox support
- [FutureExchangeSimulator] default leverage and margin_type values
- [Future][Exchange] get_contract_type
- [Contracts] MarginContract
- [Portfolio] Asset class
- [Portfolio] spot, margin and future assets
- [Portfolio] create_currency_asset
- [MarginAsset] implementation
- [FutureAsset] implementation
- [FundingManager] predicted_funding_rate
- [FundingChannel] predicted_funding_rate
- [Position] LiquidationState creation when liquidation detected
- [Position] size attribute from quantity
- [Positions] InversePosition and LinearPosition (from cross and isolated)
- [Position] Notional value update
- [LiquidatePositionState] terminate implementation
- [MarginContract] set_current_leverage
- [FutureContract] PositionMode
- [FutureExchange] PositionMode
- [FuturePortfolio] update_portfolio_from_liquidated_position
- [Position] close method
- [Order] get_position_side
- [Positions] multiple position per symbol support
- [FutureContract] is_one_way_position_mode
- [ExchangePersonalData] reduce only and close position when filling order
- [PositionsManager] get_order_position
- [Position] get_quantity_to_close and get_update_quantity_from_order
- [Position] close when size after update is ZERO
- [Position] InvalidOperation catching
- [Asset] _ensure_not_negative
- [Position] on_pnl_update
- [ExchangePersonalData] handle_portfolio_update_from_funding
- FutureContract Moved to exchange_data
- Moved Asset methods to SpotAsset
- [MarginContract] Made margin_type and current_leverage writable
- [Portfolio] Migrated to assets
- [Portfolio] Migrated to get_currency_portfolio
- [ExchangeSymbolData] FundingManager when future
- [Order] get_currency_and_market
- Orders: fees related typing issues
- AbstractSupervisor and AbstractPortfolioSupervisor classes
- [Websocket] Order callback implementation
- [Websocket] Pair independent channels
- [Websocket] Update cryptofeed integration to 2.1.0
- [OrderAdapter] Digit precision
- ExchangeWrapper class
- [Websocket] Do not start when nothing to watch
- [Websocket] Update cryptofeed integration to 2.0.0
- CLI
- [Trades] Handle trades from canceled orders
- [Orders] Handle orders with None price data
- [Orders] Improve order parsing when no order type is available
- [Websockets] Watched symbols subscribe issues
- [Websockets] Subscribe issue
- [Orders] Parsing issue
- [Trader] set_risk api
- [TradesManager] Increase max trade history from 500 to 100000
- [Websockets] feed subscription
- Typing issues
- [Websockets] watched pairs
- [Websockets] watched pairs
- [Orders] use decimal.Decimal instead of floats
- [Portfolio] use decimal.Decimal instead of floats
- [Exchange Manager] exchange subaccount
- [CCXTExchange] exchange subaccount list
- [CCXTExchange] order precision and limits when required
- [Order Manager] Order limit
- [CCXTExchange] options and headers setters
- Exchanges: added available_required_time_frames
- Clear method in websocket exchanges
- Clear method in websocket exchanges
- Supported exchanges
- Mark price from ticker feed
- Cryptofeed logs to devnull
- fetchOrder not supported
- Error log url
- Cryptofeed Websocket authenticated feeds basis
- [Portfolio] race condition
- [Position] multiple fixes
- [Exchanges] handle supporters authentication
- [Exchanges] optimize websockets initialization and pairs addition
- [Exchanges] add is_valid_account on api
- Requirements
- [Exchanges] add exchange details on api
- [Websockets] Optimize websockets usage
- [Exchanges] trading-backend integration
- [Future] Position management
- [Future] Migrate PositionUpdater to AsyncJob
- [Future] Position Channel
- [Exchanges][WS] properly log error messages
- [Exchanges][WS] handle unsupported candles and timeframes
- [Exchanges][WS] candles init
- [Channels] timeframe typing in consumers filtering
- [Exchanges][WS] async callback async declaration
- [Exchanges][WS] stop and close
- [Exchanges][WS] Fix CryptofeedWebsocketConnector cython declaration
- [Exchanges][API] Consider websockets in overloaded computations
- [Exchanges][CryptoFeedWebsocket] timestamps in kline and candles and prevent double channel registration
- [Exchanges][CryptoFeedWebsocket] Feeds stop and close
- [Updater][OHLCV] Initialization with websockets
- [Exchanges][CryptoFeedWebsocket] Feeds handling and websockets logging
- [Portfolio] Raise PortfolioNegativeValueError when the update will cause a negative value.
- since in candle history fetching (thanks to @valouvaliavlo)
- bump requirements
- requirements
- get_traded_pairs_by_currency to trading util (from flask_util)
- TradingMode producers and consumer automated creation with class attributes
- AbstractModeProducer cryptocurrencies, symbols and timeframes wildcard subscription to MatrixChannel through boolean methods
- string formatting in float order adapter
- decimal.Decimal handling
- Wildcard configuration issues
- Integrate hitbtc order fix ccxt/ccxt#8744
- Cryptofeed websocket connector
- tentacles url
- Force chardet version
- Python 3.9 support
- Requirements
- New supported order status (PENDING_CANCEL, EXPIRED, REJECTED)
- Improved exchange unsupported order types handling
- Portfolio balance parsing None values
- Order synchronization and cancellation related issues
- Order cancellation issues
- Profitability computation issues
- Requirements
- Requirements
- [CCXT] Use a CCXT version without binance candles fetching issues.
- [Orders] Improve internal orders management reliability regarding internal exchange order API server-side sync issues.
- [CCXT_Exchange] Fix unnecessary 'recvWindows' param
- [Orders] Orders update event logs
- [CCXTExchange] NoneType when client.timeframes exists but is None
- Prevent multiple channel creations on traded pair duplication
- Requirements
- Profiles handling
- Use OctoBot commons configuration keys
- Order creation typing issue
- Updater data issues
- Exchange load management
- Exchanges and websockets testing tools
- Websockets stop
- CCXT order creations
- Websocket implementation
- Disabled currencies handling
- Exchange architecture to include exchange connectors and remove double inheritance
- ExchangeSimulator's implementations exchange manager reference leaking
- Object type declaration
- Requirements
- Order creation
- Numpy requirement
- PortfolioValueHolder declaration
- Mode factory declaration
- CCXT requirement
- [ModeFactory] Typing
- Python 3.8 support
- [ExchangeData] Cython circular import
- [PersonalData] Cython circular import
- [Lint] Style issues
- [ExchangeChannels] Cython circular import
- ExchangeFactory from ExchangeManager refactor
- ExchangeChannels from ExchangeManager refactor
- ExchangeWebsocketFactory from ExchangeManager refactor
- [ExchangeManager] Refactor
- [Producers] Potential circular import
- [Portfolio] Balance delta update
- [PortfolioValueHolder] From PortfolioProfitability refactor
- [PortfolioProfitability] Refactor
- [Exchange] Error logger typing issue
- [OrderState] Multiple open order updates
- [OrderState] Raise exceptions in finalize
- [Orders] Integrate async job
- [Order] is_to_be_maintained
- [OrderState] Disable cancel and close synchronization with exchange
- [ClosedOrdersUpdater] Disable temporary
- [Orders] double order state refresh
- [Orders] portfolio refresh
- [Orders] double order creation channel push
- [Orders] double order state refresh
- [Trader] cancelled order status
- [OrderState] force filling
- [OpenOrders] no call to check missing
- [FillOrderState] ignored filled order
- [CancelOrderState] missing notification when not using trader
- [OpenOrderState] missing creation Orders Channel notification
- [Orders] Fix average price handling
- [Portfolio] Portfolio refresh issues
- [OrderState] Tests double fill
- [OrderState] Tests async loop error
- OrderState implementation : manage order synchronization for OPEN, FILL, CANCEL and CLOSE status
- OHLCV Updater exchange spamming
- [API] Move cancel_ccxt_throttle_task in exchange API
- [Real Trading] Multiple fixes to enable real trading
- [WebsocketExchange] Adaptations for Binance websocket
- [MarkPrice] Fix mark price initialization when recent trades arrive at first
- [SymbolDataAPI] Fix missing mark price source argument in force_set_mark_price
- [PricesManager] Mark price is now only based on recent trades (except if not available : ticker)
- [Exchanges] Handle exchange tentacles activation
- [Order] Synchronizing after creation on exchange
- [Order] Handling filled and cancelled events from exchange
- [OHLCVUpdater] Initialization exchange spam
- Requirements
- Order super calls
- New Order types support : Trailing stop, Trailing stop limit, Take profit, Take profit limit
- Order fill and post fill refactor
- Tests silent exceptions
- PriceEventManager
- Optimize MarketStatusFixer
- Cython version
- Order close by cancel and fill processes
- Book data class, moved in order_book_manager
- Migrate order tests
- Refactor book data class
- Pandas requirement
- Remove advanced manager from commons
- [API] Candles API
- [Channels] Trading channels issues
- [DataManagers] Trading data issues
- [API] Order and trading registration API
- [ExchangeMarketStatusFixer] Header
- [RestExchange] C typing and add debug logs
- [ExchangePersonalData] Kwarg argument
- [RestExchange] Candle since timestamp
- Requirements
- [Exchanges] Tested exchanges list
- [RealTrading] Fix real trading orders workflow issues
- [ExchangeSimulator] Time manager call
- [ExchangeSimulator] Move time_frames and symbols to set
- [Channels] Exchange channels optimization
- [Backtesting] Multiple data files handling
- [Cython] Headers
- [Backtesting] Multiple optimizations
- [Backtesting] Profitability and recent trades management
- [Consumers] OctoBot channel
- [Requirements] update requirements
- [API] is_mark_price_initialized
- [ExchangeSimulator] Always display at least one candle data
- [Simulators] Time consumer cython declaration
- [OHLCVUpdater] Retry candle history loading
- [AbstractModeConsumer] Error handling
- [Channel] Synchronization support
- [RestExchange] ccxt sandbox mode support
- Use centralized backtesting in exchange simulator
- Use object in trading modes final_eval
- Use str states in trading modes channels
- OctoBot-Commons update
- [OrderAdapter] fix math.nan handling
- [Exchanges] exchange current time API and in construction candles
- [Trading modes] trading modes migration
- [Memory management] improve post-backtesting memory clear
- [CandleManager] Commons shift usage
- [ExchangeFactory] Tests
- [ModeChannel] data param to consumers callback
- [ModeChannel] consumer filtering by state
- [AbstractModeProducer] Matrix channel subscription
- [ExchangeChannel] Cryptocurrency param to channels callbacks
- [ExchangeChannel] TimeFrameExchangeChannel class
- [Channel] time frame filter
- symbols_by_crypto_currencies instead of currencies in exchanges
- CandleManager cython headers
- AbstractModeConsumer cython headers
- AbstractTradingMode cythonization
- Cython headers
- Wildcard imports
- [Channels]
- Book Ticker
- Mini Ticker
- Liquidations
- [Websocket] keep alive
- Integrate OctoBot-tentacles-manager 2.0.0
- [Exchanges] account management (CASH, MARGIN, FUTURE)
- [Future trading] Position parsing improvements
- [Exchanges] Improve keys error handling
- Bump ccxt version with DrakkarSoftware fixes
- OctoBot-Websocket requirement
- Stop ExchangeManager when an error occurs at build stage
- Optimize candles management
- Use compact logger.exception format
- Improve Kline error management
- CandleManager max candles handling
- TradeFactory
- ExchangeManager stop handling
- exchange, mode, portfolio, profitability, symbol_data, trades APIs
- Profitability bugs
- ExchangeFactory to ExchangeBuilder
- Order missing add_linked_order method
- get_exchange_id_from_matrix_id and get_exchange_ids in APIs
- Handle matrix_id in ExchangeConfiguration
- ExchangeFactory can now use matrix_id
- Use exchange_id in exchange channels
- Candle missing data filter
- Candles first index data was missing
- Cryptocurrency management in evaluators
- APIs for exchanges, trading modes, orders, portfolio, profitability, symbol data, trader, trades
- get_total_paid_fees in trades manager
- cancel_order_with_id in trader
- handle_order_update now always notifies orders channel
- get_name from trading modes
- Exchange ID in ExchangeChannels notifications
- ExchangeManager generated ID attribute
- Order factory methods
- Trader adapted from OctoBot legacy
- Order attributes from OctoBot legacy
Requirements
- Commons version to 1.2.2
- Channels version to 1.3.19
- colorlog version to 4.1.0
- Exchange create tentacle path parameter
Requirements
- Commons version to 1.2.0
- Channels version to 1.3.17ccxt
- Backtesting version to 1.3.2
- Websockets version to 1.1.7
- ccxt version to 1.21.6
- scipy version to 1.4.1
- ExchangeMarketStatusFixer cython compatilibity
- Makefile
- ExchangeSymbolData symbol_candles and symbol_klines visibility to public
- CandleManager incompatible static method
- Removed CCXT find_market method
Requirements
- Commons version to 1.1.51
- Channels version to 1.3.6
- Backtesting version to 1.3.1
- Websockets version to 1.1.6
- ccxt version to 1.20.80
- ccxt version to 1.20.80
- scipy version to 1.3.3
- Updaters connection loss support
- OHLCV simulator timestamp management
- OSX support
- Price Channel
- Price Manager
- Mark price updater (price reference for a symbol)
- Moved init constants declaration to constants
- PyPi manylinux deployment
- Simulator for backtesting support
- Pause and resume management for updaters
- Exchange config
- Setup install
- Trader config and risk
- Ticker updater
- Websocket management
- Cython compilation & runtime
- Orders management
- Exchange global access through Exchanges singleton
- Trader enabled method call in init
- Trading mode implementation
- New channels : Position, BalanceProfitability
- CLI improvements
- Order channel : added is_closed boolean param
- Trader :
- Order creation
- Portfolio
- Data class that stores personal data
- Data management classes that manage personal and symbol data stored
- Exchange Channels from OctoBot-Channel
- Basis of CLI interface
- Demo file
- Backtesting classes from OctoBot
- Exchange dispatcher
- Updaters & Simulators (Producers)
- Orders management