當前位置:首頁 > 财經 > 正文

量化交易

# 初始化函數,設定基準等等
def initialize(context):
    # 設定滬深300作為基準
    set_benchmark('000300.XSHG')
    # 開啟動态複權模式(真實價格)
    set_option('use_real_price', True)
    # 股票類每筆交易時的手續費是:買入時傭金萬分之三,賣出時傭金萬分之三加千分之一印花稅, 每筆交易傭金最低扣5塊錢
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')

    g.security = '002389.XSHE'   # 航天彩虹
    g.M = 20      # 計算周期
    g.k = 2       # 股票特性參數,即N的取值

# 初始化此策略
def handle_data(context, data):
    # 獲取該股票20日收盤價
    sr = attribute_history(g.security, g.M)['close']
    # 取得過去20日的平均價格
    ma = sr.mean()
    # numpy和pandas的std()均可計算标準差
    # up線(壓力線):20日均線+N*SD(20日收盤價标準差)
    up = ma + g.k * sr.std()
    # down線(支撐線):20日均線-N*SD(20日收盤價标準差)
    down = ma - g.k * sr.std()
    
    # 股票開盤價格
    p = get_current_data()[g.security].day_open
    # 取得當前的現金
    cash = context.portfolio.available_cash
    # portfolio.positions持倉标的信息
    if p < down and g.security not in context.portfolio.positions:
        # 跌破下限買入信号且沒有持倉
        order_value(g.security, cash)
    elif p > up and g.security in context.portfolio.positions:
        # 漲破上限賣出信号且有持倉
        order_target(g.security, 0)     # 賣出所有股票,使這隻股票的最終持有量為0

你可能想看:

有話要說...

取消
掃碼支持 支付碼