量化交易历史:产生与上世纪60年代,兴起于70-80年代,繁荣于90年代。中国因为90年代才开市,所以2010年之后才兴起起来。
量化交易流程
国内使用米筐(RiceQuant)和聚宽(JoinQuant)
为什么不自己实现量化回测框架
使用米筐解决方案可以做什么?
快速入门
创建策略–》ini函数和handle_bar函数的编写–》编译策略-》运行回测查看详细回测信息
设置
策略主体,四个函数
context对象,bar_dict对象
bar_dict['context.pinganyinhang'].close
,就会返回当日的平安银行的收盘价策略配置,主体详解
市单价和限单价
投资组合
案例:金叉死叉判断策略
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import talib
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
# 定义要进行交易判断的股票
context.jiansheyinhang = "601939.XSHG"
# 定义长短周期
context.long = 60
context.short = 20
# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):
# 获取历史交易数据-收盘价
data = history_bars(context.jiansheyinhang, context.long+1, "1d", "close")
# 计算长短均线
context.long_value = talib.SMA(data, context.long)
context.short_value = talib.SMA(data, context.short)
print("长线的值为:\n",context.long_value)
print("断线的值为:\n",context.short_value)
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
print("handle_bar")
# 金叉死叉的判断
# 卖出:昨日:短线大于长线 今日:短线小于长线
# 买入:昨日:短线小于长线 今日:短线大于长线
if context.short_value[-2] > context.long_value[-2] and context.short_value[-1] < context.long_value[-1]:
order_target_percent(context.jiansheyinhang, 0)
if context.short_value[-2] < context.long_value[-2] and context.short_value[-1] > context.long_value[-1]:
order_target_percent(context.jiansheyinhang, 0.25)
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
pass