204 lines
7.6 KiB
Markdown
204 lines
7.6 KiB
Markdown
# Introduction
|
|
|
|
Managing App is a bot management application written using C# and Typescript. First goal was to be able to run an
|
|
infinite
|
|
number of Bot without any limitations (will depend on your server capabilities only)
|
|
It is designed to support multiples exchanges and be controlled via webUI or Discord.
|
|
It contains bot management, backtesting, scenario management and money management..
|
|
|
|
---
|
|
|
|
# Roadmap
|
|
|
|
## v1 - The base
|
|
|
|
- [x] Bot management
|
|
- [x] Backtesting
|
|
- [x] MoneyManagement
|
|
- [x] Strategies systems
|
|
- [x] WebUI
|
|
- [x] Robust trading management
|
|
- [x] Adaptive trading
|
|
- [x] Account management
|
|
- [x] Workers (prices, backtests, volumes)
|
|
- [x] Bot backup
|
|
|
|
## v2 - The custody back
|
|
|
|
- [x] Web3 Authentification
|
|
- [x] Hot-wallets management
|
|
- [x] Chainlink and Subgraphs feeds
|
|
- [x] [GMX Contracts integration](https://gmx.io/)
|
|
- [ ] GMX v2 Contracts integration
|
|
|
|
### v2.1
|
|
|
|
- [x] Tools : RektFees, Spotlight
|
|
- [x] Funding Rates
|
|
- [ ] Strategies optimisation
|
|
- [ ] Delta neutral positions
|
|
- [ ] Address tracking
|
|
- [ ] Trading desk
|
|
- [ ] Metrics (backtests, portofolio)
|
|
- [ ] Account Abstraction Layer
|
|
- [ ] Enhance performances
|
|
- [ ] Dockerize everything
|
|
|
|
### v2.2
|
|
|
|
- [ ] Hedging Bot with Options [HegicOption](https://www.hegic.co/)
|
|
- [ ] Market making
|
|
|
|
## v3 - The bitcoin protocol
|
|
|
|
- [ ] Integrate [LNMarkets](https://lnmarkets.com/)
|
|
|
|
## v4 - The omnipotence
|
|
|
|
- [ ] Connect to [Blockstream Satellite](https://blockstream.com/satellite/)
|
|
|
|
# Stack
|
|
|
|
## Architecture
|
|
|
|

|
|
|
|
## Front-end
|
|
|
|
- [Vite.JS](https://vitejs.dev/)
|
|
- [Tailwindcss](https://tailwindcss.com/)
|
|
- [Daisy UI](https://daisyui.com/)
|
|
- [HeroIcon](https://heroicons.com/)
|
|
- [Toastify](https://fkhadra.github.io/react-toastify/introduction)
|
|
- [Tradingview Lightweight-charts](https://github.com/tradingview/lightweight-charts)
|
|
- [Ploty](https://github.com/plotly/react-plotly.js)
|
|
- [SignalR](https://github.com/dotnet/aspnetcore/tree/main/src/SignalR#readme)
|
|
- [Wagmi](https://wagmi.sh/)
|
|
- [Connectkit](https://github.com/family/connectkit)
|
|
|
|
## Back-end
|
|
|
|
- .NET 7
|
|
- [SignalR](https://dotnet.microsoft.com/en-us/apps/aspnet/signalr)
|
|
- [Discord.Net](https://github.com/discord-net/Discord.Net)
|
|
- [CryptoExchange.Net](https://github.com/JKorf/CryptoExchange.Net)
|
|
- [Stock Indicators](https://daveskender.github.io/Stock.Indicators/)
|
|
- [InfluxDb](https://github.com/influxdata/influxdb-client-csharp)
|
|
- [Nethereum](https://github.com/Nethereum/Nethereum)
|
|
|
|
---
|
|
|
|
# Features
|
|
|
|
## Money Management
|
|
|
|
- Create a defined money management for a given timeframe (StopLoss, TakeProfit, Amount to risk)
|
|
- Edit a money management configuration
|
|
- Delete a configuration
|
|
|
|
## Strategies
|
|
|
|
- Build a strategy
|
|
- Delete strategy
|
|
|
|
Strategies availables :
|
|
|
|
| Strategy | Description | Recommended values |
|
|
|----------------------|------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|
|
|
| ChandelierExit | Triggers a SHORT signal when the previous candle is above the ChandelierExit, and the last candle closes below the ChandelierExit. | Period: 22, Multiplier: 3 |
|
|
| EMACross | Triggers a signal when the last candle crosses the EMA. | Period: 200 |
|
|
| EMATrend | Returns a Trend signal SHORT when the last candle is below the EMA, and a Trend LONG signal when StochRSI < 20%. | Period: 200 |
|
|
| MACDCross | Triggers a signal when EMAs cross. | FastPeriod: 12, SlowPeriods: 26, SignalPeriods: 9 |
|
|
| RSIDivergenceConfirm | First, detects a divergence and then triggers a signal when the divergence is confirmed. | Period: 4 for 6 |
|
|
| RSIDivergence | Triggers a signal when a divergence occurs on the period. | Period: 4 for 6 |
|
|
| STC | Returns a signal SHORT when the previous STC > 75% and the current STC <= 75%. | Period: 22 |
|
|
| StochRsiTrend | Returns a Trend signal SHORT when Stoch RSI > 80% and a Trend LONG signal when StochRSI < 20%. | Period: 22 |
|
|
| SuperTrend | Triggers a SHORT signal when the previous candle is above the super trend, and the last candle closes below the super trend. | Period: 10, Multiplier: 3 |
|
|
| ThreeWhiteSoldiers | Triggers a LONG signal when the Three White Soldiers pattern is identified. | Lookback Period: 3 |
|
|
|
|
## Scenarios
|
|
|
|
- Build a scenario with multiple strategies
|
|
- Delete a scenario
|
|
|
|
## Backtests
|
|
|
|
The backtest system works with multiple required parameters :
|
|
|
|
- Exchange (Binance, Kraken, FTX)
|
|
- Ticker (ADAUSDT, BTCUSDT, etc..)
|
|
- Days : Since when did you want to start backtest. Should be a negative value
|
|
- ScenarioName
|
|
- Timeframe (OneDay, FifteenMinutes, etc..)
|
|
- BotType (ScalpingBot or FlippingBot)
|
|
- Initial balance
|
|
|
|
## Bots
|
|
|
|
- Create and run a bot
|
|
- Stop / Restart a bot
|
|
- Delete a bot
|
|
- Stop all bots
|
|
- Set bot to watch only (send signal to discord instead of opening a new position)
|
|
|
|
Bot types availables :
|
|
|
|
| Type | Description |
|
|
|-------------|----------------------------------------------------------------------------------------|
|
|
| ScalpingBot | This bot will open position and wait before opening a new one |
|
|
| FlippingBot | The flipping bot flipping the position only when a strategy trigger an opposite signal |
|
|
|
|
## Privy Integration
|
|
|
|
This project uses [Privy](https://privy.io/) for wallet authentication and management. Privy provides a seamless authentication experience with support for both embedded wallets and external wallet connections.
|
|
|
|
### Supported Networks
|
|
|
|
- Ethereum Mainnet
|
|
- Arbitrum One
|
|
|
|
### Configuration
|
|
|
|
To use Privy in this project, you need to:
|
|
|
|
1. Create a Privy account at [https://console.privy.io/](https://console.privy.io/)
|
|
2. Create a new app in the Privy dashboard
|
|
3. Copy your Privy App ID to the `.env` file:
|
|
|
|
```
|
|
VITE_PRIVY_APP_ID=your-privy-app-id
|
|
```
|
|
|
|
### Features
|
|
|
|
- **Multi-chain support**: Connect to Ethereum and Arbitrum networks
|
|
- **Embedded wallets**: Create and manage wallets directly in the browser
|
|
- **Social login**: Authenticate with email, Google, and other providers
|
|
- **Seamless integration**: Works with wagmi for blockchain interactions
|
|
|
|
### Usage
|
|
|
|
The Privy provider is configured in `src/main.tsx` and can be used throughout the application with the `usePrivy` hook:
|
|
|
|
```tsx
|
|
import { usePrivy } from '@privy-io/react-auth';
|
|
|
|
function MyComponent() {
|
|
const { user, login, logout, authenticated } = usePrivy();
|
|
|
|
if (!authenticated) {
|
|
return <button onClick={login}>Login</button>;
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<p>Welcome, {user.email}</p>
|
|
<button onClick={logout}>Logout</button>
|
|
</div>
|
|
);
|
|
}
|
|
```
|
|
|
|
For more information, see the [Privy documentation](https://docs.privy.io/).
|
|
|