找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 106|回复: 0

AI智能量化投研平台

[复制链接]
发表于 2025-10-20 10:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章
      又一款免费免费免费量化平台来了,它就是我们的HT-MATIC,它可以根据你的交易思路让AI协助编写策略代码,它依托深厚的业务积累与先进的技术平台,融合 AI技术,为客户提供集数据探索、因子研究、策略开发和信号提示于一体的量化全周期智能量化投研解决方案。

w1.jpg
#进入量化平台


    登录Matic之后在主页面点击量化菜单进入量化平台

    w2.jpg

    进入量化平台可以看到菜单有:首页、编写策略、数据平台、因子研究、我的策略、量化学院和知识库

w3.jpg

    数据平台展示了目前系统中支持的数据,比如期货日线行情数据,点击后进入详情页面,可以查看表结构、表文档、 使用示例以及更新记录。

w4.jpg

    因子研究展示了目前系统中支持的因子,可以在此对因子进行绩效对比,也可创建自己的因子。

    w5.jpg

    编写策略是量化平台内嵌的开发环境AIStudio,主要在此来实现策略开发。

w6.jpg

    我的策略用于管理已发布的策略,可以展示提交到模拟交易或者实盘交易的策略名称、今日收益、累计收益、运行时间、交易账号等信息

w7.jpg

    策略社区是一个用户可以提问、交流和分享量化投资策略的地方,在这里可以获取到他人分享的优质策略模型。

    量化学院和知识库是知识分享平台,学院会不定期上线平台教学视频。知识库提供了平台的一些使用文档以及接口文档等知识性的文档,也可在此创建自己的私人知识库。

    编写策略是量化平台内嵌的开发环境AIStudio,主要在此来实现策略开发。

    下面主要给大家介绍下AI协助编写策略代码技巧

    1、我们在量化首页的AI对话框里直接输入:基于螺纹钢主力合约,帮我开发一个双均线的期货趋势跟踪策略,初始资金是5万,不要使用额外参数,如图

    w8.jpg

    w9.jpg

    2、AI智能助手输出代码如下

    w10.jpg

    3、点击运行策略,表现如下

    w11.jpg

    w12.jpg
    4、完整代码如下
    from bigquant import bigtrader, dai

    import pandas as pd

    def initialize(context: bigtrader.IContext):

        context.logger.info("开始计算信号因子...")

        sql = """

        SELECT

            date,

            instrument,

            dominant,

            close,

            m_avg(close, 5) as sma,

            m_avg(close, 20) as lma,

            CASE

                WHEN sma > lma THEN -1

                WHEN sma < lma THEN 1

                ELSE 0

            END as signal

        FROM cn_future_bar1d

        LEFT JOIN cn_future_dominant USING (date, instrument)

        WHERE instrument='rb8888.SHF'

        """

        df = dai.query(sql, filters={"date": [context.add_trading_days(context.start_date, -10), context.end_date]}).df()

        context.data = df

        context.lots = 1 # 每次交易1手

    def handle_data(context: bigtrader.IContext, data: bigtrader.IBarData):

        import pandas as pd

        from bigtrader.constant  import Direction

        from bigtrader.constant  import OrderType

        today = data.current_dt.strftime('%Y-%m-%d')

        df_today = context.data[context.data['date'] == today]

        signal = df_today['signal'].values[0]

        price = df_today['close'].iloc[0]

        dominant_symbol = df_today['dominant'].values[0]

        # 持仓数据

        positions = context.get_account_positions()

        if len(positions) == 0:

            position_symbol = dominant_symbol # 当天无仓位的情况下,默认设置

        else:

            position_symbol = list(context.get_account_positions().keys())[0]

        long_position = context.get_account_position(position_symbol, direction=Direction.LONG).avail_qty #多头持仓

        short_position = context.get_account_position(position_symbol, direction=Direction.SHORT).avail_qty #空头持仓

        curr_position = short_position + long_position # 总持仓

        # 先进行移仓换月

        if dominant_symbol != position_symbol:

            # 移仓换月

            if short_position > 0:

                context.buy_close(position_symbol, short_position, price, order_type=OrderType.MARKET)

                context.sell_open(dominant_symbol, short_position , price, order_type=OrderType.MARKET)

            elif long_position > 0:

                context.sell_close(position_symbol, long_position, price, order_type=OrderType.MARKET)

                context.buy_open(dominant_symbol, long_position, price, order_type=OrderType.MARKET)

        # 信号交易

        if short_position > 0:

            if signal == 1:     # 买入信号则先平空再开多

                context.buy_close(position_symbol, short_position, price, order_type=OrderType.MARKET)

                context.buy_open(dominant_symbol, context.lots, price, order_type=OrderType.MARKET)

        elif long_position > 0:

            if signal == -1:    # 卖出信号则先平多再开空

                context.sell_close(position_symbol, long_position, price, order_type=OrderType.MARKET)

                context.sell_open(dominant_symbol, context.lots, price, order_type=OrderType.MARKET)

        elif curr_position == 0:

            if signal == 1:        # 无仓位情形下,买入信号则开多

                context.buy_open(dominant_symbol, context.lots, price, order_type=OrderType.MARKET)

            elif signal == -1:        # 无仓位情形下,买入信号则开空

                context.sell_open(dominant_symbol, context.lots, price, order_type=OrderType.MARKET)

    performance = bigtrader.run(

        market=bigtrader.Market.CN_FUTURE,

        frequency=bigtrader.Frequency.DAILY,

        start_date="2021-01-01",

        end_date="2024-12-31",

        capital_base=50000,

        initialize=initialize,

        handle_data=handle_data,

        order_price_field_buy='open',

        order_price_field_sell='open',

    )

    performance.render()

    后续将邀请专业老师进行系统性的培训,有兴趣的可以入群交流

    w13.jpg

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-10-20 18:08 , Processed in 0.148083 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表