当前位置: 首页 > news >正文

量化交易学习笔记02:双均线策略

双均线策略示例

个股:中国平安
回测日期:2022-5-1至2023-5-1
短均线:5天
长无线:10天
代码:

def initialize(context):
    # 初始化此策略
    # 设置我们要操作的股票池, 这里我们只操作一支股票
    # """标的"""
    g.security = '601318.SS'
    set_universe(g.security)
    
#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):
    security = g.security

    #得到二十日历史价格
    df = get_history(20, '1d', 'close', security, fq=None, include=False)
    #"""指标"""
    # 得到五日均线价格
    ma5 = round(df['close'][-5:].mean(), 3)
    ma5_prev = round(df['close'][-6:-1].mean(), 3)
    # 得到十日均线价格
    ma10 = round(df['close'][-10:].mean(), 3)
    ma10_prev = round(df['close'][-11:-1].mean(), 3)
    # 取得昨天收盘价
    price = data[security]['close']

    # 得到当前资金余额
    cash = context.portfolio.cash
    
    #"""择时"""
    # 如果当前有余额,并且五日均线大于十日均线
    if ma5 > ma10 and ma5_prev < ma10_prev:
        # 用所有 cash 买入股票
        order_value(security, cash)
        # 记录这次买入
        log.info("Buying %s" % (security))
            
    # 如果五日均线小于十日均线,并且目前有头寸
    elif ma5 < ma10 and ma5_prev > ma10_prev :
        # 全部卖出
        order_target(security, 0)
        # 记录这次卖出
        log.info("Selling %s" % (security))

def control_risk(context):
    #"""风控"""
    pass

ptrader测试结果:
在这里插入图片描述

修改两条均线日期后

个股:中国平安
回测日期:2022-5-1至2023-5-1
短均线:10天
长无线:15天

def initialize(context):
    # 初始化此策略
    # 设置我们要操作的股票池, 这里我们只操作一支股票
    # """标的"""
    g.security = '601318.SS'
    set_universe(g.security)
    
#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):
    security = g.security

    #得到二十日历史价格
    df = get_history(20, '1d', 'close', security, fq=None, include=False)
    #"""指标"""
    # 得到十日日均线价格
    ma5 = round(df['close'][-10:].mean(), 3)
    ma5_prev = round(df['close'][-11:-1].mean(), 3)
    # 得到十五日均线价格
    ma10 = round(df['close'][-15:].mean(), 3)
    ma10_prev = round(df['close'][-16:-1].mean(), 3)
    # 取得昨天收盘价
    price = data[security]['close']

    # 得到当前资金余额
    cash = context.portfolio.cash
    
    #"""择时"""
    # 如果当前有余额,并且五日均线大于十日均线
    if ma5 > ma10 and ma5_prev < ma10_prev:
        # 用所有 cash 买入股票
        order_value(security, cash)
        # 记录这次买入
        log.info("Buying %s" % (security))
            
    # 如果五日均线小于十日均线,并且目前有头寸
    elif ma5 < ma10 and ma5_prev > ma10_prev :
        # 全部卖出
        order_target(security, 0)
        # 记录这次卖出
        log.info("Selling %s" % (security))

def control_risk(context):
    #"""风控"""
    pass

回测结果:
在这里插入图片描述

相关文章:

  • YOLO简史:从YOLOv1到YOLOv12的技术革新与演进
  • 类和对象C++ (未完:对象特征)
  • 一周学会Flask3 Python Web开发-SQLAlchemy更新数据操作-班级模块
  • 蓝桥模拟+真题讲解
  • MySQL -- 基本函数
  • vmware环境(vcenter许可证过期问题)
  • pytorch小记(八):pytorch中有关于.detach()的浅显见解
  • 暨南大学MEM复试资料
  • C++ 位图 bitset
  • 设备管理VTY(Telnet、SSH)
  • 软件工程--瀑布模型和敏捷模型的解释预定义
  • 【网络】Caddy 服务器如何提供 TLS(Transport Layer Security)(传输层安全协议)
  • DeepSeek(3):DeepSeek R1 提示词⼯程
  • Java缓存String(字符串常量池)、Integer (-128 到 127 )
  • Webpack 打包技术及逆向数据分析研究
  • 8、STL中的map和pair使用方法
  • How to develop Cangjie applications based on Jetbrains Fleet
  • MySQL 在 CentOS 7 上安装的步骤指南
  • 麒麟服务器操作系统PostgreSQL环境部署手册
  • Dubbo 服务发现
  • 李在明涉嫌违反《公职选举法》案将于15日进行首次重审公审
  • 山东一景区怕游客赶不到海撒三千斤蛤蜊:给游客提供情绪价值
  • 五大光伏龙头一季度亏损超80亿元,行业冬天难言结束
  • 王毅:妥协退缩只会让霸凌者得寸进尺
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 美情报机构攻击中国大型商用密码产品提供商,调查报告公布