https://github.com/bitfinexcom/bfx-hf-strategy
https://github.com/bitfinexcom/bfx-hf-strategy
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bitfinexcom/bfx-hf-strategy
- Owner: bitfinexcom
- License: apache-2.0
- Created: 2018-08-08T10:27:30.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-10-11T12:37:13.000Z (over 2 years ago)
- Last Synced: 2025-04-11T06:13:51.408Z (about 1 year ago)
- Language: JavaScript
- Size: 316 KB
- Stars: 27
- Watchers: 7
- Forks: 21
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
## Bitfinex Honey Framework Trading Strategy Library for Node.JS
[](https://travis-ci.org/bitfinexcom/bfx-hf-strategy)
This repo serves as a framework for creating trading bots/strategies on the Bitfinex platform. It consists of a set of order methods and an architecture compatible with `bfx-hf-data-server` and `bfx-hf-backtest` for backtests on historical candle/trade data, which can be transitioned seamlessly to trading on the live markets.
Strategies written using this framework must define a set of update methods, called on each tick (with either a trade or a candle), along with a set of indicators which are automatically updated on each tick. The indicators are made available to the strategy methods, and can be queried to direct trading behavior.
### Features
* Event-driven design approach allowing strategies to react to market updates in real-time
* Compatibility with `bfx-hf-backtest` for backtest execution
* Compatibility with `bfx-hf-strategy-exec` for execution on live markets
### Installation
```bash
npm i --save bfx-hf-strategy
```
### Quickstart & Example
Using `bfx-hf-stratey` implies writing a custom strategy utilizing the methods provided by the library. The following is an example of a valid strategy as defined within `examples/macd_cross`:
```js
const { MACD } = require('bfx-hf-indicators')
const { SYMBOLS, TIME_FRAMES } = require('bfx-hf-util')
const HFS = require('bfx-hf-strategy')
module.exports = ({
symbol = SYMBOLS.BTC_USD,
tf = TIME_FRAMES.ONE_HOUR
} = {}) => HFS.define({
id: 'quickstart_example',
name: 'quickstart_example',
symbol,
tf,
indicators: {
macd: new MACD([10, 26, 9])
},
// This quickstart example immediately opens a long position, and then no
// longer reacts to future market updates
onPriceUpdate: async (state = {}, update = {}) => {
const position = HFS.getPosition(state)
if (position) {
return state
}
return HFS.openLongPositionMarket(state, {
mtsCreate: mts,
amount: 1,
price
})
}
})
```
### Docs
[Refer to `docs/usage.md`](/docs/usage.md) for an overview of the strategy system and methods available at runtime, [and `docs/api.md`](/docs/api.md) for JSDoc-generated API documentation.
Ready to run examples can be found in the [`examples/` folder](/examples)
### Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
### Note
This package will be maintained only via github, please use latest relases from github instead of npm.
Example on how to install specific version from github:
```
npm i --save-prod https://github.com/bitfinexcom/bfx-hf-strategy.git#v1.1.1
```
Example on how to install it latest version from github:
```
npm i --save-prod https://github.com/bitfinexcom/bfx-hf-strategy.git
```