mirror of
https://github.com/MAGICGrants/autoforward-autoconvert.git
synced 2026-01-08 21:18:09 -05:00
84 lines
4.2 KiB
Markdown
84 lines
4.2 KiB
Markdown
# autoforward-autoconvert
|
|
|
|
Programs to auto-forward BTC, LTC, LTC-MWEB, and XMR wallets to Kraken, and then auto-convert to your preferred settlement currency (e.g. USD, USDT, BTC).
|
|
|
|
## Requirements
|
|
|
|
- Docker
|
|
- Docker Compose
|
|
|
|
## Configuration
|
|
|
|
Create a `.env` file as a copy of `.env.example` and set the values for the empty variables.
|
|
|
|
### Environment variables
|
|
|
|
| Variable name | Required | Default | Description |
|
|
| - | - | - | - |
|
|
| `BITCOIN_WALLET_SEED` | Yes | - | Your BIP39 Bitcoin mnemonic seed. Used for all Bitcoin-like assets. |
|
|
| `LITECOIN_WALLET_SEED` | Yes | - | Your BIP39 Litecoin mnemonic seed. |
|
|
| `LITECOIN_MWEB_WALLET_SEED` | Yes | - | Your Electrum-format Litecoin MWEB mnemonic seed. |
|
|
| `MONERO_WALLET_SEED` | Yes | - | Your 25 word Monero mnemonic seed. |
|
|
| `MONERO_WALLET_HEIGHT` | Yes | - | The restore height of your Monero wallet. |
|
|
| `ELECTRUM_RPC_PASSWORD` | Yes | - | A new strong password for your Electrum RPCs. |
|
|
| `MONERO_RPC_PASSWORD` | Yes | - | A new strong password for your Monero RPC. |
|
|
| `MONERO_WALLET_PASSWORD` | Yes | - | A new strong password for your Monero Wallet. |
|
|
| `KRAKEN_API_KEY` | Yes | - | Your API key from Kraken. |
|
|
| `KRAKEN_API_SECRET` | Yes | - | Your API secret from Kraken. |
|
|
| `MONERO_DAEMON_ADDRESS` | Yes | - | The address of a Monero daemon you own or trust. |
|
|
| `BITCOIN_ELECTRUM_SERVER_ADDRESS` | **No** | - | The address of a Bitcoin Electrum server you own or trust. E.g.: `localhost:50001:t` (no SSL) or `my.electrum.server:50001:s` (SSL). By leaving this blank you're letting Electrum select a random server for you, which may be a privacy concern. |
|
|
| `LITECOIN_ELECTRUM_SERVER_ADDRESS` | **No** | - | The address of a Litecoin Electrum server you own or trust. E.g.: `localhost:50001:t` (no SSL) or `my.electrum.server:50001:s` (SSL). By leaving this blank you're letting Electrum select a random server for you, which may be a privacy concern. |
|
|
| `MAX_NETWORK_FEE_PERCENT` | **No** | `5` | The maximum accepted miner fee percent when auto-forwarding. Not applied to XMR. |
|
|
| `MAX_SLIPPAGE_PERCENT` | **No** | `0.5` | The maximum accepted slippage percent when auto-converting. |
|
|
| `SETTLEMENT_CURRENCY` | **No** | `USD` | The currency you wish to convert to. If there isn't a direct trading pair, it attempts to trade through USD first, e.g. XMR->USD->DAI. |
|
|
| `BITCOIN_FEE_SOURCE` | **No** | `https://mempool.space/api/v1/fees/recommended` | The fee API source to use for Bitcoin transactions. |
|
|
| `BITCOIN_FEE_RATE` | **No** | `halfHourFee` | The fee rate to use in the Bitcoin fee source API response. |
|
|
| `LITECOIN_FEE_SOURCE` | **No** | `https://litecoinspace.org/api/v1/fees/recommended` | The fee API source to use for Litecoin transactions. |
|
|
| `LITECOIN_FEE_RATE` | **No** | `halfHourFee` | The fee rate to use in the Litecoin fee source API response. |
|
|
|
|
|
|
## Running
|
|
|
|
After setting the required environment variable values, you can run the containers:
|
|
|
|
```bash
|
|
$ docker-compose --env-file .env up -d
|
|
```
|
|
|
|
## Changing seeds
|
|
|
|
If you wish to change any of the wallet seeds in the future, first you have to take down all Docker Compose services and delete the volumes:
|
|
|
|
```bash
|
|
$ docker-compose down -v
|
|
```
|
|
|
|
Change the seeds in the `.env` file and start all services again:
|
|
|
|
```bash
|
|
$ docker-compose --env-file .env up -d
|
|
```
|
|
|
|
## Trading Strategy
|
|
|
|
The trading strategy utilized in this program is as follows:
|
|
|
|
- Fetch the current balance to sell.
|
|
- First try to sell with one trade, e.g. XMR->USD.
|
|
- If that fails, try to sell via USD, e.g. XMR->USD->DAI.
|
|
- Sell by taking as many maarket trades as possible to not move the price down more than 0.5% from the calculated mid price.
|
|
- Wait a random amount of time before trying again between 30-90 seconds.
|
|
|
|
We strongly recommend running this program with a dedicated Kraken account to ensure that it does not interfere with any of your other activities.
|
|
|
|
This trading stategy may not be optimal for your needs. You can configure the `MAX_NETWORK_FEE_PERCENT` environment variable. For illiquid trading pairs that regularly have bid-ask spreads exceeding 1%, consider a higher value than 0.5%. You should consider a different trading strategy if you are sensitive to taker fees.
|
|
|
|
## Contributing
|
|
|
|
Pull requests welcome!
|
|
Thanks for supporting MAGIC Grants.
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|