Skip to content

A fast cryptocurrency trading bot implemented in Go

License

Notifications You must be signed in to change notification settings

enorith/ninjabot

 
 

Repository files navigation

image

tests Go Reference

A fast cryptocurrency trading bot framework implemented in Go. Ninjabot permits users to create and test custom strategies for spot markets.

⚠️ Caution: Working in progress - It's not production ready 🚧

Installation

go get -u github.com/enorith/ninjabot/...

Examples of Usage

Check examples directory:

  • Paper Wallet (Live Simulation)
  • Backtesting
  • Real Account (Binance)

CLI

To download historical data you can download ninjabot CLI from release page

  • Download 30 days: ninjabot download --pair BTCUSDT --timeframe 1d --days 30 --output ./btc.csv

Backtesting Example

  • Backtesting a custom strategy from examples directory:
go run examples/backtesting/main.go

Output:

[SETUP] Using paper wallet                   
[SETUP] Initial Portfolio = 10000.000000 USDT 
+---------+--------+-----+------+--------+--------+------------+
|  PAIR   | TRADES | WIN | LOSS | % WIN  | PAYOFF |   PROFIT   |
+---------+--------+-----+------+--------+--------+------------+
| ETHUSDT |     19 |   9 |   10 | 47.4 % |  6.975 |  6334.1268 |
| BTCUSDT |     17 |   6 |   11 | 35.3 % |  7.734 |  4803.0181 |
+---------+--------+-----+------+--------+--------+------------+
|   TOTAL |     36 |  15 |   21 | 41.7 % |  7.333 | 11137.1449 |
+---------+--------+-----+------+--------+--------+------------+
--------------
WALLET SUMMARY
--------------
0.000000 ETH
0.000000 BTC
21137.144920 USDT
--------------
START PORTFOLIO =  10000 USDT
FINAL PORTFOLIO =  21137.14492013396 USDT
GROSS PROFIT    =  11137.144920 USDT (111.37%)
MARKET CHANGE   =  396.71%

--------------
Chart available at http://localhost:8080

Plot result:

Roadmap:

  • Live Trading

    • Custom Strategy
    • Order Limit, Market, OCO
    • Stop Orders
  • Backtesting

    • Paper Wallet (Live Trading with fake wallet)
    • Load Feed from CSV
    • Market Orders
    • Limit Orders
    • OCO Orders
    • Stop Orders
  • Bot Utilities

    • CLI to download historical data
    • Plot (Candles + Sell / Buy orders)
    • Telegram Notifier
    • Plot Indicators

Exchanges:

Currently, we only support Binance exchange. If you want to include support for other exchanges, you need to implement a new struct that implements the interface Exchange. You can check some examples in exchange directory.

About

A fast cryptocurrency trading bot implemented in Go

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.8%
  • JavaScript 2.3%
  • Other 0.9%