DogsTailFarmer/martin-binance

View on GitHub
martin_binance/__init__.py

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Free trading system for Binance SPOT API
"""
__author__ = "Jerry Fedorenko"
__copyright__ = "Copyright © 2021 Jerry Fedorenko aka VM"
__license__ = "MIT"
__version__ = "3.0.7"
__maintainer__ = "Jerry Fedorenko"
__contact__ = "https://github.com/DogsTailFarmer"

from pathlib import Path
from shutil import copy

from exchanges_wrapper.definitions import Interval

HEARTBEAT = 2  # Sec
ORDER_TIMEOUT = HEARTBEAT * 15  # Sec
KLINES_INIT = [Interval.ONE_MINUTE, Interval.FIFTY_MINUTES, Interval.ONE_HOUR]
#
WORK_PATH = Path(Path.home(), ".MartinBinance")
CONFIG_PATH = Path(WORK_PATH, "config")
CONFIG_FILE = Path(CONFIG_PATH, "ms_cfg.toml")
DB_FILE = Path(WORK_PATH, "funds_rate.db")
LOG_PATH = Path(WORK_PATH, "log")
LAST_STATE_PATH = Path(WORK_PATH, "last_state")
BACKTEST_PATH = Path(WORK_PATH, "back_test")
TRIAL_PARAMS = Path(WORK_PATH, "trial_params.json")
EQUAL_STR = "================================================================"


def init():
    if CONFIG_FILE.exists():
        print(f"Client config found at {CONFIG_FILE}")
    else:
        print("Can't find client config file! Creating it...")
        for path in [CONFIG_PATH, LOG_PATH, LAST_STATE_PATH]:
            path.mkdir(parents=True, exist_ok=True)

        templates = Path(Path(__file__).parent.absolute(), "templates")

        copy(Path(templates, "ms_cfg.toml"), CONFIG_FILE)

        files_to_copy = [
            "funds_rate.db",
            "trial_params.json",
            "cli_0_BTCUSDT.py",
            "cli_1_BTCUSDT.py",
            "cli_2_TESTBTCTESTUSDT.py",
            "cli_3_BTCUSDT.py"
        ]
        [copy(Path(templates, file_name), Path(WORK_PATH, file_name)) for file_name in files_to_copy]

        print(f"Before the first run, set the parameters in {CONFIG_FILE}")
        raise SystemExit(1)


if __name__ == '__main__':
    init()