forked from scrtlabs/catalyst
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
106 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
.bundle | ||
db/*.sqlite3 | ||
log/*.log | ||
*.log | ||
tmp/**/* | ||
tmp/* | ||
doc/api | ||
doc/app | ||
*.swp | ||
*~ | ||
.DS_Store | ||
*.pyc | ||
.tddium | ||
.tddium-deploy-key |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
""" | ||
Small classes to assist with db access, timezone calculations, and so on. | ||
""" | ||
|
||
class DocWrap(): | ||
""" | ||
Provides attribute access style on top of dictionary results from pymongo. | ||
Allows you to access result['field'] as result.field. | ||
Aliases result['_id'] to result.id. | ||
""" | ||
def __init__(self, store=None): | ||
if(store == None): | ||
self.store = {} | ||
else: | ||
self.store = store.copy() | ||
if(self.store.has_key('_id')): | ||
self.store['id'] = self.store['_id'] | ||
del(self.store['_id']) | ||
|
||
def __setitem__(self,key,value): | ||
if(key == '_id'): | ||
self.store['id'] = value | ||
else: | ||
self.store[key] = value | ||
|
||
def __getitem__(self, key): | ||
if self.store.has_key(key): | ||
return self.store[key] | ||
|
||
def __getattr__(self,attrname): | ||
if self.store.has_key(attrname): | ||
return self.store[attrname] | ||
else: | ||
raise AttributeError("No attribute named {name}".format(name=attrname)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
""" | ||
qbt runs backtests using multiple processes and zeromq messaging. | ||
Backtest is the primary process. It maintains both server and client sockets: | ||
zmq sockets for internal processing: | ||
==================================== | ||
- data sink, ZMQ.PULL. Port = port_start + 1 | ||
- backtest will connect to socket, and then spawn one process per datasource, passing the data sink url as a startup arg. Each | ||
datasource process will bind to the socket, and start processing | ||
- backtest is responsible for merging the data events from all sources into a serialized stream and relaying it to the | ||
aggregators, merging agg results, and transmitting consolidated stream to event feed. | ||
- agg source, ZMQ.PUSH. Port = port_start + 2 | ||
- agg sink, ZMQ.PULL. Port = port_start + 3 | ||
- control source, ZMQ.PUB. Port = port_start + 4 | ||
- all child processes must subscribe to this socket. Control commands: | ||
- START -- begin processing | ||
- KILL -- exit immediately | ||
zmq sockets for backtest clients: | ||
================================= | ||
- orders sink, ZMQ.RESP. Port = port_start + 5 | ||
- backtest will connect (can you bind?) to this socket and await orders from the client. Order data will be processed against the streaming datafeed. | ||
- event feed, ZMQ.RESP. Port = port_start + 6 | ||
- backtest will bind to this socket and respond to requests from client for more data. Response data will be the queue of events that | ||
transpired since the last request. | ||
""" | ||
import multiprocessing | ||
import zmq | ||
|
||
class Backtest(object): | ||
|
||
def __init__(self, port_start=10000): | ||
|
||
40B8729046 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.