* Filter everything with users * Fix backtests and user management * Add cursor rules * Fix backtest and bots * Update configs names * Sign until unauth * Setup delegate * Setup delegate and sign * refact * Enhance Privy signature generation with improved cryptographic methods * Add Fastify backend * Add Fastify backend routes for privy * fix privy signing * fix privy client * Fix tests * add gmx core * fix merging sdk * Fix tests * add gmx core * add gmx core * add privy to boilerplate * clean * fix * add fastify * Remove Managing.Fastify submodule * Add Managing.Fastify as regular directory instead of submodule * Update .gitignore to exclude Managing.Fastify dist and node_modules directories * Add token approval functionality to Privy plugin - Introduced a new endpoint `/approve-token` for approving ERC20 tokens. - Added `approveToken` method to the Privy plugin for handling token approvals. - Updated `signPrivyMessage` to differentiate between message signing and token approval requests. - Enhanced the plugin with additional schemas for input validation. - Included new utility functions for token data retrieval and message construction. - Updated tests to verify the new functionality and ensure proper request decoration. * Add PrivyApproveTokenResponse model for token approval response - Created a new class `PrivyApproveTokenResponse` to encapsulate the response structure for token approval requests. - The class includes properties for `Success` status and a transaction `Hash`. * Refactor trading commands and enhance API routes - Updated `OpenPositionCommandHandler` to use asynchronous methods for opening trades and canceling orders. - Introduced new Fastify routes for opening positions and canceling orders with appropriate request validation. - Modified `EvmManager` to handle both Privy and non-Privy wallet operations, utilizing the Fastify API for Privy wallets. - Adjusted test configurations to reflect changes in account types and added helper methods for testing Web3 proxy services. * Enhance GMX trading functionality and update dependencies - Updated `dev:start` script in `package.json` to include the `-d` flag for Fastify. - Upgraded `fastify-cli` dependency to version 7.3.0. - Added `sourceMap` option to `tsconfig.json`. - Refactored GMX plugin to improve position opening logic, including enhanced error handling and validation. - Introduced a new method `getMarketInfoFromTicker` for better market data retrieval. - Updated account type in `PrivateKeys.cs` to use `Privy`. - Adjusted `EvmManager` to utilize the `direction` enum directly for trade direction handling. * Refactor GMX plugin for improved trading logic and market data retrieval - Enhanced the `openGmxPositionImpl` function to utilize the `TradeDirection` enum for trade direction handling. - Introduced `getTokenDataFromTicker` and `getMarketByIndexToken` functions for better market and token data retrieval. - Updated collateral calculation and logging for clarity. - Adjusted `EvmManager` to ensure proper handling of price values in trade requests. * Refactor GMX plugin and enhance testing for position opening - Updated `test:single` script in `package.json` to include TypeScript compilation before running tests. - Removed `this` context from `getClientForAddress` function and replaced logging with `console.error`. - Improved collateral calculation in `openGmxPositionImpl` for better precision. - Adjusted type casting for `direction` in the API route to utilize `TradeDirection` enum. - Added a new test for opening a long position in GMX, ensuring functionality and correctness. * Update sdk * Update * update fastify * Refactor start script in package.json to simplify command execution - Removed the build step from the start script, allowing for a more direct launch of the Fastify server. * Update package.json for Web3Proxy - Changed the name from "Web3Proxy" to "web3-proxy". - Updated version from "0.0.0" to "1.0.0". - Modified the description to "The official Managing Web3 Proxy". * Update Dockerfile for Web3Proxy - Upgraded Node.js base image from 18-alpine to 22.14.0-alpine. - Added NODE_ENV environment variable set to production. * Refactor Dockerfile and package.json for Web3Proxy - Removed the build step from the Dockerfile to streamline the image creation process. - Updated the start script in package.json to include the build step, ensuring the application is built before starting the server. * Add fastify-tsconfig as a development dependency in Dockerfile-web3proxy * Remove fastify-tsconfig extension from tsconfig.json for Web3Proxy * Add PrivyInitAddressResponse model for handling initialization responses - Introduced a new class `PrivyInitAddressResponse` to encapsulate the response structure for Privy initialization, including properties for success status, USDC hash, order vault hash, and error message. * Update * Update * Remove fastify-tsconfig installation from Dockerfile-web3proxy * Add build step to Dockerfile-web3proxy - Included `npm run build` in the Dockerfile to ensure the application is built during the image creation process. * Update * approvals * Open position from front embedded wallet * Open position from front embedded wallet * Open position from front embedded wallet * Fix call contracts * Fix limit price * Close position * Fix close position * Fix close position * add pinky * Refactor position handling logic * Update Dockerfile-pinky to copy package.json and source code from the correct directory * Implement password protection modal and enhance UI with new styles; remove unused audio elements and update package dependencies. * add cancel orders * Update callContract function to explicitly cast account address as Address type * Update callContract function to cast transaction parameters as any type for compatibility * Cast transaction parameters as any type in approveTokenImpl for compatibility * Cast wallet address and transaction parameters as Address type in approveTokenImpl for type safety * Add .env configuration file for production setup including database and server settings * Refactor home route to update welcome message and remove unused SDK configuration code * add referral code * fix referral * Add sltp * Fix typo * Fix typo * setup sltp on backtend * get orders * get positions with slp * fixes * fixes close position * fixes * Remove MongoDB project references from Dockerfiles for managing and worker APIs * Comment out BotManagerWorker service registration and remove MongoDB project reference from Dockerfile * fixes
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
- Bot management
- Backtesting
- MoneyManagement
- Strategies systems
- WebUI
- Robust trading management
- Adaptive trading
- Account management
- Workers (prices, backtests, volumes)
- Bot backup
v2 - The custody back
- Web3 Authentification
- Hot-wallets management
- Chainlink and Subgraphs feeds
- GMX Contracts integration
- GMX v2 Contracts integration
v2.1
- Tools : RektFees, Spotlight
- 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
- Market making
v3 - The bitcoin protocol
- Integrate LNMarkets
v4 - The omnipotence
- Connect to Blockstream Satellite
Stack
Architecture
Front-end
- Vite.JS
- Tailwindcss
- Daisy UI
- HeroIcon
- Toastify
- Tradingview Lightweight-charts
- Ploty
- SignalR
- Wagmi
- Connectkit
Back-end
Features
Privy
Front-end required:
- Sign message to get jwt
- Delegate embedded address
- Sign delegation
- Send >10 USDc and 5$ of ETH for txn fees
- Trigger to init address
Backend actions:
- Approve GMX contracts addresses
- Approve USDc contract address
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 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:
- Create a Privy account at https://console.privy.io/
- Create a new app in the Privy dashboard
- Copy your Privy App ID to the
.envfile:
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:
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.
Development
Utilities
The project includes several utility scripts to help with development:
ESM Import Fixer
When working with ES Modules in Node.js:
- Local module imports require
.jsfile extensions - JSON imports require proper type assertions
We provide utility scripts that automatically handle these requirements:
# Fix imports in the src directory (add .js extensions and JSON assertions)
npm run fix-imports
# Update JSON imports to use modern "with { type: "json" }" syntax
npm run update-json-imports
# Run both scripts in sequence (fix imports then update JSON import syntax)
npm run prepare-code
For more details, see the scripts documentation.
