JoinQuant详解
#常用函数详解
log 日志,
info() 信息 ,
warning() 警告,
set_level 设置级别
log.info('hell world')
日志 level (类型级别) 必须是‘order’,'history','strategy'自己在策略中的log log.set_level('order','warning') #只获取订单和警告信息
# 按月运行run_monthly(func, monthday, time='9:30', reference_security, force=False)
run_monthly(monthly, 1, '09:40') # 指定每月第一个交易日, 在开盘后十分钟执行,montyly函数
# 按周运行 run_weekly(func, weekday, time='9:30', reference_security, force=False)
# 每天内何时运行(没有force属性) run_daily(func, time='9:30', reference_security)
- 运行一个简单策略
# 导入函数库 from jqdata import * # 初始化函数,设定基准等等 def initialize(context): # 设置基准,000300.XSHG以沪深300为基准范围 set_benchmark('000300.XSHG') # 设置复权,选择用户真实价格True set_option('use_real_price',True) # 设置订单cost(成本),close_tax印花税千1,open_commission(买入佣金)万3,close_commission卖出万3,最小佣金5元,stock股票 set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003,min_commission=5), type='stock') # 用户自定义对象g, security股票代码变量, stocks股票集 # get_index_stocks获取股票集沪深300份股,赋值给security对象 g.security = get_index_stocks('000300.XSHG') # handle句柄用来表示对象,该函数每个单位时间会调用一次,如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。 def handle_data(context,data): # portfolio证券组合,total_value:(买入金额+卖出金额总计total) # total_value总金额 t_value = context.portfolio.total_value # 循环遍历获取的沪深300股票代码分别放入变量stock for stock in g.security: # attribute(属性)history(历史) # attribute_history(security股票代码,数量count=1,df=False不返回DataFram数据加快回测速度) # p拿到股票前一天的收盘价 p = attribute_history(stock,count=1,df=False)['close'][0] # amount金额 = 所有文件.证券组合.positions仓位 # total_amount持仓总数量 amount = context.portfolio.positions[stock].total_amount # avg平均价 # avg_cost平均成本 cost = context.portfolio.positions[stock].avg_cost # 如果前一天收盘价小于4,且股票持仓数==o # 建仓标准:低价买入 if p < 4 and amount == 0: #target目标对象,order_target_value以值为目标下单 order_target_value(stock,0.1*t_value) # 止赢条件:当股票持仓大于0,收盘价大于成本的1.25倍 elif amount > 0 and p >= cost * 1.25: # 订单目标为0,表示卖出 Order_target(stock,0) # 止损条件: elif amount > 0 and p <= cost * 0.9: Order_target(stock,0)

浙公网安备 33010602011771号