历史文档

【历史文档】策略示例-双均线策略(数字货币)

由ypyu创建,最终由small_q 被浏览 525 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

策略背景

国际研究情况

Ng and Wing-Kam(2008) 对MACD和RSI两个指标的盈利性进行了实证检验,文中采用FT-30为研究对象,样本跨期为60年。检验结果发现,单纯的MACD和RSI交易策略都能够获得远高于买入并持有交易策略的收益。Shik TC(2007)以外汇市场六国主要货币为对象对相对强弱指标RSI和移动平均线MA两者的盈利性进行了实证研究,研究结果显示,两个指标下的交易策略能产生高于风险补偿的收益。

国内研究情况

Zhou and zhu(2010)在《技术分析:从资产配置的角度看移动平均线的使用》一文中,作者从理论上分析了在资产配置问题中使用技术分析的基本原理,也就是一个投资者怎样将自己的财富在风险资产和无风险资产之间达到最优分配。作者在分析从量化的角度解决了对于对数效用的投资者精确最优配置量的问题时,也分析了股价可预测性程度是如何影响配置决策的。结果表明移动平均线能很明显地提高投资者的效用。

策略介绍

今天,我们尝试在数字货币量化交易上运用最简单的均线策略,交易标的是'BTC_USDT.HBI'。

策略原理

双均线策略:指的是运用两条不同周期的移动平均线,即短周期移动平均线和长周期移动平均线的相对大小,研判买进与卖出时机的策略。当短周期的均线从长期均线的下方,向上穿越至长周期的均线,所形成的交点,称为金叉。当短周期的均线从长期均线的上方,向下穿越至长周期的均线,所形成的交点,称为死叉。当出现金叉点时,市场属于多头市场;当出现死叉点时,市场属于空头市场。

数字货币标的:BTC_USDT.HBI;

时间:2017/11/1--2018/4/1日线数据;

5周期均线与20日均线的双均线策略;

策略逻辑

空仓状态下,短周期均线上穿(大于)长周期均线形成金叉,且该数字货币可以交易,满仓买入 持仓状态下,短周期均线下穿(小于)长周期均线形成死叉,且该数字货币可以交易,满仓卖出

策略实现

  • 首先,我们选择要交易的标的以及设置一下基本参数,这里选择的是'BTC_USDT.HBI'。
  • 然后,编写策略初始化部分,initialize函数只会运行一次,在第一个日期运行,因此可以把策略一些参数放在该函数定义。
  • 下面是策略交易逻辑,handle_data函数会每个周期(日/分)运行一次,可以把行情数据理解成K线,然后handle_data函数会在每个K线上依次运行。
  • 最后启动回测,编写策略回测接口。

策略案例

https://bigquant.com/experimentshare/e4b721cdebf14c04bdf844fbe588ae4b

\

标签

双均线策略交易策略均线
评论
  • 克隆后运行报错: \[2021-11-30 18:46:10.742959\] ERROR: moduleinvoker: module name: cached, module version: v2, trackeback: ValueError: No objects to concatenate \[2021-11-30 18:46:11.185466\] ERROR: moduleinvoker: module name: backtest, module version: v8, trackeback: ValueError: No objects to concatenate \[2021-11-30 18:46:11.193822\] ERROR: moduleinvoker: module name: trade, module version: v4, trackeback: ValueError: No objects to concatenate
  • 貌似数据源为空,DataSource('bar1d_HBI').read(),只有自己上传试试
{link}