交易软件指标数据查询与分析:MACD、EMA、强力指数等

配资网 阅读: 2024-10-01
后台-插件-广告管理-内容页头部广告(手机)

聚盈策略_聚策网络科技有限公司_聚牛策略平台

量化交易这方面,数据和策略很重要。这篇文章主要教大家怎么用平台功能搜集数据,还会详细解说窍门。特别是富途和咱们A股软件在周线指标上的区别,还有策略制定的注意事项。希望大家读完能更好地理解量化交易的做法,那就太好了。

聚牛策略平台_聚盈策略_聚策网络科技有限公司

一、指标数据的获取与对比

量化交易,重点是抓住关键指标。用交易软件就能看到,比如上交易日的大指数和买入点,就像这次的大指数是-73866.80,买入点是3567.14。但不同软件获取数据的方式不同,比如富途是从周一开始算,咱们国内的A股软件一般是从周五开始。这种差异可能影响交易策略,所以策略要仔细规划,得留点心。

聚牛策略平台_聚策网络科技有限公司_聚盈策略

这事儿咱们得保证数据准确,所以就不能不用Ta-Lib。这库里有EMA算法,咱们得多用长点时间的数据,误差能降下来。我们在Jupyter上试验了一下,数据挺不错的。这事儿咱们得好好搞,因为数据准不准直接关系到我们后面的策略。

聚盈策略_聚策网络科技有限公司_聚牛策略平台

二、策略框架的搭建

每个APP都有自己的玩法,我们调整策略时间灵活,方便得很。里面直接就有基础模板可用。开始测试策略,得先定好起始利润、交易费用,还得看看要不要动态调整权重这些事儿。这些关键,得好好想清楚。

聚策网络科技有限公司_聚盈策略_聚牛策略平台

聚牛策略平台_聚盈策略_聚策网络科技有限公司

咱得把查动力系统的流程列入每周的任务清单。这样,应对市场波动就容易多了,做交易决定也快得多了。先把这些基础活儿做好了,接下来执行策略就更稳当了。

三、技术指标的封装与应用

# 为减少计算自定义指标时的误差,这里取最近一年的数据count = 250# 回测的基准是沪深300,为了便于计算,减少因涨停、跌停、停牌、退市、复权等方面的影响,这里以沪深300进行测试stock = '000300.XSHG'# 日期格式date_format = '%Y-%m-%d'
def initialize(context): # 设置回测是否开启避免未来数据模式 set_option("avoid_future_data", True) # 动力系统状态 g.impulse_status = 0 # 平均EMA下跌穿透值 g.aedc = 0 # 平均EMA下跌穿透买入价 g.adp = 0 # 是否跌破了ADP g.adp_flag = False # 上一个交易日的最高价,用于突破买入 g.last_high = 0 # 记录最高价,用于止损 g.max_high = 0

咱们得小心操作impulse_system,查技术资料就只能选特定日子。找最近那几期的日子超关键。这样差不多能达到refmacd(1)的水平。动力系统,重点看MACD和EMA,得把它们整合到公式里,方便实时查。

# 设置每周第一个交易日的开盘前触发 weekly run_weekly(weekly, 1, '9:00')

咱们筛选昨天的强势指数或KDJ值要来个三明治式评定,主要是为了捕捉买点,等着反弹。这样我们能提升交易成功率,自然赚头也更大!

def weekly(context):    ''' 每周第一个交易日计算动力系统的状态 '''    run_date = context.current_dt.strftime(date_format)    impulse_system(run_date)

四、买入条件的设置与优化

量化交易中,找对买点特关键。得看三个条件,最后一个就是股价得回到EMA均线以下,或者直接突破这价才买。这招在股价涨得时候挺管用,就是有点儿严格,可能赶不上好时候,和市场涨得差距挺大。

聚牛策略平台_聚盈策略_聚策网络科技有限公司

def get_last_days(run_date, count, unit):    array = get_bars(stock, count=count, unit=unit, fields=['date'], end_dt=run_date)    return [item[0].strftime(date_format) for item in array[-count:]]

买这个玩意儿得看行情怎么样,得随时调整方法。那量化系统测试操作挺简单的,但是得留心时间和积分的限制,操作得细心点,别瞎搞,别浪費了。

五、策略回测与参数优化

def get_macd_ema(stock, date, unit):    _, _, macd = MACD(stock, check_date=date, unit=unit, include_now=True)    ema = EMA(stock, check_date=date, timeperiod=13, unit=unit, include_now=True)    return macd[stock], ema[stock]

做量化交易,得好好分析策略和调整参数,得找出最适合的数值,不能一点一点慢慢试。手动的还得记收益,费时费力还容易出错。

def impulse_system(run_date):    unit = '1w'    date3, date2, date1 = get_last_days(run_date, 3, unit)    macd1, ema1 = get_macd_ema(stock, date1, unit)    macd2, ema2 = get_macd_ema(stock, date2, unit)        if macd1 < macd2 and ema1 < ema2:        g.impulse_status = -1    elif macd1 > macd2 and ema1 > ema2:        macd3, ema3 = get_macd_ema(stock, date3, unit)        if not (macd2 < macd3 and ema2 < ema3):            g.impulse_status = 1

下回咱们得谈谈怎么在本地用BackTrader测试不同时间段的数据,顺便教大家设置策略的顶配参数。这样咱们优化策略的速度就能快起来,交易成功的概率和收入也能上去。

做量化交易,得持续学习和提升。量化交易里遇到过哪些难题?来评论区说说你的经历和看法,顺便点个赞,转发一下,让更多人加入这场有趣的讨论!

def calc_force_index(run_date, unit, period):    ''' 强力指数-自定义指标,取前后两天收盘价之差与成交量乘积的EMA '''    data = get_bars(stock, count=count, unit=unit, end_dt=run_date, fields=('close', 'volume'), df=True)    force_index = data['volume'] * data['close'].diff() / 1000000    fis = talib.EMA(force_index, period)    return fis.iloc[-2], fis.iloc[-1]
def calc_adp(run_date, unit, period): ''' 平均EMA下跌穿透-自定义指标,取收盘价与EMA之差的SMA(只考虑收盘价跌破EMA的情况) ''' data = get_bars(stock, count=count, unit=unit, end_dt=run_date, fields=('close')) ema = talib.EMA(data['close'], period) diff = ema - data['close'] tmp = np.apply_along_axis(lambda x: np.where(x > 0, x, 0), 0, diff) aedc = talib.SMA(tmp, period) ema_tmp = np.diff(ema) + ema[1:] adp = ema_tmp - aedc[1:] return round(adp[-2], 2)

本文 融资融券杠杆炒股 原创,转载保留链接!网址:http://www.tswoo.com/zmt/313.html

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索