mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 03:49:12 +08:00
55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
import tornado.auth
|
|
import tornado.httpserver
|
|
import tornado.ioloop
|
|
from tornado.options import define, options
|
|
import tornado.web
|
|
import pymongo
|
|
import bson
|
|
import hashlib
|
|
import base64
|
|
import uuid
|
|
import os
|
|
import logging
|
|
import datetime
|
|
import random
|
|
|
|
import simulator.qbt_server as qbt_server
|
|
|
|
MINUTE_COUNT=390
|
|
|
|
define("user_email", default="qbt@quantopian.com", help="email address for qbt user")
|
|
define("password", default="foobar", help="password for qbt user")
|
|
|
|
def db_main():
|
|
tornado.options.parse_command_line()
|
|
connection, db = qbt_server.connect_db()
|
|
|
|
#create a user for testing
|
|
salt, encrypted_password = qbt_server.encrypt_password(None, options.password)
|
|
|
|
if not db.users.find_one({'email':options.user_email}):
|
|
db.users.insert({'email':options.user_email, 'encrypted_password':encrypted_password, 'salt':salt})
|
|
|
|
#create one mythical company
|
|
if not db.company_info.find_one({'sid':133}):
|
|
db.company_info.insert({'sid':133, "exchange" : "NEW YORK STOCK EXCHANGE", "symbol" : "JHF", "first date" : "01/04/1993", "last date" : "10/01/2008", "sid" : 133, "industry code" : "130A", "company name" : "JACK INC"})
|
|
|
|
#create one mythical company
|
|
if not db.company_info.find_one({'sid':134}):
|
|
db.company_info.insert({'sid':134, "exchange" : "NEW YORK STOCK EXCHANGE", "symbol" : "RCF", "first date" : "01/04/1993", "last date" : "10/01/2008", "sid" : 134, "industry code" : "130A", "company name" : "ROCCO INC"})
|
|
|
|
#create minute equity data collection and populate with a day of random data
|
|
prices = {133:25.0,134:45.0} #sid, initial price.
|
|
if not db.equity.trades.minute.find().count() == MINUTE_COUNT * len(prices):
|
|
db.equity.trades.minute.drop()
|
|
trade_start = datetime.datetime.now()
|
|
minute = datetime.timedelta(minutes=1)
|
|
|
|
for i in range(MINUTE_COUNT):
|
|
for sid,price in prices.iteritems():
|
|
price = price + random.uniform(-0.05,0.05)
|
|
db.equity.trades.minute.insert({'sid':sid, 'dt':trade_start + (minute * i),'price':price, 'volume':random.randrange(100,10000,100)})
|
|
|
|
if __name__ == "__main__":
|
|
db_main()
|