ptrade从零开始学习量化交易第8期【ptrade策略引擎简介之handle_data(必选)】

策略引擎简介

更加详细的调用方法,后续会慢慢整理。

也可找寻博主历史文章,搜索关键词使用方案,比如本文涉及函数handle_data!

感谢关注,咨询开通量化回测与获取实盘权限,欢迎和博主联系!

ptrade业务流程框架

ptrade量化引擎以事件触发为基础,通过初始化事件(initialize)、盘前事件(before_trading_start)、盘中事件(handle_data)、盘后事件(after_trading_end)来完成每个交易日的策略任务。

initialize和handle_data是一个允许运行策略的最基础结构,也就是必选项,before_trading_start和after_trading_end是可以按需运行的。

handle_data仅满足日线和分钟级别的盘中处理,tick级别的盘中处理则需要通过tick_data或者run_interval来实现。

ptrade还支持委托主推事件(on_order_response)、交易主推事件(on_trade_response),可以通过委托和成交的信息来处理策略逻辑,是tick级的一个补充。

除了以上的一些事件以外,ptrade也支持通过定时任务来运行策略逻辑,可以通过run_daily接口实现。

handle_data(必选)

handle_data(context, data)
使用场景

该函数仅在回测、交易模块可用

接口说明

该函数在交易时间内按指定的周期频率运行,是用于处理策略交易的主要模块,根据策略保存时的周期参数分为每分钟运行和每天运行,是策略运行的唯二必须定义函数之一。

注意事项:

  1. 该函数每个单位周期执行一次
  2. 如果是日线级别策略,每天执行一次。股票回测场景下,在15:00执行;股票交易场景下,执行时间为券商实际配置时间。
  3. 如果是分钟级别策略,每分钟执行一次,股票回测场景下,执行时间为9:31 -- 15:00,股票交易场景下,执行时间为9:30 -- 14:59。
  4. 回测与交易中,handle_data函数不会在非交易日触发(如回测或交易起始日期为2015年12月21日,则策略在2016年1月1日-3日时,handle_data不会运行,4日继续运行)。
可调用接口

get_trading_day(回测/交易)    get_all_trades_days(研究/回测/交易)     get_trade_days(研究/回测/交易)    

get_history(回测/交易)     get_price(研究/回测/交易)     get_individual_entrust(交易)    

get_individual_transaction(交易)    get_gear_price(交易)     get_stock_name(研究/回测/交易)    

get_stock_status(研究/回测/交易)     get_stock_exrights(研究/回测/交易)     get_stock_blocks(研究/回测/交易)    

get_index_stocks(研究/回测/交易)     get_industry_stocks(研究/回测/交易)     get_fundamentals(研究/回测/交易)    

get_Ashares(研究/回测/交易)     get_snapshot(交易)     convert_position_from_csv(回测)    

order(回测/交易)     order_target(回测/交易)     order_value(回测/交易)    

order_target_value(回测/交易)     order_market(交易)     ipo_stocks_order(交易)    

after_trading_order(交易)     after_trading_cancel_order(交易)     etf_basket_order(交易)    

etf_purchase_redemption(交易)     cancel_order(回测/交易)     get_stock_info(研究/回测/交易)    

get_order(回测/交易)     get_orders(回测/交易)     get_open_orders(回测/交易)    

get_trades(回测/交易)     get_position(回测/交易)     get_positions(回测/交易)    

get_etf_info(交易)     get_etf_stock_info(交易)     get_etf_stock_list(交易)    

get_etf_list(交易)     get_all_orders(交易)     cancel_order_ex(交易)    

debt_to_stock_order(交易)     get_user_name(回测/交易)     get_research_path(回测/交易)    get_marginsec_stocks(交易)     get_margincash_stocks(交易)     debt_to_stock_order(交易)    

get_margin_contractreal(交易)     get_margin_contract(交易)     marginsec_direct_refund(交易)    

get_margin_entrans_amount(交易)     get_margin_contract(交易)     margincash_direct_refund(交易)    

marginsec_open(交易)     marginsec_close(交易)     margincash_open(交易)    

margincash_close(交易)     margin_trade(交易)     get_marginsec_close_amount(交易)    

get_marginsec_open_amount(交易)     get_margincash_close_amount(交易)     get_margincash_open_amount(交易)    

get_cb_list(交易)     get_tick_direction(交易)     get_sort_msg(交易)    

get_trade_name(交易)     get_margin_rate(回测(期货))     get_instruments(回测/交易(期货)   buy_open(回测/交易(期货)     sell_close(回测/交易(期货)     sell_close(回测/交易(期货)    

buy_close(回测/交易(期货)     get_MACD(回测/交易)     get_KDJ(回测/交易)    

get_RSI(回测/交易)     get_CCI(回测/交易)     create_dir(回测/交易)    

get_opt_objects(研究/回测/交易(期权))     get_opt_last_dates(研究/回测/交易(期权))     get_opt_contracts(研究/回测/交易(期权))    

get_contract_info(研究/回测/交易(期权))     set_parameters(回测/交易)     get_covered_lock_amount(交易(期权))    

get_covered_unlock_amount(交易(期权))     buy_open(交易(期权))     sell_close(交易(期权)) sell_open(交易(期权))     buy_close(交易(期权))     open_prepared(交易(期权))    

close_prepared(交易(期权))     option_exercise(交易(期权))     option_covered_lock(交易(期权))    

option_covered_unlock(交易(期权))     get_cb_info(研究/交易)     get_enslo_security_info(交易)    

get_ipo_stocks(交易)     check_limit(回测/研究/交易)    

参数

context: Context对象,存放有当前的账户及持仓信息;

data:一个字典(dict),key是标的代码,value是当时的SecurityUnitData对象,存放当前周期(日线策略,则是当天;分钟策略,则是这一分钟)的数据;

注意:为了加速,data中的数据只包含股票池中所订阅标的的信息,可使用data[security]的方式来获取当前周期对应的标的信息;

返回

None

示例

def initialize(context): #g为全局变量 g.security = '600570.SS' set_universe(g.security) def handle_data(context, data): order('600570.SS',100)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值