def sec_tops(secs): lt = {} bb = {} ba = {} for sec in secs: # Last traded price t = Trade.query(Trade.security == sec).order(-Trade.timestamp) t = list(t) if len(t) > 0: lt[sec.key.id()] = t[0].price else: lt[sec.key.id()] = 0 # Best bid t = Order.query(Order.security == sec, Order.buysell == 'Buy', Order.active == True).order(-Order.price) t = list(t) if len(t) > 0: bb[sec.key.id()] = t[0].price else: bb[sec.key.id()] = 0 # Best ask t = Order.query(Order.security == sec, Order.buysell == 'Sell', Order.active == True).order(Order.price) t = list(t) if len(t) > 0: ba[sec.key.id()] = t[0].price else: ba[sec.key.id()] = 0 tops = {'lt':lt, 'bb':bb, 'ba':ba} return tops
def test_example_csv(self): """ Date,Symbol,TimeStamp,QuoteCount,TradeCount,OpenPx,ClosePx,HighPx,LowPx 20130719,LFZ,2013-07-19 08:47:00.000457891,304,24,6387.0000000, 6386.5000000,6387.0000000,6386.0000000 """ load_from_dataset('tests/example.csv') trade = Trade.query().get() self.assertEqual(trade.date, datetime.date(2013, 7, 19)) self.assertEqual(trade.symbol, 'LFZ') self.assertEqual( trade.timestamp, datetime.datetime(2013, 7, 19, 8, 47, 0) ) self.assertEqual(trade.timestamp_nanoseconds, 457891) self.assertEqual(trade.quotecount, 304) self.assertEqual(trade.tradecount, 24) self.assertEqual(trade.openpx, 6387.0000000) self.assertEqual(trade.closepx, 6386.5000000) self.assertEqual(trade.highpx, 6387.0000000) self.assertEqual(trade.lowpx, 6386.0000000)
def scoring(): #go through all predictions, check if should be scored predictions = Prediction.query( ndb.AND(Prediction.outcome != "UNKNOWN", Prediction.resolved == False)).fetch() audit = [] # Get all trades by prediction_id for p in predictions: resolve = p.outcome trades = Trade.query(Trade.prediction_id == p.key).fetch() # Get user id from those trades users = [trade.user_id.get() for trade in trades] for u in users: # check user ledger, map outcome to 1 or 0 based on prediction outcome ledger = [i for i in u.user_ledger if i.prediction_id == p.key.urlsafe()] if resolve == 'CONTRACT_ONE': earned = ledger[0].contract_one else: earned = ledger[0].contract_two u.balance += earned audit.append({'user': u, 'earned': earned}) u.put() p.resolved = True p.put() return audit
def GetTradesForPredictionId(prediction_id): user = users.get_current_user() trades = Trade.query( ndb.AND(Trade.prediction_id == ndb.Key(urlsafe=prediction_id), Trade.user_id == ndb.Key('Profile', user.user_id()))).fetch() return str(trades)
def test_default_dataset_can_be_loaded(self): load_from_dataset() self.assertEqual(Trade.query().count(), 512)
def test_trades_are_deleted(self): load_from_dataset('tests/example.csv') self.assertEqual(Trade.query().count(), 1) delete_all() self.assertEqual(Trade.query().count(), 0)