Python股票量化投资课学习—单均线双均线策略

发布于:2023-01-12 ⋅ 阅读:(520) ⋅ 点赞:(0)

Python股票量化投资课学习—单均线双均线策略

测试平台—测试记过如下:

单均线策略测试结果:

 

双均线策略测试结果:

 

单均线双均线策略 思路是:

 

选股策略:单一只股票

具体内容:金叉买进死叉卖出

源文件下载:

 

源文件下载地址:https://download.csdn.net/download/jinzhai/86403657

      
单均线策略源码如下:

def indicators(context):

    """指标"""

    # 计算15日的均价,赋值给变量context.sma

    context.sma = SMA(period=15)

def choose_stock(context):

    """标的"""

    context.symbol_list = ["600000.XSHG"]

def timing(context):

    """择时"""

    # 判断是否持仓,如果不持仓,则判断是否出现买入信号

    if not context.position:

        # 当前天的15日均价大于昨天的15日均价,且昨天的15日均价小于今天的15日均价时,出现买入信号

        if context.sma[-2]> context.sma[-1] and context.sma[0] > context.sma[-1]:

            # 买入信号出现时,发送买入指令,系统自动执行买入交易

            context.order = context.buy()

        

    # 如果持仓,则判断是否出现卖出信号

    else:

        # 当前天的15日均价小于昨天的15日均价,且昨天的15日均价大于今天的15日均价时,出现卖出信号

        if context.sma[-2] < context.sma[-1] and context.sma[0] < context.sma[-1]:

            # 卖出信号出现时,发送卖出指令,系统自动执行卖出交易

            context.order = context.sell()

def control_risk(context):

    """风控"""

    pass

双均线策略源码如下:

def indicators(context):

    """指标"""

    # 计算15日的均价,赋值给变量context.short_sma

    context.short_sma = SMA(period=15)

    # 计算30日的均价,赋值给变量context.long_sma

    context.long_sma = SMA(period=30)

def choose_stock(context):

    """标的"""

    context.symbol_list = ["600158.XSHG"]

def timing(context):

    """择时"""

    # 当15日均价大于30日均价时,出现买入信号

    if context.short_sma > context.long_sma:

        # 买入信号出现时,发送买入指令,系统自动执行买入交易

        context.order = context.buy()

    # 判断是否持仓,如果持仓,则判断是否是否卖出信号

    if context.position:

        # 当15日均价小于30日均价时,出现卖出信号

        if context.short_sma < context.long_sma:

            # 卖出信号出现时,发送卖出指令,系统自动执行卖出交易

            context.order = context.sell()

def control_risk(context):

"""风控"""

    # 当持有股跌幅大于 15%,就全部卖出

    for data in context.datas:

        position = context.getposition(data).size

        if position!= 0 and ((data.close[-1] - data.close[0])/data.close[-1]) >= context.down_tr:

             context.close(data=data)