Bootstrap

PTrade量化策略怎么写?PTradeAPI简介

恒生PTrade量化软件已申请,PTrade的API接口说明简介:

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接口实现。(有需要参考的朋友可私信交流,PTrade量化软件平台免费申请使用)。

initialize(必选)

initialize(context)
使用场景

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

接口说明

该函数用于初始化一些全局变量,是策略运行的唯二必须定义函数之一。

注意事项:

该函数只会在回测和交易启动的时候运行一次

可调用接口
参数

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

返回

None

示例
def initialize(context):
    #g为全局对象
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    order('600570.SS',100)

before_trading_start(可选)

before_trading_start(context, data)
使用场景

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

接口说明

该函数在每天开始交易前被调用一次,用于添加每天都要初始化的信息,如无盘前初始化需求,该函数可以在策略中不做定义。

注意事项:

  1. 在回测中,该函数在每个回测交易日8:30分执行。
  2. 在交易中,该函数在开启交易时立即执行,从隔日开始每天9:10分(默认)执行。
  3. 当在9:10前开启交易时,受行情未更新原因在该函数内调用实时行情接口会导致数据有误。可通过在该函数内sleep至9:10分或调用实时行情接口改为run_daily执行等方式进行避免。
参数

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

data:保留字段暂无数据;

返回

None

示例
def initialize(context):
    #g为全局变量
    g.security = '600570.SS'
    set_universe(g.security)

def before_trading_start(context, data):
    log.info(g.security)

def handle_data(context, data):
    order('600570.SS',100)

未完待续...

;