python金融量化交易

量化投资绝对是一个趋势

免费数据回测平台

相关代码

以米筐api为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 #需求: 获得市盈率大于50且小于65, 营业总收入前10的股票
# 每日调仓
def init(context):

# 沪深300
context.hs300_list=index_components("000300.XSHG")

# 在context中保存全局变量
context.s1 = "000001.XSHE"
# 实时打印日志
logger.info("RunInfo: {}".format(context.run_info))

# 开启定时器 按月调仓
# scheduler.run_monthly(getdata,tradingday=1)


def getdata(context, bar_dict):
# 在一号的时候 先执行before_trading 然后执行getdata定时任务方法 最后执行handle_bar
q=query( fundamentals.eod_derivative_indicator.pe_ratio,fundamentals.income_statement.revenue).filter(
fundamentals.eod_derivative_indicator.pe_ratio>50
).filter(
fundamentals.eod_derivative_indicator.pe_ratio>65

).order_by(
fundamentals.income_statement.revenue.desc()

).filter(
# 在指定的股票池当中选择
fundamentals.stockcode.in_(context.hs300_list)

).limit(10)
found=get_fundamentals(q)
# 格式化显示
logger.info(found.T)
# 将第一列股票代码 放候选表中
context.stock_list=found.T.index

# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):
# 选股 获得市盈率大于50且小于65, 营业总收入前10的股票
q=query( fundamentals.eod_derivative_indicator.pe_ratio,fundamentals.income_statement.revenue).filter(
fundamentals.eod_derivative_indicator.pe_ratio>50
).filter(
fundamentals.eod_derivative_indicator.pe_ratio>65

).order_by(
fundamentals.income_statement.revenue.desc()

).limit(10)
found=get_fundamentals(q)
# 格式化显示
logger.info(found.T)
# 将第一列股票代码 放候选表中
context.stock_list=found.T.index


# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
# 先判断仓位是否有股票 如果有,卖出不符合条件的股票
if len(context.portfolio.positions.keys())!=0:
for stock in context.portfolio.positions.keys():
if stock not in context.stock_list:
#如果持有的股票不在新股票池中, 卖出
order_target_percent(stock,0)
# 买入最新股票池中的10只股票 等比买入
for new_stock in context.stock_list:
order_target_percent(new_stock,1/len(context.stock_list))


# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
pass

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%