一、布林带策略简介
1、简介
2、计算公式
3、图形
二、布林带策略代码
import jqdata
def initialize(context):
set_benchmark('000002.XSHG')
set_option('use_real_price', True)
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
g.security = '600036.XSHG'
g.M = 0
g.k = 2
def handle_data(context, data):
sr = attribute_history(g.security, g.M)['close']
ma = sr.mean()
up = ma + g.k * sr.std()
down = ma - g.k * sr.std()
p = get_current_data()[g.security].day_open
cash = context.portfolio.available_cash
if p < down and g.security not in context.portfolio.positions:
order_target(g.security, cash)
elif p > down and g.security in context.portfolio.positions:
order_target(g.security, 0)
三、股灾时期测试
1、编译运行
2、输出日志
1 2016-06-15 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888844 security=600036.XSHG mode=OrderTargetAmount: _amount=100000 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-15 09:30:00 error=) 2 3 2016-06-15 09:30:00 - WARNING - 下单检查标的数量: StockOrder(entrust_id=1540888844 security=600036.XSHG mode=OrderTargetAmount: _amount=100000 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-15 09:30:00 error=因为资金有限,下单数量调整为 5797 4 开仓数量必须是100的整数倍,调整为 5700) 5 6 2016-06-15 09:30:00 - INFO - order StockOrder(entrust_id=1540888844 security=600036.XSHG mode=OrderTargetAmount: _amount=100000 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-15 09:30:00 error=因为资金有限,下单数量调整为 5797 7 开仓数量必须是100的整数倍,调整为 5700) trade price: 17.27, amount:5700, commission: 29.53 8 9 2016-06-15 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888844 security=600036.XSHG mode=OrderTargetAmount: _amount=100000 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-15 09:30:00 error=因为资金有限,下单数量调整为 5797 10 开仓数量必须是100的整数倍,调整为 5700) 11 12 2016-06-16 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888845 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-16 09:30:00 error=) 13 14 2016-06-16 09:30:00 - INFO - order StockOrder(entrust_id=1540888845 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-16 09:30:00 error=) trade price: 17.24, amount:5700, commission: 127.75 15 16 2016-06-16 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888845 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-06-16 09:30:00 error=) 17 18 2016-09-12 09:30:00 - WARNING - 开仓数量必须是100的整数倍,调整为 99600: Order(security=600036.XSHG mode=OrderTargetAmount: _amount=99671 style=MarketOrderStyle side=long margin=False entrust_time=None) 19 20 2016-09-12 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888846 security=600036.XSHG mode=OrderTargetAmount: _amount=99671 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-12 09:30:00 error=) 21 22 2016-09-12 09:30:00 - WARNING - 下单检查标的数量: StockOrder(entrust_id=1540888846 security=600036.XSHG mode=OrderTargetAmount: _amount=99671 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-12 09:30:00 error=因为资金有限,下单数量调整为 5488 23 开仓数量必须是100的整数倍,调整为 5400) 24 25 2016-09-12 09:30:00 - INFO - order StockOrder(entrust_id=1540888846 security=600036.XSHG mode=OrderTargetAmount: _amount=99671 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-12 09:30:00 error=因为资金有限,下单数量调整为 5488 26 开仓数量必须是100的整数倍,调整为 5400) trade price: 18.18, amount:5400, commission: 29.45 27 28 2016-09-12 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888846 security=600036.XSHG mode=OrderTargetAmount: _amount=99671 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-12 09:30:00 error=因为资金有限,下单数量调整为 5488 29 开仓数量必须是100的整数倍,调整为 5400) 30 31 2016-09-20 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888847 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-20 09:30:00 error=) 32 33 2016-09-20 09:30:00 - INFO - order StockOrder(entrust_id=1540888847 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-20 09:30:00 error=) trade price: 17.78, amount:5400, commission: 124.82 34 35 2016-09-20 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888847 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-09-20 09:30:00 error=) 36 37 2016-12-20 09:30:00 - WARNING - 开仓数量必须是100的整数倍,调整为 97300: Order(security=600036.XSHG mode=OrderTargetAmount: _amount=97357 style=MarketOrderStyle side=long margin=False entrust_time=None) 38 39 2016-12-20 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888848 security=600036.XSHG mode=OrderTargetAmount: _amount=97357 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-20 09:30:00 error=) 40 41 2016-12-20 09:30:00 - WARNING - 下单检查标的数量: StockOrder(entrust_id=1540888848 security=600036.XSHG mode=OrderTargetAmount: _amount=97357 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-20 09:30:00 error=因为资金有限,下单数量调整为 5411 42 开仓数量必须是100的整数倍,调整为 5400) 43 44 2016-12-20 09:30:00 - INFO - order StockOrder(entrust_id=1540888848 security=600036.XSHG mode=OrderTargetAmount: _amount=97357 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-20 09:30:00 error=因为资金有限,下单数量调整为 5411 45 开仓数量必须是100的整数倍,调整为 5400) trade price: 18.01, amount:5400, commission: 29.18 46 47 2016-12-20 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888848 security=600036.XSHG mode=OrderTargetAmount: _amount=97357 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-20 09:30:00 error=因为资金有限,下单数量调整为 5411 48 开仓数量必须是100的整数倍,调整为 5400) 49 50 2016-12-22 09:30:00 - INFO - 订单已提交: StockOrder(entrust_id=1540888849 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-22 09:30:00 error=) 51 52 2016-12-22 09:30:00 - INFO - order StockOrder(entrust_id=1540888849 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-22 09:30:00 error=) trade price: 17.83, amount:5400, commission: 125.17 53 54 2016-12-22 09:30:00 - INFO - 订单已委托: StockOrder(entrust_id=1540888849 security=600036.XSHG mode=OrderTargetAmount: _amount=0 style=MarketOrderStyle side=long margin=False entrust_time=2016-12-22 09:30:00 error=)