在Elasticsearch中回测隨機(Stochastic)指標交叉交易策略

本文介绍了如何在Elasticsearch中回测随机指标交叉交易策略,与RSI指标对比。文章详细阐述了随机指标的计算方法,并提供了回测策略的实现步骤,使用Elasticsearch分析股票型基金数据。实验结果显示,随机指标策略并不总是带来盈利,建议不要仅依赖单一指标进行交易。
摘要由CSDN通过智能技术生成

        之前的文章“在Elasticsearch 中回测 RSI 交叉策略”,介紹在Elasticsearch中如何回測 相对强弱指数(RSI)指标交叉交易策略。在本文中,我们将实施随机(Stochastic)指标并衡量其性能,最后与相对强弱指数指标进行比较。 儘管这指標是由 George C. Lane 在 1950 年代後期開發,看似非常古老,但仍然很受歡迎。与 RSI 指标一样,随机指标也是展示在 0 和 100 之间价格的波动动量。所以,它们称为振荡器(Oscillator)。这两个指标都可用于识别超买区域和超卖区域。

        随机指标将价格变化转化为一种数据,定义为两个距离的比值为 %K (包括最近收盘价C和最近最高价MMax之间的距离,以及最近最高价和最近最低价MMin之间的距离)。随机指标分为两种类型,快速和慢速。假设%Kfast为快速的例子,方程可以改写如下,其中 MMaxn,1 和 MMinn,1 是移动最大值和移动最小值。 对应滑动窗口为n的Elasticsearch移动函数,需要右移1个数据以包含当前数据。滑动窗口 n常用值为14 。

        与 MACD 类似,随机指标也定义了一条名为 %D 的信号线,它是滑动窗口为3 的%K 简单移动平均值(SMA)。假设%Dfast为快速的例子,方程可以改写如下。

快速比慢速对价格变化更敏感,会产生更多的买入或卖出信号。慢速随机指标%Fslow %Dslow可以定义如下:

简单的随机交叉交易策略可以定义为当 %K 线在超买区 (> 80) 越过并且低于%D 线时发出卖出信号,而当 %K 线在超卖区(< 20)中越过并且高于%D 线时发出买入信号。 对于其他值,请耐心等待买入或卖出信号。

         使用图表来观察值的变化要容易得多。在本文中,我们将回测应用于Tushare大数据开放社区提供的股票型公募基金,并专注于将 Elasticsearch 作为分析工具。 下面的例子随机选择了"工银研究精选股票" (代码为000803.OF) ,并另外抽取10只股票型基金运行,结果将在最后的段落汇总和展示。数据选自2021年01月01日到2021年05月31日之间的时间范围。在下图中,随机指标 (FK/SK) 和信号线 (FD/SD) 与每日收盘价一起绘制。 在每日价格曲线中,卖出信号的价格标为红色,而买入信号的价格标为蓝色。 如下图所示,慢随机指标产生的信号数量略少于快速随机指标。

            在这里,我们展示了一个简单的随机交叉交易策略,并使用 Elasticsearch 来展示实现细节。

  • 假设由于成本的限制,只能每一次购买和持有 1 股,并在持有的股份被售出之前不能发生任何交易。
  • 当 FK 在超卖区域 (<20) 超过 FD 时买入 1 股。
  • 当 FK 在超买区域 (> 80) 低于 FD 时卖出 1 股。
  • 在测试期结束时,持有的股票以当前价格兑现。
  • 慢速随机交叉交易策略以SK代替FK和以 SD代替FD

        根据以上的交易策略,快速随机指标有 5 个蓝点和 11 个红点,但只允许进行 3 次买入和 3 次卖出交易。慢速随机指标有 3 个蓝点和 10 个红点,但只允许进行 2 次买入和 2 次卖出交易。让我们描述一下使用 Elasticsearch 的实现。假设有一个填充有数据的 Elasticsearch 索引,其使用的数据映射与上一篇论文中描述的相同。以下步骤演示了 REST API 请求正文的代码。

通过搜索操作收集所有相关文档

使用带有必要条件(must)子句的布林查询(bool query)来收集基金代码为000803.OF,和公告截止日期从2021年01月01日到2021年05月31日的文档。 由于需要计算移动平均值,因此增加了一个月的数据(从2020年12月01日到2020年12月31日)。

{
    "query": {
        "bool": {
		     "must": [
		         {"range": {"end_date": {"gte": "20201201", "lte": "20210531"}}},
		         {"term": {"ts_code": "000803.OF"}}
		     ]
		}
	},

提取每日的复权单位净值

使用名为Backtest_Stochastic日期直方图(date_histogram)存储桶聚合,并配合参数field(字段)为end_date和interval(间隔)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值