⚡ Speedy backtester! 📊 Highly interactive and explorative plotting! 🚀 Trivial deployments!
The one-of-a-kind solution for automated (crypto)trading. PingPong is unparalleled in its flexibility to adapt to different trading environments. The bot is setup to be easy to customize, and can execute any kind of strategy thanks to an approachable set of interfaces. It comes with a backtest engine that also supports trading with margin (and therefore position management). Paper mode allows to dry run your strategies before executing them in Live mode. The framework allows to achieve no code duplication between simulated and live modes.
- 📈 Backtest in spot markets, or with margin in isolated mode).
- 📊 Plotting for OHLCV, custom indicators, trades history, asset balance history
- 🔍 Optimization (grid search, evolution and bayesian opt algorithms, restore/resume capability and plotting)
- 📄 Paper mode (using real orderbook and trades history)
- 🔴 Live (not implemented)
- ⏹️ Telegram Bot (not implemented)
- 🖥️ Dashboard (not implemented)
- 📡 Help you write data feeds to monitor exchanges or 3rd party apis.
- ⬇️ Download data from external archives in parallel, and api wrappers for crypto apis.
- 💾 Store and load OHLCV (and arbitrary) data locally or remotely (with resampling).
- 🔧 Implement custom behaviour thanks to a fine grained type hierarchy for instruments, exchanges, orders, etc...
PingPong.jl requires at least Julia 1.9. Is not in the julia registry, to install it do the following:
- Clone the repository:
git clone --recurse-submodules https://github.com/panifie/PingPong.jl PingPong
- Activate the project:
cd PingPong
git submodule init
git submodule update
julia --project=.
- Download and build dependencies:
# use centralized condapkg env
ENV["JULIA_CONDAPKG_ENV"] = joinpath(dirname(Base.active_project()), ".conda")
import Pkg; Pkg.instantiate()
The api is not stable. If you want more stability around some functionality open an issue for the function of interest such that I can add a test around it.