1
0

Compare commits

...

3 Commits

Author SHA1 Message Date
02d663ed53 🤖 Bumped version to 0.1.3
All checks were successful
Package Python / Package (push) Successful in 25s
Test Python / Test (push) Successful in 25s
This commit was automatically generated by a script: https://gitfub.space/Jmaa/python-omni
2024-07-23 00:48:17 +02:00
f7219edc1d 🤖 Repository layout updated to latest version
This commit was automatically generated by a script: https://gitfub.space/Jmaa/python-omni
2024-07-23 00:47:49 +02:00
b6a55091b2
More documentation 2024-07-23 00:15:01 +02:00
6 changed files with 151 additions and 51 deletions

View File

@ -6,12 +6,11 @@
Automatic one-way trades.
This is a wrapper about [`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for
automatically trading one way trades, by using repeated trades
over a period.
The primary motivation is for trading low-volume crypto assets slowly without
affecting the price too much.
This program is a wrapper around
[`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for automatically trading
one-way trades, by using repeated trades over a period. Can be used to slowly
enter or exit positions, for example low-volume crypto currencies, or as an
automated investment savings system.
Supported sites:
@ -27,23 +26,51 @@ pip install -r requirements.txt
## Usage
Run using from the top directory:
```shell
python -m crypto_seller
```
1. Create configuration file. See below and in `examples/` folder for inspiration.
2. [Create KuCoin API key](https://www.kucoin.com/account/api) with **General**
and **Spot Trading** permissions.
3. Add KuCoin API key secrets (`KUCOIN_KEY`, `KUCOIN_SECRET`, `KUCOIN_PASS`) to
an [`secret_loader` accessible
location](https://gitfub.space/Jmaa/secret_loader#user-content-accessible) .
4. Run script using `python -m crypto_seller --config CONFIG_FILE`.
The script will now automatically sell assets over time. The interval between
sell-offs are randomized to avoid front-running, and the amounts are also
randomized to avoid too consistent behaviour.
randomized to avoid certain attacks (only relevant for smallish intervals of
less than a week).
The log will both be displayed in the shell, and be placed in a log file
`output/log.txt`. Every sell-off will be logged to the `output/trades.csv`
file, with as much information as possible. Keep both of these for tax
purposes, if relevant.
## Configuration
Example configurations can be found in the `examples/` folder.
Configurations are `.json` files, with the following fields:
```json
{
"input_asset": str,
"output_asset": str,
"input_amount_low": float,
"input_amount_high": float,
"interval_minutes_low": int,
"interval_minutes_high": int
}
```
While `input_amount_low` and `input_amount_high` can be identical (and
the same for `interval_minutes_XX`) it is discouraged, to avoid frontrunning attacks.
## Auditing information
As mentioned before, this program is mostly glue code and wrappering around
library functionality. The glue application code allows for running the main
loop of checking balance, selling amount and sleeping until the next iteration,
with some argument and configuration parsing thrown in.
The most relevant libraries for auditing are:
- [`fin_depo`](https://gitfub.space/Jmaa/fin-depo): Library for programmatic
@ -51,8 +78,11 @@ The most relevant libraries for auditing are:
This is the library that reads balances and places market orders.
- [`fin_defs`](https://gitfub.space/Jmaa/fin-defs): Definitions of financial
assets and instruments. Used by `fin_depo`.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/) is used by
`fin_depo` for providing KuCoin support.
- [`secret_loader`](https://gitfub.space/Jmaa/secret_loader): Library for
loading of secrets (passwords, API keys, secret keys, configuration files,
etc.) from standardized locations.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/): Used by
`fin_depo` to provide KuCoin backend.
## Taxation
@ -77,8 +107,8 @@ most mature on the danish market, and does support KuCoin.
* Catch runtime errors when selling
* Show errors to log.
* Stop loop and exit with results, and error indicator.
- [ ] Document configuration
- [ ] Document code auditing
- [X] Document configuration
- [X] Document code auditing
- [X] Parse configuration from json.
- [X] Ensure sell time is included in order details
- [X] Log all trades to CSV file.

View File

@ -2,12 +2,11 @@
Automatic one-way trades.
This is a wrapper about [`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for
automatically trading one way trades, by using repeated trades
over a period.
The primary motivation is for trading low-volume crypto assets slowly without
affecting the price too much.
This program is a wrapper around
[`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for automatically trading
one-way trades, by using repeated trades over a period. Can be used to slowly
enter or exit positions, for example low-volume crypto currencies, or as an
automated investment savings system.
Supported sites:
@ -23,23 +22,51 @@ pip install -r requirements.txt
## Usage
Run using from the top directory:
```shell
python -m crypto_seller
```
1. Create configuration file. See below and in `examples/` folder for inspiration.
2. [Create KuCoin API key](https://www.kucoin.com/account/api) with **General**
and **Spot Trading** permissions.
3. Add KuCoin API key secrets (`KUCOIN_KEY`, `KUCOIN_SECRET`, `KUCOIN_PASS`) to
an [`secret_loader` accessible
location](https://gitfub.space/Jmaa/secret_loader#user-content-accessible) .
4. Run script using `python -m crypto_seller --config CONFIG_FILE`.
The script will now automatically sell assets over time. The interval between
sell-offs are randomized to avoid front-running, and the amounts are also
randomized to avoid too consistent behaviour.
randomized to avoid certain attacks (only relevant for smallish intervals of
less than a week).
The log will both be displayed in the shell, and be placed in a log file
`output/log.txt`. Every sell-off will be logged to the `output/trades.csv`
file, with as much information as possible. Keep both of these for tax
purposes, if relevant.
## Configuration
Example configurations can be found in the `examples/` folder.
Configurations are `.json` files, with the following fields:
```json
{
"input_asset": str,
"output_asset": str,
"input_amount_low": float,
"input_amount_high": float,
"interval_minutes_low": int,
"interval_minutes_high": int
}
```
While `input_amount_low` and `input_amount_high` can be identical (and
the same for `interval_minutes_XX`) it is discouraged, to avoid frontrunning attacks.
## Auditing information
As mentioned before, this program is mostly glue code and wrappering around
library functionality. The glue application code allows for running the main
loop of checking balance, selling amount and sleeping until the next iteration,
with some argument and configuration parsing thrown in.
The most relevant libraries for auditing are:
- [`fin_depo`](https://gitfub.space/Jmaa/fin-depo): Library for programmatic
@ -47,8 +74,11 @@ The most relevant libraries for auditing are:
This is the library that reads balances and places market orders.
- [`fin_defs`](https://gitfub.space/Jmaa/fin-defs): Definitions of financial
assets and instruments. Used by `fin_depo`.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/) is used by
`fin_depo` for providing KuCoin support.
- [`secret_loader`](https://gitfub.space/Jmaa/secret_loader): Library for
loading of secrets (passwords, API keys, secret keys, configuration files,
etc.) from standardized locations.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/): Used by
`fin_depo` to provide KuCoin backend.
## Taxation
@ -73,8 +103,8 @@ most mature on the danish market, and does support KuCoin.
* Catch runtime errors when selling
* Show errors to log.
* Stop loop and exit with results, and error indicator.
- [ ] Document configuration
- [ ] Document code auditing
- [X] Document configuration
- [X] Document code auditing
- [X] Parse configuration from json.
- [X] Ensure sell time is included in order details
- [X] Log all trades to CSV file.

View File

@ -1 +1 @@
__version__ = '0.1.2'
__version__ = '0.1.3'

View File

@ -1,12 +1,17 @@
import csv
import dataclasses
from pathlib import Path
import fin_depo
@dataclasses.dataclass(frozen=True)
class CsvFileLogger:
def __init__(self, path: Path):
self.path = path
"""Outputs the given `TradeOrderDetails` to the CSV file at the specified
path.
"""
path: Path
def __call__(self, trade_order: fin_depo.data.TradeOrderDetails):
fieldnames: list[str] = [
@ -21,6 +26,10 @@ class CsvFileLogger:
'raw_order_details',
]
# Ensure that directory exists
self.path.parent.mkdir(parents=True, exist_ok=True)
# Write row in CSV file
with open(self.path, 'a') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writerow(trade_order.__dict__)

View File

@ -1,4 +1,5 @@
"""Handles secrets for the `crypto_seller` system."""
from secret_loader import SecretLoader
__all__ = ['KUCOIN_KEY', 'KUCOIN_SECRET', 'KUCOIN_PASS']

View File

@ -15,12 +15,11 @@ PACKAGE_DESCRIPTION = """
Automatic one-way trades.
This is a wrapper about [`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for
automatically trading one way trades, by using repeated trades
over a period.
The primary motivation is for trading low-volume crypto assets slowly without
affecting the price too much.
This program is a wrapper around
[`fin_depo`](https://gitfub.space/Jmaa/fin-depo/) for automatically trading
one-way trades, by using repeated trades over a period. Can be used to slowly
enter or exit positions, for example low-volume crypto currencies, or as an
automated investment savings system.
Supported sites:
@ -36,23 +35,51 @@ pip install -r requirements.txt
## Usage
Run using from the top directory:
```shell
python -m crypto_seller
```
1. Create configuration file. See below and in `examples/` folder for inspiration.
2. [Create KuCoin API key](https://www.kucoin.com/account/api) with **General**
and **Spot Trading** permissions.
3. Add KuCoin API key secrets (`KUCOIN_KEY`, `KUCOIN_SECRET`, `KUCOIN_PASS`) to
an [`secret_loader` accessible
location](https://gitfub.space/Jmaa/secret_loader#user-content-accessible) .
4. Run script using `python -m crypto_seller --config CONFIG_FILE`.
The script will now automatically sell assets over time. The interval between
sell-offs are randomized to avoid front-running, and the amounts are also
randomized to avoid too consistent behaviour.
randomized to avoid certain attacks (only relevant for smallish intervals of
less than a week).
The log will both be displayed in the shell, and be placed in a log file
`output/log.txt`. Every sell-off will be logged to the `output/trades.csv`
file, with as much information as possible. Keep both of these for tax
purposes, if relevant.
## Configuration
Example configurations can be found in the `examples/` folder.
Configurations are `.json` files, with the following fields:
```json
{
"input_asset": str,
"output_asset": str,
"input_amount_low": float,
"input_amount_high": float,
"interval_minutes_low": int,
"interval_minutes_high": int
}
```
While `input_amount_low` and `input_amount_high` can be identical (and
the same for `interval_minutes_XX`) it is discouraged, to avoid frontrunning attacks.
## Auditing information
As mentioned before, this program is mostly glue code and wrappering around
library functionality. The glue application code allows for running the main
loop of checking balance, selling amount and sleeping until the next iteration,
with some argument and configuration parsing thrown in.
The most relevant libraries for auditing are:
- [`fin_depo`](https://gitfub.space/Jmaa/fin-depo): Library for programmatic
@ -60,8 +87,11 @@ The most relevant libraries for auditing are:
This is the library that reads balances and places market orders.
- [`fin_defs`](https://gitfub.space/Jmaa/fin-defs): Definitions of financial
assets and instruments. Used by `fin_depo`.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/) is used by
`fin_depo` for providing KuCoin support.
- [`secret_loader`](https://gitfub.space/Jmaa/secret_loader): Library for
loading of secrets (passwords, API keys, secret keys, configuration files,
etc.) from standardized locations.
- [`python-kucoin`](https://python-kucoin.readthedocs.io/en/latest/): Used by
`fin_depo` to provide KuCoin backend.
## Taxation
@ -86,8 +116,8 @@ most mature on the danish market, and does support KuCoin.
* Catch runtime errors when selling
* Show errors to log.
* Stop loop and exit with results, and error indicator.
- [ ] Document configuration
- [ ] Document code auditing
- [X] Document configuration
- [X] Document code auditing
- [X] Parse configuration from json.
- [X] Ensure sell time is included in order details
- [X] Log all trades to CSV file.