You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
totrader/totrader/tasks.py

52 lines
1.7 KiB

import logging
from os import getenv
from decimal import Decimal
from dotenv import load_dotenv
from totrader.tradeogre import TradeOgre
from totrader.models import *
class Trader(TradeOgre):
load_dotenv('.env')
satoshi = .00000001
base_currency = getenv('BASE_CURRENCY', 'BTC')
trade_currency = getenv('TRADE_CURRENCY', 'WOW')
trade_pair = f'{base_currency}-{trade_currency}'
trade_amount = float(getenv('TRADE_AMOUNT', 200))
spread_target = float(getenv('SPREAD_TARGET', 4))
amount_multiplier = float(getenv('AMOUNT_MULTIPLIER', 1.2))
active_order_limit = float(getenv('ACTIVE_ORDER_LIMIT', 10))
def store_ticker_data(self):
logging.info(f'[MARKET] Getting market data for trade pair {self.trade_pair}')
res = self.get_ticker(self.trade_pair)
spread_btc = Decimal(res['ask']) - Decimal(res['bid'])
spread_sats = float(spread_btc / Decimal(self.satoshi))
spread_perc = (spread_btc / Decimal(res['ask'])) * 100
res['spread_btc'] = spread_btc
res['spread_sats'] = spread_sats
res['spread_perc'] = spread_perc
logging.debug(res)
t = Ticker(
trade_pair=self.trade_pair,
initial_price=res['initialprice'],
current_price=res['price'],
high_price=res['high'],
low_price=res['low'],
volume=res['volume'],
bid=res['bid'],
ask=res['ask'],
spread_btc=res['spread_btc'],
spread_sats=res['spread_sats'],
spread_perc=res['spread_perc']
)
t.save()
logging.info(f'[MARKET] Stored market data as ID {t.id}')
return True
trader = Trader()