コード例 #1
0
ファイル: blotter.py プロジェクト: wangtao-hengru/zipline
    def __init__(self,
                 data_frequency,
                 equity_slippage=None,
                 future_slippage=None,
                 equity_commission=None,
                 future_commission=None,
                 cancel_policy=None):
        # these orders are aggregated by asset
        self.open_orders = defaultdict(list)

        # keep a dict of orders by their own id
        self.orders = {}

        # holding orders that have come in since the last event.
        self.new_orders = []
        self.current_dt = None

        self.max_shares = int(1e+11)

        self.slippage_models = {
            Equity: equity_slippage or VolumeShareSlippage(),
            Future: future_slippage or VolumeShareSlippage(),
        }
        self.commission_models = {
            Equity:
            equity_commission or PerShare(),
            Future:
            future_commission
            or PerTrade(cost=DEFAULT_FUTURE_COST_PER_TRADE, ),
        }

        self.data_frequency = data_frequency

        self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
コード例 #2
0
    def __init__(self, data_frequency, equity_slippage=None,
                 future_slippage=None, equity_commission=None,
                 future_commission=None, cancel_policy=None, stock_exchange='NYSE'):
        # these orders are aggregated by asset
        self.open_orders = defaultdict(list)

        # keep a dict of orders by their own id
        self.orders = {}

        # holding orders that have come in since the last event.
        self.new_orders = []
        self.current_dt = None

        self.max_shares = int(1e+11)

        self.slippage_models = {
            Equity: equity_slippage or FixedBasisPointsSlippage(),
            Future: future_slippage or VolatilityVolumeShare(
                volume_limit=DEFAULT_FUTURE_VOLUME_SLIPPAGE_BAR_LIMIT,
            ),
        }
        self.commission_models = {
            Equity: equity_commission or PerShare(),
            Future: future_commission or PerContract(
                cost=DEFAULT_PER_CONTRACT_COST,
                exchange_fee=FUTURE_EXCHANGE_FEES_BY_SYMBOL,
            ),
        }
        self.data_frequency = data_frequency

        self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
コード例 #3
0
    def __init__(self,
                 data_frequency,
                 asset_finder,
                 slippage_func=None,
                 commission=None,
                 cancel_policy=None):
        # these orders are aggregated by sid
        self.open_orders = defaultdict(list)

        # keep a dict of orders by their own id
        self.orders = {}

        # all our legacy order management code works with integer sids.
        # this lets us convert those to assets when needed.  ideally, we'd just
        # revamp all the legacy code to work with assets.
        self.asset_finder = asset_finder

        # holding orders that have come in since the last event.
        self.new_orders = []
        self.current_dt = None

        self.max_shares = int(1e+11)

        self.slippage_func = slippage_func or VolumeShareSlippage()
        self.commission = commission or PerShare()

        self.data_frequency = data_frequency

        self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
コード例 #4
0
    def test_blotter_never_cancel(self):
        blotter = SimulationBlotter(cancel_policy=NeverCancel())

        blotter.order(self.asset_24, 100, MarketOrder())

        self.assertEqual(len(blotter.new_orders), 1)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)

        blotter.execute_cancel_policy(BAR)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)

        blotter.execute_cancel_policy(SESSION_END)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)
コード例 #5
0
 def get_blotter(self):
   slippage_func = VolumeShareSlippage(
     volume_limit=1,
     price_impact=0
   )
   blotter = MyBlotter(
     data_frequency=self.sim_params.data_frequency,
     asset_finder=self.env.asset_finder,
     slippage_func=slippage_func,
     # https://github.com/quantopian/zipline/blob/3350227f44dcf36b6fe3c509dcc35fe512965183/tests/test_blotter.py#L136
     cancel_policy=NeverCancel()
   )
   return blotter
コード例 #6
0
ファイル: test_blotter.py プロジェクト: msarahan/zipline
    def test_blotter_never_cancel(self):
        blotter = Blotter('minute', self.env.asset_finder,
                          cancel_policy=NeverCancel())

        blotter.order(blotter.asset_finder.retrieve_asset(24), 100,
                      MarketOrder())

        self.assertEqual(len(blotter.new_orders), 1)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)

        blotter.execute_cancel_policy(BAR)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)

        blotter.execute_cancel_policy(DAY_END)
        self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)
コード例 #7
0
ファイル: blotter.py プロジェクト: wzhihui/zipline
    def __init__(self,
                 data_frequency,
                 asset_finder,
                 equity_slippage=None,
                 future_slippage=None,
                 equity_commission=None,
                 future_commission=None,
                 cancel_policy=None):
        # these orders are aggregated by sid
        self.open_orders = defaultdict(list)

        # keep a dict of orders by their own id
        self.orders = {}

        # all our legacy order management code works with integer sids.
        # this lets us convert those to assets when needed.  ideally, we'd just
        # revamp all the legacy code to work with assets.
        self.asset_finder = asset_finder

        # holding orders that have come in since the last event.
        self.new_orders = []
        self.current_dt = None

        self.max_shares = int(1e+11)

        self.slippage_models = {
            Equity: equity_slippage or VolumeShareSlippage(),
            Future: future_slippage or VolumeShareSlippage(),
        }
        self.commission_models = {
            Equity:
            equity_commission or PerShare(),
            Future:
            future_commission
            or PerTrade(cost=DEFAULT_FUTURE_COST_PER_TRADE, ),
        }

        self.data_frequency = data_frequency

        self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
コード例 #8
0
ファイル: test_cancel_policy.py プロジェクト: ztwaker/zipline
 def test_never_cancel(self):
     cancel_policy = NeverCancel()
     self.assertFalse(cancel_policy.should_cancel(DAY_END))
     self.assertFalse(cancel_policy.should_cancel(BAR))
コード例 #9
0
 def __init__(self, cancel_policy=None):
     self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
     self.current_dt = None
コード例 #10
0
 def __init__(self, cancel_policy=None):
     self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
     self.current_dt = None
     self.metrics_tracker = None
コード例 #11
0
 def test_never_cancel(self):
     cancel_policy = NeverCancel()
     self.assertFalse(cancel_policy.should_cancel(SESSION_END))
     self.assertFalse(cancel_policy.should_cancel(BAR))
コード例 #12
0
    return bm, tr


def analyze(context=None, results=None):
    ax1 = plt.subplot(211)
    results.portfolio_value.plot(ax=ax1)
    ax1.set_ylabel('Portfolio value (USD)')
    ax2 = plt.subplot(212, sharex=ax1)
    results.AAPL.plot(ax=ax2)
    ax2.set_ylabel('AAPL price (USD)')
    plt.gcf().set_size_inches(18, 8)
    plt.show()


cal = SHSZExchangeCalendar()
cancel_policy = NeverCancel()
blotter = SimulationBlotter(cancel_policy=cancel_policy)
trading_environment = TradingEnvironment(load=load_t,
                                         bm_symbol='^HSI',
                                         exchange_tz='Asia/Shanghai',
                                         trading_calendar=cal)

sim_params = create_simulation_parameters(
    start=pd.to_datetime("2016-01-01 00:00:00").tz_localize("Asia/Shanghai"),
    end=pd.to_datetime("2016-09-21 00:00:00").tz_localize("Asia/Shanghai"),
    data_frequency="daily",
    emission_rate="daily",
    trading_calendar=cal)
algor_obj = TradingAlgorithm(initialize=initialize,
                             handle_data=handle_data,
                             sim_params=sim_params,
コード例 #13
0
ファイル: blotter.py プロジェクト: zzhhoubin/zipline
 def __init__(self, data_frequency, cancel_policy=None):
     self.data_frequency = data_frequency
     self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
     self.current_dt = None
コード例 #14
0
def test_never_cancel(test_input):
    cancel_policy = NeverCancel()
    assert not cancel_policy.should_cancel(test_input)
コード例 #15
0
 def __init__(self, sim_params, cancel_policy=None):
     self.cancel_policy = cancel_policy if cancel_policy else NeverCancel()
     self.current_dt = None
     self.sim_params = sim_params