예제 #1
0
파일: scripts.py 프로젝트: tonyin/chifx
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)
예제 #3
0
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
예제 #4
0
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)