コード例 #1
0
ファイル: _lp.py プロジェクト: aoboturov/marketsimulator
 def __init__(self):
     Strategy.__init__(self)
     props = { k : getattr(self, k) for k in self._properties.iterkeys() }
     sp = merge_dict(props, side=Side.Sell)
     bp = merge_dict(props, side=Side.Buy) 
     self._sell = LiquidityProviderSide(**sp)
     self._buy = LiquidityProviderSide(**bp)
コード例 #2
0
 def __init__(self):                
     """ Runs generic two side strategy 
     trader - single asset single market trader
     orderFactoryT - function to create orders: side -> *orderParams -> Order
     eventGen - event generator to be listened - we'll use its advise method to subscribe to
     orderFunc - function to calculate order parameters: Trader -> None | (side,*orderParams) 
     """        
     Strategy.__init__(self)
     self._wakeUp = bind.Method(self, '_wakeUp_impl')
     event.subscribe(self._eventGen, self._wakeUp, self)
コード例 #3
0
    def __init__(self):
        Strategy.__init__(self)
        self._estimator_strategy = self.estimator(self.strategy) # TODO: dependency tracking
        self._estimator = trader.SingleAsset(orderbook.OfTrader(trader.ParentProxy()),
                                             self._estimator_strategy)

        self._strategy = self.strategy
        self._efficiency = self.efficiency(self._estimator) # TODO: dependency tracking
        
        event.subscribe(self._efficiency, bind.Method(self, '_wakeUp_impl'), self)
コード例 #4
0
 def __init__(self):                
     """ Initializes generic one side trader and makes it working
     orderBook - book to place orders in
     side - side of orders to create
     orderFactoryT - function to create orders: side -> *orderParams -> Order
     eventGen - event generator to be listened - we'll use its advise method to subscribe to
     orderFunc - function to calculate order parameters: Trader -> *orderParams 
     """     
     Strategy.__init__(self)  
     self._wakeUp = bind.Method(self, '_wakeUp_impl')
     event.subscribe(self._eventGen, self._wakeUp, self) 
コード例 #5
0
ファイル: _generic.py プロジェクト: aoboturov/marketsimulator
 def __init__(self):                
     """ Runs generic two side strategy 
     trader - single asset single market trader
     params.eventGen -- event that initiates strategy work
     params.sideFunc -- function '() -> Side option' that calculates side of order to create
     params.volumeFunc -- function '() -> Volume' calculating volume of order to create
     params.orderFactory -- function 'Side -> Volume -> IOrder' instantiating orders
     """        
     Strategy.__init__(self)
     self._wakeUp = bind.Method(self, '_wakeUp_impl')
     event.subscribe(self.eventGen, self._wakeUp, self)
コード例 #6
0
    def __init__(self):
        
        self._chooseTheBest = bind.Method(self, '_chooseTheBest_impl')
        Strategy.__init__(self) # TODO: eventGen should be a parameter
        self._eventGen = scheduler.Timer(mathutils.constant(1))

        def _createInstance(sp):
            estimator_strategy = self.estimator(sp)
            estimator = trader.SingleAsset(orderbook.OfTrader(trader.ParentProxy()),estimator_strategy)
            efficiency = self.efficiency(estimator)
            
            return (sp, estimator, estimator_strategy, efficiency)
        
        self._strategies = [_createInstance(sp) for sp in self.strategies]
        
        self._chooseTheBest = bind.Method(self, '_chooseTheBest_impl')
        self._current = None
        event.subscribe(self._eventGen, self._chooseTheBest, self)
コード例 #7
0
    def __init__(self):

        Strategy.__init__(self)  # TODO: eventGen should be a parameter
        self._eventGen = scheduler.Timer(mathutils.constant(1))

        def _createInstance(sp):
            estimator_strategy = self.estimator(sp)
            estimator = trader.SingleAsset(orderbook.OfTrader(trader.ParentProxy()), estimator_strategy)
            efficiency = self.efficiency(estimator)

            return (sp, estimator, estimator_strategy, efficiency)

        self._strategies = [_createInstance(sp) for sp in self.strategies]

        self._choose = bind.Method(self, "_choose_impl")
        self._strategyWeights = self.weight
        self._current = None
        # what is the data source for weight update?
        event.subscribe(self._eventGen, self._choose, self)

        # suspend all strategies
        for (s, _, _, _) in self._strategies:
            s.suspend(True)
コード例 #8
0
 def __init__(self):
     Strategy.__init__(self)
     for s in self.strategies:
         event.subscribe(s.on_order_created, _(self)._send, self)
コード例 #9
0
 def suspend(self, s=True):
     Strategy.suspend(self, s)
     self._strategy.suspend(s)
     self._estimator_strategy.suspend(s)
コード例 #10
0
ファイル: _lp.py プロジェクト: aoboturov/marketsimulator
 def suspended(self):
     assert self._sell.suspended == self._suspended
     assert self._buy.suspended == self._suspended
     return Strategy.suspended(self)
コード例 #11
0
ファイル: _lp.py プロジェクト: aoboturov/marketsimulator
 def suspend(self, s):
     Strategy.suspend(self, s)
     self._sell.suspend(s)
     self._buy.suspend(s)
コード例 #12
0
 def suspend(self, s=True):
     Strategy.suspend(self, s)
     if self._current:
         self._current.suspend(s)
     for (_, _, estimator_strategy, _) in self._strategies:
         estimator_strategy.suspend(s)
コード例 #13
0
ファイル: _array.py プロジェクト: aoboturov/marketsimulator
 def suspended(self):
     for s in self.strategies:
         assert s.suspended == self._suspended
     return Strategy.suspended(self)
コード例 #14
0
ファイル: _array.py プロジェクト: aoboturov/marketsimulator
 def suspend(self, flag):
     Strategy.suspend(self, flag)
     for s in self.strategies:
         s.suspend(flag)
コード例 #15
0
 def __init__(self):                
     Strategy.__init__(self)
     event.subscribe(self.eventGen, _(self)._wakeUp, self)