简单学量化一个简单的量化策略示例

这是来自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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注