Skip to content

字段

字段介绍
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 买入

买入当前标的,返回订单对象

参数参数类型默认说明
volint买入数量
pricefloat买入价格
remarkstr备注
返回Order订单对象
Details

查看更多使用详情

python
def on_next(no: NextOp):
    no.buy(1000, 10.5, "买入备注")

sell 卖出

卖出当前标的,返回订单对象

参数参数类型默认说明
volint卖出数量
pricefloat卖出价格
remarkstr备注
返回Order订单对象
Details

查看更多使用详情

python
def on_next(no: NextOp):
    no.sell(1000, 10.5, "卖出备注")

signal 信号发送

在回测模式中,可以发送信号,统计N天后价格的涨跌幅。

参数参数类型默认说明
pricefloat信号价格
signal_namestr该信号命名或者备注
返回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_useboolFalse是否检查可用数量
返回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_snstr订单号
返回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条数据,返回是单个数据。

参数参数类型默认说明
iint1倒数第i条数据
返回PanFrame
查看更多使用详情

基本上所有获取数据的地方都有该函数可以调用。比较常见

python
def on_select(so: SelectOp):
    # 不传默认是1
    so.last()
    # 获取倒数第二条数据
    so.last(2)

last_n 倒数N条数据

获取截止当前时间节点的,倒数N条数据,返回是多条数据。

参数参数类型默认说明
nintN条数据
返回PanFrame
查看更多使用详情

基本上所有获取数据的地方都有该函数可以调用。比较常见

python

def on_select(so: SelectOp):
    # 获取最近5条数据
    so.last_n(5)

all 全部数据

获取截止当前时间节点的所有数据。

参数
返回PanFrame
查看更多使用详情

基本上所有获取数据的地方都有该函数可以调用。比较常见

python
def on_select(so: SelectOp):
    so.all()

pan 获取自定义数据

  • 通过该方法可以获取自定义的一些数据
参数参数类型默认说明
pan_clzPanFrame类|str建议传入继承的PanFrame类,这样可以知道字段名
extend_lenint比如数据是一年才有一条数据。 这里就要传大于365的值。避免取上一条数据的时候。因为时间跨度问题拿不到。
storageStorageModule|str读配置可以为空,该数据所在的数据源读取,默认是读取本地的配置,这里可以输入例如,disk本地存储,mongo_db等
storage_argsdict读配置上面数据源所对应的配置
返回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_periodPeriod传入想合成的周期
返回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_listlist[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)  # 当前标的一天只会打印一次 不管是分钟周期还是日线周期