82 lines
2.1 KiB
Python
Executable File
82 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Simple command line client into RPC commands
|
|
Can be used as an alternate to Telegram
|
|
|
|
Should not import anything from freqtrade,
|
|
so it can be used as a standalone script.
|
|
"""
|
|
|
|
import argparse
|
|
import logging
|
|
import time
|
|
from sys import argv
|
|
|
|
import click
|
|
|
|
from requests import get
|
|
from requests.exceptions import ConnectionError
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
)
|
|
logger = logging.getLogger("ft_rest_client")
|
|
|
|
# TODO - use IP and Port from config.json not hardcode
|
|
|
|
COMMANDS_NO_ARGS = ["start",
|
|
"stop",
|
|
]
|
|
COMMANDS_ARGS = ["daily",
|
|
]
|
|
|
|
SERVER_URL = "http://localhost:5002"
|
|
|
|
|
|
def add_arguments():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("command",
|
|
help="Positional argument defining the command to execute.")
|
|
args = parser.parse_args()
|
|
# if len(argv) == 1:
|
|
# print('\nThis script accepts the following arguments')
|
|
# print('- daily (int) - Where int is the number of days to report back. daily 3')
|
|
# print('- start - this will start the trading thread')
|
|
# print('- stop - this will start the trading thread')
|
|
# print('- there will be more....\n')
|
|
return vars(args)
|
|
|
|
|
|
def call_authorized(url):
|
|
try:
|
|
return get(url).json()
|
|
except ConnectionError:
|
|
logger.warning("Connection error")
|
|
|
|
|
|
def call_command_noargs(command):
|
|
logger.info(f"Running command `{command}` at {SERVER_URL}")
|
|
r = call_authorized(f"{SERVER_URL}/{command}")
|
|
logger.info(r)
|
|
|
|
|
|
def main(args):
|
|
|
|
# Call commands without arguments
|
|
if args["command"] in COMMANDS_NO_ARGS:
|
|
call_command_noargs(args["command"])
|
|
|
|
if args["command"] == "daily":
|
|
if str.isnumeric(argv[2]):
|
|
get_url = SERVER_URL + '/daily?timescale=' + argv[2]
|
|
d = get(get_url).json()
|
|
print(d)
|
|
else:
|
|
print("\nThe second argument to daily must be an integer, 1,2,3 etc")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
args = add_arguments()
|
|
main(args)
|