RSI(相对强弱指数)是通过比较一段时间内德平均收盘涨数和平均收盘跌数来分析时长买沽盘德意向和实力,从而做出未来时长的走势。
RSI是1978年6月由Wells Wider创建的一种技术指标,通过特定时期内股价的变动情况计算时长买卖力量对比,来判断股票价格内部本质强弱、推测价格未来的变动方向。
- RSI高于70时,股票可以被视为超买,是卖出的信号
- RSI低于30时,股票可以被视为超卖,是买入的信号
# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
import numpy as np
import talib
# 策略中必须有init方法
def init(context):
context.symbol = "SZSE.300296" # 利亚德
context.frequency = "1d"
context.fields = "open,high,low,close"
context.volume = 200
schedule(schedule_func=algo, date_rule="1d",time_rule="09:35:00")
def algo(context):
now = context.now
last_day = get_previous_trading_date("SZSE",now)
data = history_n(symbol=context.symbol, frequency=context.frequency, count=35, end_time=now, fields=context.fields, fill_missing="last", adjust=ADJUST_PREV, df=True)
open = np.asarray((data["open"].values))
high = np.asarray((data["high"].values))
low = np.asarray((data["low"].values))
close = np.asarray((data["close"].values))
rsi = talib.RSI(close)
rsi = rsi[-1]
if rsi < 30:
order_volume(symbol=context.symbol, volume=context.volume, side=PositionSide_Long, order_type=OrderType_Market, position_effect=PositionEffect_Open)
print("买入")
elif rsi > 70:
print("卖出")
order_volume(symbol=context.symbol, volume=context.volume,side=PositionSide_Short, order_type=OrderType_Market, position_effect=PositionEffect_Close)
if __name__ == '__main__':
run(strategy_id='xxxxxxxxxxxxxxxxxxxxxxxx',
filename='main.py',
mode=MODE_BACKTEST,
token='xxxxxxxxxxxxxxxxxxxxxxxxxx',
backtest_start_time='2017-01-01 09:00:00',
backtest_end_time='2017-12-31 15:00:00',
backtest_initial_cash=20000,
backtest_adjust=ADJUST_PREV)