在聚宽平台上编写的布林带策略

import jqdata

def initialize(context):
    set_option('use_real_price', True)
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
    set_benchmark('000300.XSHG')
    
    g.security = ['600036.XSHG']
    
    g.N = 2
    g.ma_days = 20
    
def handle_data(context, data):
    for stock in g.security:
        df = attribute_history(stock, g.ma_days)
        middle = df['close'].mean()
        upper = middle + g.N * df['close'].std()
        lower = middle - g.N * df['close'].std()
        
        p = get_current_data()[stock].day_open
        # 如果价格突破阻力线
        if p >= upper and stock in context.portfolio.positions:
            order_target(stock, 0)
    
    cash = context.portfolio.available_cash / len(g.security)
    
    for stock in g.security:
        df = attribute_history(stock, g.ma_days)
        middle = df['close'].mean()
        upper = middle + g.N * df['close'].std()
        lower = middle - g.N * df['close'].std()
        
        p = get_current_data()[stock].day_open
        # 如果价格跌破支撑线
        
        if p <= lower and stock not in context.portfolio.positions:
            order_target(stock, cash)

原文地址:https://www.cnblogs.com/IQ-Python/p/7423856.html