>

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)

 

posted @ 2020-11-22 14:59  仕杰资本  阅读(1354)  评论(0)    收藏  举报
>