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

双均线策略示例

个股:中国平安

回测日期:2022-5-1至2023-5-1

短均线:5天

长无线:10天

代码:

python 复制代码
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天

java 复制代码
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

回测结果:

相关推荐
y = xⁿ10 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
HugoStudio_SWAN13 小时前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_15 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
自小吃多15 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
存在morning16 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶18 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
weixin_4660681119 小时前
《十分钟冥想》精读笔记(上):每天10分钟,给大脑做一次“系统减负”
笔记
凯尔萨厮20 小时前
Java学习笔记十(注解)
java·笔记·学习
JoannaJuanCV20 小时前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器
程序员大雄学编程21 小时前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分