问答交流

m1怎么提取啊,想看一下提取出来的表格

由yzc18811006016创建,最终由yzc18811006016 被浏览 7 用户

from bigmodule import M

# <aistudiograph>

# @param(id="m2", name="initialize")
# 交易引擎:初始化函数,只执行一次
def m2_initialize_bigquant_run(context):
    from bigtrader.finance.commission import PerOrder

    # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数
    context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
    # 持仓天数
    context.holding_days = 20

# @param(id="m2", name="before_trading_start")
# 交易引擎:每个单位时间开盘前调用一次。
def m2_before_trading_start_bigquant_run(context, data):
    # 盘前处理,订阅行情等
    pass

# @param(id="m2", name="handle_tick")
# 交易引擎:tick数据处理函数,每个tick执行一次
def m2_handle_tick_bigquant_run(context, tick):
    pass

# @param(id="m2", name="handle_data")
def m2_handle_data_bigquant_run(context, data):
    
    import pandas as pd

    # 从传入的数据 context.data 中读取今天的信号数据,返回一个df
    # 从 context.data 中筛选出日期为当前日期(data.current_dt)的数据,并将结果存储在变量 today_df 中
    # 具体来说,它将当前日期格式化为 "YYYY-MM-DD" 的字符串,并与数据中的日期进行比较。
    today_df = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
    
    if len(today_df) == 0:
        return

    # 卖出
    # set(...):将提取出的键转换为一个集合(set),集合中的元素是唯一的,这样可以确保每个交易品种只被列出一次。
    # context.get_account_positions():这个方法会返回当前账户中的所有持仓信息,通常是一个字典(或类似结构)
    # 其中每个键(key)代表一个交易品种(instrument),而对应的值(value)则包含该品种的详细持仓信息。
    for instrument in set(context.get_account_positions().keys()):
        #检查当前日期(data.current_dt)与当前交易品种的最后成交日期(context.get_position(instrument).last_sale_date)之间的天数差。
        # 如果这个天数差大于或等于设定的持有天数(context.holding_days),则进入下一步。
        if (data.current_dt - context.get_position(instrument).last_sale_date).days >= context.holding_days:
            # context.order_target_percent(...):这是一个方法,用于设置特定交易品种(instrument)的目标持仓比例。
            # instrument:这是要操作的特定交易品种的标识符。
            # 0:这个参数表示将该交易品种的目标持仓比例设置为 0
            context.order_target_percent(instrument, 0)
        

        
    # 买入
    # .iterrows():这是 Pandas 提供的一个方法,用于逐行遍历数据框。
    # 它会返回一个生成器,每次生成一个元组,其中第一个元素是行的索引,第二个元素是该行的数据(以 Series 的形式表示)
    # 第一次迭代:i = 0,x 对应第一行数据(AAPL,50)。
    for i, x in today_df.iterrows():
        # 调用:context.order_target_percent('AAPL', 50.0)。
        context.order_target_percent(x.instrument, float(x.position))


# @param(id="m2", name="handle_trade")
# 交易引擎:成交回报处理函数,每个成交发生时执行一次
def m2_handle_trade_bigquant_run(context, trade):
    pass

# @param(id="m2", name="handle_order")
# 交易引擎:委托回报处理函数,每个委托变化时执行一次
def m2_handle_order_bigquant_run(context, order):
    pass

# @param(id="m2", name="after_trading")
# 交易引擎:盘后处理函数,每日盘后执行一次
def m2_after_trading_bigquant_run(context, data):
    pass


# 函数定义完成


# @module(position="-533,-891", comment="""""", comment_collapsed=True)
m1 = M.cn_stock_basic_selector.v7(
    exchanges=["""上交所""", """深交所"""],
    list_sectors=["""主板"""],
    indexes=["""中证500""", """上证指数""", """创业板指""", """深证成指""", """北证50""", """上证50""", """科创50""", """沪深300""", """中证1000""", """中证100""", """深证100"""],
    st_statuses=["""正常"""],
    margin_tradings=["""两融标的""", """非两融标的"""],
    sw2021_industries=["""农林牧渔""", """采掘""", """基础化工""", """钢铁""", """有色金属""", """建筑建材""", """机械设备""", """电子""", """汽车""", """交运设备""", """信息设备""", """家用电器""", """食品饮料""", """纺织服饰""", """轻工制造""", """医药生物""", """公用事业""", """交通运输""", """房地产""", """金融服务""", """商贸零售""", """社会服务""", """信息服务""", """银行""", """非银金融""", """综合""", """建筑材料""", """建筑装饰""", """电力设备""", """国防军工""", """计算机""", """传媒""", """通信""", """煤炭""", """石油石化""", """环保""", """美容护理"""],
    drop_suspended=True,
    m_name="""m1"""
)

\

标签

Python交易引擎
评论
  • m1.read()
{link}