发布日期:2024-10-09 08:22 点击次数:64 |
这个竣工的交往案例选拔的是Ptrade量化引擎中【盘中交往】板块下的handle_data函数
买入信号是 DIF、DEA均为正,macd金叉,
(日线和分钟级别的盘中交往-----用handle_data,
tick级别的盘中交往----用tick_data八成run_interval)
def initialize(context): g.hold_num = 100def before_trading_start(context, data): g.security_list = get_index_stocks('000300.SS') g.close_data_dict = {} history = get_history(100, frequency='1d', field=["close"], security_list=g.security_list, fq='dypre', include=False, is_dict=True) for stock in g.security_list: close_data = history[stock]['close'] g.close_data_dict[stock] = close_data g.every_value = context.portfolio.portfolio_value/g.hold_numdef handle_data(context, data): for security in g.security_list: close_data = g.close_data_dict[security] macdDIF_data, macdDEA_data, macd_data = get_MACD(close_data, 12, 26, 9) DIF = macdDIF_data[-1] DEA = macdDEA_data[-1] macd_current = macd_data[-1] macd_pre = macd_data[-2] current_price = data[security].price position = context.portfolio.positions # DIF、DEA均为正,macd金叉,买入信号参考 if position[security].amount == 0: if DIF > 0 and DEA > 0 and macd_pre < 0 and macd_current >= 0: if context.portfolio.cash < g.every_value*0.8: continue # 以市单价买入股票,日回测时即是开盘价 order_target_value(security, g.every_value) # 记载此次买入 log.info("Buying %s" % (security)) else: # DIF、DEA均为负,macd死叉,卖出信号参考 if DIF < 0 and DEA < 0 and macd_pre >= 0 and macd_current < 0: # 卖出扫数股票使这只股票的最终抓有量为0 order_target(security, 0) # 记载此次卖出 log.info("Selling %s" % (security))
第四行
g.security_list = get_index_stocks('000300.SS')
用来界说你的选股限制,本例中取沪深300股票
第六行
history = get_history(100, frequency='1d', field=["close"], security_list=g.security_list, fq='dypre', include=False, is_dict=True)
赢得K线数据
其中frequency:代表K线周期,凭据政策中需要的频率取舍不同参数,1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率的数据;选填参数,默许为'1d';入参类型:字符串str
(另外 如若需要赢得分时成交行情数据,昆明app开发不错替换为get_tick_direction)
第八行和13行
三区比:上期红球三区比为2:3:1,红二区走热,红三区走冷,最近10期红球三区比为19:23:18,红二区表现较热。本期预计三区红球平衡,推荐三区比2:2:2。
用for轮回赢得选股池中的价钱数据,并打算MACD值
for security in g.security_list: close_data = g.close_data_dict[security] macdDIF_data, macdDEA_data, macd_data = get_MACD(close_data, 12, 26, 9) DIF = macdDIF_data[-1] DEA = macdDEA_data[-1] macd_current = macd_data[-1] macd_pre = macd_data[-2]
赢顺应前价钱 current_price
赢顺应前的现款 position
之后便是最进军的交往信号
用if函数判断买入信号: DIF、DEA均为正,macd金叉
app开发if position[security].amount == 0: if DIF > 0 and DEA > 0 and macd_pre < 0 and macd_current >= 0: if context.portfolio.cash < g.every_value*0.8: continue
用 order_target_value下单,并用log函数记载这笔交往
# 以市单价买入股票,日回测时即是开盘价 order_target_value(security, g.every_value) # 记载此次买入 log.info("Buying %s" % (security))
终末一段代码是卖出信号
DIF、DEA均为负,macd死叉
else: # if DIF < 0 and DEA < 0 and macd_pre >= 0 and macd_current < 0: # 卖出扫数股票使这只股票的最终抓有量为0 order_target(security, 0) # 记载此次卖出 log.info("Selling %s" % (security))
小白学量化:什么是PTRADE? 2024如何通畅量化实盘交往?
竣工的政策闭环就完成了:数据赢得、交往信号判断、下单交往、订单记载
由于篇幅有限,一些函数的更多使用才智莫得张开商议,
一又友们在使用历程中任何问题不错留言APP开发公司