字段
| 字段 | 介绍 |
|---|---|
| so.symbol | 获取执行到当前标的 |
| so.node_date | 获取执行当前函数的日期如 2024-01-05 |
| so.node_date_time | 获取执行当前函数的日期如 2025-02-24 13:36:00 |
| so.node_time | 获取执行当前函数的日期如 13:36:00 |
下单相关函数
buy 买入
买入当前标的,返回订单对象
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| vol | int | 无 | 买入数量 | |
| price | float | 无 | 买入价格 | |
| remark | str | 无 | 备注 | |
| 返回 | Order订单对象 | |||
Details
查看更多使用详情
python
def on_next(no: NextOp):
no.buy(1000, 10.5, "买入备注")sell 卖出
卖出当前标的,返回订单对象
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| vol | int | 无 | 卖出数量 | |
| price | float | 无 | 卖出价格 | |
| remark | str | 无 | 备注 | |
| 返回 | Order订单对象 | |||
Details
查看更多使用详情
python
def on_next(no: NextOp):
no.sell(1000, 10.5, "卖出备注")signal 信号发送
在回测模式中,可以发送信号,统计N天后价格的涨跌幅。
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| price | float | 无 | 信号价格 | |
| signal_name | str | 无 | 该信号命名或者备注 | |
| 返回 | void | |||
Details
查看更多使用详情
python
def on_next(no: NextOp):
no.signal(10.5, "备注")get_asset 获取资产信息
获取资产信息。
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | Asset资产对象 | |||
查看更多使用详情
python
def on_next(no: NextOp):
asset = no.get_asset()
asset.cash # 可用资金
asset.frozen_cash # 【冻结资金】 持仓的时候 冻结的本金
asset.unrealized_profit # 【持仓未结算盈亏】
asset.market_value # 持仓市值
asset.total_asset # 总资产 可用资金 + 冻结资金 + 持仓未结算盈亏get_asset_cash 获取可用金额
获取当前账户的可用资金。
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | float | |||
查看更多使用详情
python
def on_next(no: NextOp):
no.get_asset_cash()get_position 获取仓位
获取当前进来的symbol的仓位信息
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | Position仓位对象 | |||
查看更多使用详情
python
def on_next(no: NextOp):
position = no.get_position()
position.symbol # 代码
position.exchange # 交易所
position.market # 市场
position.vol # 持仓数量,股票以'股'为单位, 债券以'张'为单位
position.can_use_vol # 可用数量, 股票以'股'为单位, 债券以'张'为单位
position.open_price # 平均建仓价格
position.open_amount # 建仓总金额 总金额/总数量=平均建仓价格 持仓市值-建仓总金额=当前持仓利润
position.market_value # 市值
position.profit # 当前持仓利润
position.frozen_vol # 冻结数量
position.yesterday_vol # 昨夜拥有数量
position.occupy_cash # 股票:占用资金vol*open_price/期货:占用保证金
position.pos_his # 老仓手数 期货才有 股票没有值
position.pos_today # 今仓手数 期货才有 股票没有值
# ---------------空头【股票没有值】----------------
position.short_vol # 持仓数量,股票以'股'为单位, 债券以'张'为单位
position.short_can_use_vol # 可用数量, 股票以'股'为单位, 债券以'张'为单位
position.short_open_price # 平均建仓价格
position.short_open_amount # 建仓总金额
position.short_market_value # 市值
position.short_profit # 当前持仓利润
position.short_frozen_vol # 冻结数量
position.short_yesterday_vol # 昨夜拥有数量
position.short_occupy_cash # 股票:占用资金vol*open_price/期货:占用保证金
position.short_pos_his # 老仓手数
position.short_pos_today # 今仓手数
# ---------------多空求和【股票没有值】----------------
position.sum_pos # 净持仓手数, ==0表示无持仓或多空持仓手数相等. <0表示空头持仓大于多头持仓, >0表示多头持仓大于空头持仓
position.sum_profit # 总盈亏 多空profit相加
position.sum_occupy_cash # 总占用资金exist_position 判断持仓
是否有持仓 默认检查可用数量。
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| is_can_use | bool | False | 是否检查可用数量 | |
| 返回 | bool | |||
查看更多使用详情
python
def on_next(no: NextOp):
if no.exist_position():
print("有持仓")
else:
print("无持仓")
if no.exist_position(is_can_use=True):
print("有可用持仓")
else:
print("无可用持仓")get_all_position 所有仓位
获取所有仓位。
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | list[ Position ]仓位对象 | |||
查看更多使用详情
python
def on_next(no: NextOp):
position_list = no.get_all_position()
position = position_list[0] # 获取第一个持仓
position.symbol # 代码
position.exchange # 交易所
position.market # 市场
position.vol # 持仓数量,股票以'股'为单位, 债券以'张'为单位
position.can_use_vol # 可用数量, 股票以'股'为单位, 债券以'张'为单位
position.open_price # 平均建仓价格
position.open_amount # 建仓总金额 总金额/总数量=平均建仓价格 持仓市值-建仓总金额=当前持仓利润
position.market_value # 市值
position.profit # 当前持仓利润
position.frozen_vol # 冻结数量
position.yesterday_vol # 昨夜拥有数量
position.occupy_cash # 股票:占用资金vol*open_price/期货:占用保证金
position.pos_his # 老仓手数 期货才有 股票没有值
position.pos_today # 今仓手数 期货才有 股票没有值
# ---------------空头【股票没有值】----------------
position.short_vol # 持仓数量,股票以'股'为单位, 债券以'张'为单位
position.short_can_use_vol # 可用数量, 股票以'股'为单位, 债券以'张'为单位
position.short_open_price # 平均建仓价格
position.short_open_amount # 建仓总金额
position.short_market_value # 市值
position.short_profit # 当前持仓利润
position.short_frozen_vol # 冻结数量
position.short_yesterday_vol # 昨夜拥有数量
position.short_occupy_cash # 股票:占用资金vol*open_price/期货:占用保证金
position.short_pos_his # 老仓手数
position.short_pos_today # 今仓手数
# ---------------多空求和【股票没有值】----------------
position.sum_pos # 净持仓手数, ==0表示无持仓或多空持仓手数相等. <0表示空头持仓大于多头持仓, >0表示多头持仓大于空头持仓
position.sum_profit # 总盈亏 多空profit相加
position.sum_occupy_cash # 总占用资金get_all_order 当日所有订单
获取订单号对应订单数据
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | list[Order]订单对象 | |||
查看更多使用详情
python
def on_next(no: NextOp):
order_list = no.get_all_order() # 获取订单号对应订单数据
order = order_list[0] # 获取第一个订单
order.symbol # 代码
order.vol # 委托数量
order.price # 委托金额,非限价单的,以实际委托类型price_type为准。
order.order_action # 委托动作
order.order_side # 多空方向 股票只有多
order.price_type # 委托类型 默认限价单
order.is_asynch # 是否异步订单
order.order_remark # 委托备注
order.time_condition # 期货保留字段 时间条件, IOC=立即完成,否则撤销, GFS=本节有效, GFD=当日有效, GTC=撤销前有效, GFA=集合竞价有效
order.order_style_value # 【根据下单函数,程序计算的参数,只做记录展示】 委托风格 所需要的值
order.order_style # 【根据下单函数,程序计算的参数,只做记录展示】 委托风格
order.exchange # 【委托时自动赋值】 交易所
order.market # 【委托时自动赋值】 市场
order.order_sn # 【同步委托时立马有,异步委托时等回调】真实委托订单号
order.order_req # 【异步有值 同步没值】
order.order_cancel_req # 【异步取消有值 同步没值】
order.order_state # 【根据回调实时更新】 委托状态
order.is_finish # 【根据回调实时更新】代表这个订单已经结束
order.status_msg # 【根据回调实时更新】 委托的描述
order.traded_timestamp # 【根据回调实时更新】 成交时间
order.traded_amount # 【根据回调实时更新】 成交金额 【不包含手续费】
order.traded_vol # 【根据回调实时更新】 成交数量
order.traded_price # 【根据回调实时更新】 成交均价
order.traded_charge # 成交【交易手续费】 实盘接口没有提供,模拟回测和回测有, 手续费 = 印花税 + 佣金(固定单笔收费或者/比例收费 如万1)
order.traded_tax_amount # 成交【印花税】
order.traded_cost_amount # 成交【佣金】
order.create_timestamp # 【委托时自动赋值】 提交时间
order.update_timestamp # 更新时间get_order 获取订单
获取订单号对应订单数据
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| order_sn | str | 无 | 订单号 | |
| 返回 | Order订单对象 | |||
查看更多使用详情
python
def on_next(no: NextOp):
order = no.get_order("xxxxxxx") # 获取订单号对应订单数据
order.symbol # 代码
order.vol # 委托数量
order.price # 委托金额,非限价单的,以实际委托类型price_type为准。
order.order_action # 委托动作
order.order_side # 多空方向 股票只有多
order.price_type # 委托类型 默认限价单
order.is_asynch # 是否异步订单
order.order_remark # 委托备注
order.time_condition # 期货保留字段 时间条件, IOC=立即完成,否则撤销, GFS=本节有效, GFD=当日有效, GTC=撤销前有效, GFA=集合竞价有效
order.order_style_value # 【根据下单函数,程序计算的参数,只做记录展示】 委托风格 所需要的值
order.order_style # 【根据下单函数,程序计算的参数,只做记录展示】 委托风格
order.exchange # 【委托时自动赋值】 交易所
order.market # 【委托时自动赋值】 市场
order.order_sn # 【同步委托时立马有,异步委托时等回调】真实委托订单号
order.order_req # 【异步有值 同步没值】
order.order_cancel_req # 【异步取消有值 同步没值】
order.order_state # 【根据回调实时更新】 委托状态
order.is_finish # 【根据回调实时更新】代表这个订单已经结束
order.status_msg # 【根据回调实时更新】 委托的描述
order.traded_timestamp # 【根据回调实时更新】 成交时间
order.traded_amount # 【根据回调实时更新】 成交金额 【不包含手续费】
order.traded_vol # 【根据回调实时更新】 成交数量
order.traded_price # 【根据回调实时更新】 成交均价
order.traded_charge # 成交【交易手续费】 实盘接口没有提供,模拟回测和回测有, 手续费 = 印花税 + 佣金(固定单笔收费或者/比例收费 如万1)
order.traded_tax_amount # 成交【印花税】
order.traded_cost_amount # 成交【佣金】
order.create_timestamp # 【委托时自动赋值】 提交时间
order.update_timestamp # 更新时间获取数据函数
last 倒数第i条数据
获取截止当前时间节点的,倒数第i条数据,返回是单个数据。
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| i | int | 1 | 倒数第i条数据 | |
| 返回 | PanFrame | |||
查看更多使用详情
基本上所有获取数据的地方都有该函数可以调用。比较常见
python
def on_select(so: SelectOp):
# 不传默认是1
so.last()
# 获取倒数第二条数据
so.last(2)last_n 倒数N条数据
获取截止当前时间节点的,倒数N条数据,返回是多条数据。
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| n | int | 无 | N条数据 | |
| 返回 | PanFrame | |||
查看更多使用详情
基本上所有获取数据的地方都有该函数可以调用。比较常见
python
def on_select(so: SelectOp):
# 获取最近5条数据
so.last_n(5)all 全部数据
获取截止当前时间节点的所有数据。
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | PanFrame | |||
查看更多使用详情
基本上所有获取数据的地方都有该函数可以调用。比较常见
python
def on_select(so: SelectOp):
so.all()pan 获取自定义数据
- 通过该方法可以获取自定义的一些数据
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| pan_clz | PanFrame类|str | 无 | 建议传入继承的PanFrame类,这样可以知道字段名 | |
| extend_len | int | 无 | 比如数据是一年才有一条数据。 这里就要传大于365的值。避免取上一条数据的时候。因为时间跨度问题拿不到。 | |
| storage | StorageModule|str | 读配置 | 可以为空,该数据所在的数据源读取,默认是读取本地的配置,这里可以输入例如,disk本地存储,mongo_db等 | |
| storage_args | dict | 读配置 | 上面数据源所对应的配置 | |
| 返回 | PackOp [ PanFrame | DataFrame ] | |||
查看更多使用详情
python
from wanquant_akshare.imp import PfStockAkLgIndicator
def on_select(so: SelectOp):
pf = so.pan(PfStockAkLgIndicator)
# 读取该数据源所提供的pe字段
pf.last().pe其他函数
period 合成K线周期
- 基于当前函数的周期,合成目标周期。需要能被整除
- 例如on_next的周期是m1,可以用该函数合成m5周期
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| to_period | Period | 无 | 传入想合成的周期 | |
| 返回 | PackOp[PanBar] | |||
查看更多使用详情
python
from wanquant_akshare.imp import PfStockAkLgIndicator
#假设当前周期是m1
next_period = Period.M1
def on_next(no: NextOp):
#合成目标周期
m5_op = no.period(Period.M5)
# 最近的5分钟线数据
m5_op.last()
# 取最近一条完整的5分钟线
if m5_op.is_full():
m5_op.last()
else:
m5_op.last(2)kline K线形态判断
- 判断k线形态是否满足
| 参数 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
| kline_list | list[Pattern] | 无 | 想判断的k线形态 | |
| 返回 | bool | |||
查看更多使用详情
python
def on_select(no: NextOp):
so.kline(
#待补充
)today_end 结束今天
调用后当前标的今天剩下的数据将不会再被执行。用于性能优化。
| 参数 | 无 | |||
|---|---|---|---|---|
| 返回 | bool | |||
查看更多使用详情
python
def on_next(no: NextOp):
# 调用后,该标的今天剩下的数据将不会再被执行
no.today_end()
print(no.node_date, no.symbol) # 当前标的一天只会打印一次 不管是分钟周期还是日线周期