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:
database = db
# class Trade(Model):
# id = AutoField()
# title = CharField()
# text = CharField()
# 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
class Earning(Model):
trade_pair = CharField()
quantity = DoubleField()
date = DateTimeField(default=get_time)
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 random import uniform
from time import sleep
from db import Ticker, Balance, Order
from db import Ticker, Balance, Order, Earning
from tradeogre import TradeOgre
@ -114,6 +114,26 @@ class Trader(TradeOgre):
logging.info(f'Order {order.uuid} no longer active on TradeOgre. Setting inactive.')
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):
logging.info('[MARKET MAKER] Starting market maker')
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()
logging.info(f'[MARKET MAKER] Stored sell order as ID {o.id}')
else:
logging.info(buy)
else:
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('--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('--calculate-earnings', action='store_true', help='Calculate earnings from all trades')
parser.add_argument('--run', action='store_true', help='Run continuously')
args = parser.parse_args()
t = Trader()
orders_counter = 0
earnings_counter = 0
balances_counter = 0
market_maker_counter = 0
@ -190,6 +214,9 @@ if __name__ == '__main__':
if not args.run and args.market_data:
t.store_market_data()
if not args.run and args.calculate_earnings:
t.calculate_earnings()
if args.run:
while True:
try:
@ -202,6 +229,7 @@ if __name__ == '__main__':
if orders_counter == 4:
try:
t.update_orders()
t.calculate_earnings()
logging.info('[ORDERS] Resetting orders counter')
orders_counter = 0
except Exception as e: