def handle_data(self, data): from zipline.api import ( order_percent, order_target, order_target_percent, order_target_value, order_value, ) for style in [ MarketOrder(), LimitOrder(10), StopOrder(10), StopLimitOrder(10, 10) ]: with assert_raises(UnsupportedOrderParameters): order(self.asset, 10, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order(self.asset, 10, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_value(self.asset, 300, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_value(self.asset, 300, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_percent(self.asset, .1, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_percent(self.asset, .1, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target(self.asset, 100, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target(self.asset, 100, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_value(self.asset, 100, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_value(self.asset, 100, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_percent(self.asset, .2, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_percent(self.asset, .2, stop_price=10, style=style)
def handle_data(self, data): from zipline.api import ( order_percent, order_target, order_target_percent, order_target_value, order_value, ) for style in [MarketOrder(), LimitOrder(10), StopOrder(10), StopLimitOrder(10, 10)]: with assert_raises(UnsupportedOrderParameters): order(self.asset, 10, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order(self.asset, 10, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_value(self.asset, 300, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_value(self.asset, 300, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_percent(self.asset, .1, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_percent(self.asset, .1, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target(self.asset, 100, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target(self.asset, 100, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_value(self.asset, 100, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_value(self.asset, 100, stop_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_percent(self.asset, .2, limit_price=10, style=style) with assert_raises(UnsupportedOrderParameters): order_target_percent(self.asset, .2, stop_price=10, style=style)
def short_down_gaps(context, data): """ Short the stocks that gapped down. """ for asset in context.assets_to_short: # Sell with market order algo.order_value( asset, context.target_value_per_position, style=MarketOrder( ) # for IBKR, specify exchange (e.g. exchange="SMART") )
def rebalance(context, data): # Pipeline data will be a dataframe with boolean columns named 'longs' and # 'shorts'. pipeline_data = context.pipeline_data all_assets = pipeline_data.index record(universe_size=len(all_assets)) # Build a 2x-leveraged, equal-weight, long-short portfolio. cash = context.portfolio.cash / len(all_assets) if cash < 0: return for asset in all_assets: close = data.current(asset, "close") uplimit = data.current(asset, "up_limit") / 1000 if (close >= uplimit): print(asset, "价格限制", 'close', close, 'uplimit', uplimit) else: order_value(asset, cash) open_orders = get_open_orders() # If there are any open orders. if open_orders: # open_orders is a dictionary keyed by sid, with values that are lists of orders. Iterate over the dictionary for security, orders in open_orders.items(): # Iterate over the orders and log the total open amount # for each order. for oo in orders: message = 'Open order for {amount} shares in {stock}' message = message.format(amount=oo.amount, stock=security) log.info(message) # Remove any assets that should no longer be in our portfolio. positions = context.portfolio.positions for asset in viewkeys(positions) - set(all_assets): # This will fail if the asset was removed from our portfolio because it # was delisted. if data.can_trade(asset): order(asset, -positions[asset].amount)
def handle_data(context, data): # 获取股票的收盘价 close_data = history(12,'1d','close') # 取得过去五天的平均价格 ma5 = close_data[-6:-2].mean() # 取得过去10天的平均价格 ma10 = close_data[-11:-2].mean() # 取得当前的现金 print get_datetime(),ma5,ma10 cash = context.portfolio.cash #print ma5[sid(symbol(context.security))],ma10[sid(stock)],cash,symbol(context.security) #如果当前有余额,并且五日均线大于十日均线 if ma5[sid(symbol(context.security))] > ma10[sid(symbol(context.security))]: order_value(symbol(context.security), cash) # 如果五日均线小于十日均线,并且目前有头寸 elif ma5[sid(symbol(context.security))] < ma10[sid(symbol(context.security))]: # 全部卖出 order_target(symbol(context.security), 0)