mirror of
https://git.wownero.com/lza_menace/totrader.git
synced 2024-08-15 00:33:13 +00:00
add earnings
This commit is contained in:
parent
10f1109161
commit
dd7b6cf15c
2 changed files with 37 additions and 16 deletions
23
db.py
23
db.py
|
@ -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])
|
||||
|
|
30
trade.py
30
trade.py
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue