# 初始化函數,設定基準等等 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
有話要說...