Skip to content

字段

字段介绍
fno.filter_ls获取on_select里allow传递的数据,list[dict]类型
fno.filter_df获取on_select里allow传递的数据,DataFrame类型

下单相关函数

buy 买入

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

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

查看更多使用详情

python
def on_filter_next(fno: FilterNextOp):
    fno.buy("sz.000001", 1000, 10.5, "买入备注")

sell 卖出

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

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

查看更多使用详情

python
def on_filter_next(fno: FilterNextOp):
    fno.sell("sz.000001", 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的仓位信息

参数参数类型默认说明
symbolstr标的
返回Position仓位对象
查看更多使用详情
python
def on_filter_next(fno: FilterNextOp):
    position = fno.get_position("sz.000001")
    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 判断持仓

是否有持仓 默认检查可用数量。

参数参数类型默认说明
symbolstr标的
is_can_useboolFalse是否检查可用数量
返回bool
查看更多使用详情
python
def on_filter_next(fno: FilterNextOp):
    if fno.exist_position("sz.000001"):
        print("有持仓")
    else:
        print("无持仓")


    if fno.exist_position("sz.000001",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  # 更新时间

重要函数

set_symbol 设置标的结果

  • 设置回测的标的,多次调用只会保留最后一次的
  • 如果设置的值为空[]的,则相当于清空
参数参数类型默认说明
symbollist[str] | str单个标的或者多个标的的list列表,如[sh.600007, sz.000001]
返回
查看更多使用详情
python
def on_filter_select(fso: FilterSelectOp):
    u_log.info("开始筛选", fso.node_date, u_df.lenm(fso.filter_df))
    # 上涨天数
    df_sorted = fso.filter_df.sort_values(by=['上涨天数', '涨幅总和'], ascending=False)
    # 取前20个
    top_20 = df_sorted.head(1)
    # 存储筛选结果
    fso.set_symbol(top_20.symbol.to_list())  

add_symbol 增加标的

  • 在已有的基础上增加标的,与set的区别是set会清除原来的标的,add是在原有的基础上增加标的
参数参数类型默认说明
symbollist[str] | str单个标的或者多个标的的list列表,如[sh.600007, sz.000001]
返回
查看更多使用详情
python
def on_filter_select(fso: FilterSelectOp):
    fso.add_symbol(['sh.600007', 'sz.000001'])  

clear_symbol 清理已经选中的标的

  • 清理已经选中的标的
参数
返回
查看更多使用详情
python
def on_filter_select(fso: FilterSelectOp):
    fso.clear_symbol()