add earnings

This commit is contained in:
lza_menace 2020-10-02 19:42:21 -07:00
parent 10f1109161
commit dd7b6cf15c
2 changed files with 37 additions and 16 deletions

23
db.py
View File

@ -60,19 +60,12 @@ class Order(Model):
class Meta: class Meta:
database = db database = db
# class Trade(Model): class Earning(Model):
# id = AutoField() trade_pair = CharField()
# title = CharField() quantity = DoubleField()
# text = CharField() date = DateTimeField(default=get_time)
# submitter = CharField()
# image_name = CharField()
# readonly = BooleanField(default=False)
# hidden = BooleanField(default=False)
# account_index = DoubleField()
# address_index = DoubleField()
# timestamp = DateTimeField(default=datetime.now)
#
# class Meta:
# database = db
db.create_tables([Ticker, Balance, Order]) class Meta:
database = db
db.create_tables([Ticker, Balance, Order, Earning])

View File

@ -8,7 +8,7 @@ from datetime import datetime
from decimal import Decimal from decimal import Decimal
from random import uniform from random import uniform
from time import sleep from time import sleep
from db import Ticker, Balance, Order from db import Ticker, Balance, Order, Earning
from tradeogre import TradeOgre from tradeogre import TradeOgre
@ -114,6 +114,26 @@ class Trader(TradeOgre):
logging.info(f'Order {order.uuid} no longer active on TradeOgre. Setting inactive.') logging.info(f'Order {order.uuid} no longer active on TradeOgre. Setting inactive.')
sleep(3) sleep(3)
def calculate_earnings(self):
orders = {'buy': [], 'sell': []}
completed_orders = Order.select().where(Order.cancelled==False, Order.active==False)
for order in completed_orders:
if order.buy:
type = 'buy'
else:
type = 'sell'
orders[type].append(Decimal(order.price))
orders['total_sell'] = sum(orders['sell'])
orders['total_buy'] = sum(orders['buy'])
earnings = orders['total_sell'] - orders['total_buy']
e = Earning(
trade_pair=self.trade_pair,
quantity=earnings
)
e.save()
def start_market_maker(self): def start_market_maker(self):
logging.info('[MARKET MAKER] Starting market maker') logging.info('[MARKET MAKER] Starting market maker')
latest = Ticker.select().where(Ticker.trade_pair==self.trade_pair).order_by(Ticker.date.desc()).get() latest = Ticker.select().where(Ticker.trade_pair==self.trade_pair).order_by(Ticker.date.desc()).get()
@ -159,6 +179,8 @@ class Trader(TradeOgre):
) )
o.save() o.save()
logging.info(f'[MARKET MAKER] Stored sell order as ID {o.id}') logging.info(f'[MARKET MAKER] Stored sell order as ID {o.id}')
else:
logging.info(buy)
else: else:
logging.info(f'[MARKET MAKER] Not enough bid-ask spread ({latest.spread_sats} sats). Skipping market maker.') logging.info(f'[MARKET MAKER] Not enough bid-ask spread ({latest.spread_sats} sats). Skipping market maker.')
@ -169,11 +191,13 @@ if __name__ == '__main__':
parser.add_argument('--balances', action='store_true', help='Update coin balances of both base and currency') parser.add_argument('--balances', action='store_true', help='Update coin balances of both base and currency')
parser.add_argument('--update-orders', action='store_true', help='Update status of orders') parser.add_argument('--update-orders', action='store_true', help='Update status of orders')
parser.add_argument('--market-data', action='store_true', help='Update market data') parser.add_argument('--market-data', action='store_true', help='Update market data')
parser.add_argument('--calculate-earnings', action='store_true', help='Calculate earnings from all trades')
parser.add_argument('--run', action='store_true', help='Run continuously') parser.add_argument('--run', action='store_true', help='Run continuously')
args = parser.parse_args() args = parser.parse_args()
t = Trader() t = Trader()
orders_counter = 0 orders_counter = 0
earnings_counter = 0
balances_counter = 0 balances_counter = 0
market_maker_counter = 0 market_maker_counter = 0
@ -190,6 +214,9 @@ if __name__ == '__main__':
if not args.run and args.market_data: if not args.run and args.market_data:
t.store_market_data() t.store_market_data()
if not args.run and args.calculate_earnings:
t.calculate_earnings()
if args.run: if args.run:
while True: while True:
try: try:
@ -202,6 +229,7 @@ if __name__ == '__main__':
if orders_counter == 4: if orders_counter == 4:
try: try:
t.update_orders() t.update_orders()
t.calculate_earnings()
logging.info('[ORDERS] Resetting orders counter') logging.info('[ORDERS] Resetting orders counter')
orders_counter = 0 orders_counter = 0
except Exception as e: except Exception as e: