Ai全自动编写策略:双龙戏珠,完整回测+通达信python双源码

松鼠Quant
2025-06-04


图片
量化策略开发,高质量社群,交易思路分享等相关内容

工具推荐

· 参数筛选工具

·Ai帮你编写策略

· 订单流图表

· 加入2025俱乐部

· Ai投研助手课程


『正文』

ˇ

Ai编写策略是量化领域的新常态,松鼠Quant在早些时候推出了开源项目《gitee官方推荐,松鼠QuantAi+回测框架详细版教程(图文),今天我们花2分钟时间,让Ai自动转编译通达信指标到python版本,并且自动回测,给出总结和迭代意见。
图片
通达信源码:


















VAR1:=MA(C,5);VAR2:=ATAN((VAR1-REF(VAR1,1)))*180/3.1416;STICKLINE(VAR2>1 AND VAR1>REF(VAR1,1), VAR1,REF(VAR1,1),2,0),COLORMAGENTA;STICKLINE(VAR2< 1 AND VAR1< REF(VAR1,1), VAR1,REF(VAR1,1),2,1),COLORGREEN;VAR3:=MA(C,20);VAR4:=ATAN((VAR3-REF(VAR3,1)))*180/3.1416;STICKLINE(VAR4>1,VAR3,REF(VAR3,1),2,0),COLORYELLOW;STICKLINE(VAR4< 1,VAR3,REF(VAR3,1),2,1),COLORBBCCCC;AF:=EMA((CLOSE+HIGH+LOW)/3,10);BF:=IF (YEAR<=2017,IF(YEAR< 2017,REF(AF,1),IF(YEAR=2017 AND MONTH< 10,REF(AF,1),0)),0);DIFF:= EMA(CLOSE,9) - EMA(CLOSE,26);DEA:= EMA(DIFF,12);MACD:= 2*(DIFF-DEA);ZC:=50*(IF(MACD>REF(MACD,1) AND REF(MACD,1)>0 AND REF(MACD,2)>REF(MACD,1),0.2,0));VAR5:=MACD.MACD>0 AND MACD>REF(MACD,1);双龙戏珠:=BARSLASTCOUNT(VAR2>1 AND VAR1>REF(VAR1,1) AND VAR4>1)=1 ;STICKLINE(双龙戏珠 AND VAR5 AND C>O,O,C,3,0),COLORRED;DRAWICON(双龙戏珠 AND VAR5 AND C>O,L*1.002,13);
接下来让Ai帮我们转化到松鼠Quant回测框架内,我们不需要写一行代码!!!
图片
我们只需要将通达信源码发给Ai,它就开始自动编写了。
图片
编写好之后他会问我们是否回测,我们输入"Y"
图片
回测完成:
图片
图片
给我改进意见:
图片
图片
python源码:































































































































import pandas as pdimport numpy as npfrom ssquant.backtest.multi_source_backtest import MultiSourceBacktesterfrom ssquant.api.strategy_api import StrategyAPIimport mathdef initialize(api: StrategyAPI):    api.log("双龙戏珠策略初始化")    def strategy_function(api: StrategyAPI):    # 参数设置    fast_ma = 5       # 快速均线周期    slow_ma = 20      # 慢速均线周期    ema_short = 9     # 短期EMA周期(MACD)    ema_long = 26     # 长期EMA周期(MACD)    ema_signal = 12   # 信号线周期(MACD)    angle_threshold = 1   # 角度阈值        # 数据验证    current_idx = api.get_idx()    if current_idx < slow_ma:        return        close = api.get_close()    if close is None or len(close) == 0:        api.log("警告: 数据为空")        return        # 计算5日均线及其角度    ma5 = close.rolling(fast_ma).mean()    ma5_angle = np.arctan((ma5 - ma5.shift(1))) * 180 / math.pi        # 计算20日均线及其角度    ma20 = close.rolling(slow_ma).mean()    ma20_angle = np.arctan((ma20 - ma20.shift(1))) * 180 / math.pi        # 计算MACD指标    ema_short_val = close.ewm(span=ema_short, adjust=False).mean()    ema_long_val = close.ewm(span=ema_long, adjust=False).mean()    diff = ema_short_val - ema_long_val    dea = diff.ewm(span=ema_signal, adjust=False).mean()    macd = 2 * (diff - dea)        # 计算MACD条件    macd_positive = macd > 0    macd_increasing = macd > macd.shift(1)    prev_macd_increasing = macd.shift(1) > macd.shift(2)        # 计算双龙戏珠信号    dragon_signal = (        (ma5_angle > angle_threshold) &         (ma5 > ma5.shift(1)) &         (ma20_angle > angle_threshold) &         (np.abs(ma5_angle - ma20_angle) < 30)   # 两条均线角度相近    )        # 计算其他条件    current_open = api.get_open().iloc[current_idx]    current_close = close.iloc[current_idx]    is_rising_bar = current_close > current_open        # 综合买入信号    buy_signal = (        dragon_signal.iloc[current_idx] &         macd_positive.iloc[current_idx] &         macd_increasing.iloc[current_idx] &         prev_macd_increasing.iloc[current_idx] &         is_rising_bar    )        # 交易逻辑    current_pos = api.get_pos()        # 买入信号    if buy_signal and current_pos <= 0:        api.close_all(order_type='next_bar_open')        api.buy(volume=1, order_type='next_bar_open')        api.log(f"买入信号触发: 价格={current_close:.2f}, MA5角度={ma5_angle.iloc[current_idx]:.2f}, MA20角度={ma20_angle.iloc[current_idx]:.2f}")        # 止损逻辑 - 当5日均线角度转负时平仓    elif (ma5_angle.iloc[current_idx] < -angle_threshold) and current_pos > 0:        api.close_all(order_type='next_bar_open')        api.log(f"止损平仓: MA5角度转负={ma5_angle.iloc[current_idx]:.2f}")if __name__ == "__main__":    # 导入API认证信息    try:        from ssquant.config.auth_config import get_api_auth        API_USERNAME, API_PASSWORD = get_api_auth()    except ImportError:        print("警告:未找到 auth_config.py 文件,请在下方填写您的认证信息:API_USERNAME和API_PASSWORD")        API_USERNAME = ""        API_PASSWORD = ""    # 创建多数据源回测器    backtester = MultiSourceBacktester()        # 设置基础配置    backtester.set_base_config({        'username': API_USERNAME,        'password': API_PASSWORD,        'use_cache': True,        'save_data': True,        'align_data': False,        'fill_method': 'ffill',        'debug': True    })        # 添加品种配置    backtester.add_symbol_config(        symbol='rb888',        config={            'start_date': '2024-01-01',            'end_date': '2025-12-31',            'initial_capital': 100000.0,            'commission': 0.0003,            'margin_rate': 0.1,            'contract_multiplier': 10,            'periods': [                {'kline_period': '1d', 'adjust_type': '1'},            ]        }    )        # 运行回测    results = backtester.run(        strategy=strategy_function,        initialize=initialize,        strategy_params={},    )
没错,整个开发过程我们没有写一行代码,松鼠QuantAi助手会编写,回测,分析,修改。基于松鼠Quant的MCP服务器+Deepseek开启全新量化学习的路径,即使0基础也能完成策略的编写与验证!
如果你喜欢这个系列,请点赞,转发,在看三连。我们根据受欢迎程度决定是否继续更新,感谢您的支持。

防迷路


           图片

微   信|小松鼠-松鼠Quant

微信号|viquant01

加入2025量化俱乐部


分享