这是来自ptrade程序中的一个示例量化策略,虽然代码不多,但可以展示一下量化策略的各个部分:
第一部分:导入常用的库。这里仅导入了一个用于计算的numpy库。
import numpy as np
第二部分:初始化函数。这个函数是必须,仅运行一次。本例中的函数的作用为指定的股票池。
def initialize(context):
# 初始化此策略
g.security = ‘600570.SS’
set_universe(g.security)
第三部分:每个周期都要运行的函数。本例中的周期是交易日,即每个交易日都要运行一下这个函数。这个函数的意思为:1、获取历史K线数据中的每日收盘价和成交量(不含当日)。2、获取当日收盘价并与1中的历史收盘价合并。3、生成5日和10日均线。4、交易:如果5日均线大于10日均线,买入;如果5日均线小于10日均线,卖出。
# 当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):
security = g.security
# 获取历史日K线数据
h = get_history(20, ‘1d’, field=[‘close’,’volume’], security_list=security, fq=’dypre’, include=False)
close_data = h[‘close’].values
# 获取最新价
current_price = data[security].close
# 合成最新K线序列
close_data = np.concatenate((close_data,np.array(list([current_price]))),axis=0)
# 获取5日、10日均线
ma5 = get_MA(close_data, 5)
ma10 = get_MA(close_data, 10)
# 得到当前资金余额
cash = context.portfolio.cash
# 如果当前有余额,并且五日均线大于十日均线
if ma5 > ma10:
# 用所有 cash 买入股票
order_value(security, cash)
# 记录这次买入
log.info(“Buying %s” % (security))
# 如果五日均线小于十日均线,并且目前有头寸
elif ma5 < ma10 and get_position(security).amount > 0:
# 全部卖出
order_target(security, 0)
# 记录这次卖出
log.info(“Selling %s” % (security))
第四部分:自定义函数。
# 获取MA函数
def get_MA(close_array, num):
MA = close_array[-num:].mean()
return round(MA,2)

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/75103
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!