如何使用TradingView(TV)回测数字货币交易策略_tradingview 回测

特斯比特 2021-11-26 11:10:14

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学点击下方链接报名

量化投资速成营入门课程

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


更多精彩内容欢迎关注公众号数量技术宅。想要快速获取数字货币TradingView策略请添加小编数量技术宅个人微信号sljsz01

TradingView平台介绍

前段时间有粉丝找到技术宅表示他有一个常用的交易平台叫做TradingView希望技术宅能将分享的策略用这个平台的语言改写。确实有部分交易者他们长时间在某个平台交易适应了这个平台的操作而有相当一部分平台会提供量化交易的接口或者内置一些简易的可编程语言帮助大家实现指标计算、甚至是自动交易。

打开TradingView的主页可以看到TradingView不加有数字货币的行情还有A股、美股、外汇、黄金、大宗商品等外盘行情我们在TradingView上编写的交易策略不转换代码即可在多市场进行测试。

关于Pine编辑器

TradingView可以说是 一个简单易上手且功能极其强大的交易图表工具但它不仅仅是主观交易者的利器还内置了一种叫Pine的编程语言并有对应的Pine编译器Pine可以获取到TradingView的所有交易历史数据并且可以快捷、简便地编写一些基于K线的交易策略熟悉交易开拓者的同学可以将其类比为数字货币的TB。

Pine编辑器的进入步骤很简单首先我们点开某一个品种比如BTC/USD选择右上角图形的“全功能图表”按钮。

进入后选择下方的“Pine编辑器”即可进入策略编写界面。

在编写我们的第一个TradingView策略前先来简要看一下Pine语言的基本语法。Pine语言可以说相对于时下最热门的Python语言的语法简单了不少技术宅甚至认为没有什么编程基础的同学经过我们这篇文章的引导也能够写出一些简单的策略。Pine语言有一个语法参考手册包含三部分内容分布是运算子、内置变量、内置函数。运算子的部分比较好理解大部分和我们常用的数学公式或常用的计算机语法类似比如下图中的!=代表不等于而%代表取余数。

内置变量指的是系统内置的一些关键词通过这些关键词可以直接获取到策略计算过程中所需要用到的关键数据最典型的比如K线的开、高、低、收价格数据以下图为例在代码中调用close可以直接获取到每根k线的收盘价而open、high、low、volume同理分别是k线的开盘价、最高价、最低价和成交量。

而内置函数中最多的一类是技术指标我们常见的技术指标都可以在TradingView中找到对应的内置函数比如RSI、ADX、KD、MACD、ATR等等我们如果在策略中想要用某个技术指标只需要调用该指标的名称不必编写指标内部的计算公式就能得到想要的结果了。语法手册中也有详细的例子告诉你每个技术指标如何使用。

开始练手双均线策略

双均线策略可以说是初学者最容易上手的一个策略了交易规则很简单当短期均线上穿长期均线平空做多当长期均线下穿短期均线平多做空。我们以这样一个简单的策略开启Pine语言的编程之路来看我们是如何实现的

策略总共有效代码只有7行。第一行的strategy相当于申明这个策略第一个"My"是该策略的名称。接下来是一个判断变量longCondition 大家不用纠结longCondition是什么数据类型Pine脚本对于变量类型定义是开放式的即赋给它什么类型它就是什么类型。

我们再来看等号右边crossover(sma(close,20),sma(close,60))此处的close我们在前文已经知道是k线的收盘价而sma、crossover又分别代表什么别着急Pine编辑器有一个很好用的功能只需要将鼠标放在关键词上我们就能知道系统对于这个关键词内置变量、内置函数的定义。比如sma系统提示我们返回的是移动平均值。同理crossover和crossunder也可以通过同样方式获取解释不得不说真的好用。

在理解了每个系统内置关键词的用法我们就可以来翻译上述策略代码了。开多条件20日收盘价均线上穿60日收盘价均线如果满足开多条件则以当时的价格平空做多1手同时标记该信号为“My Long”开空条件20日收盘价均线下穿60日收盘价均线如果满足开空条件则以当时的价格平多做空1手同时标记该信号为“My Short”。将该策略加载到想测试交易的K线图表上可以看到“My Long”、“My Short”对应的交易信号标记。

当我们把策略信号加载到K线图表后通过Pine编辑器右侧的策略测试器就可以测试得到该策略的绩效。我们把这个策略应用到BTC的日线周期上可以看到尽管策略很简单、很基础它仍然是一个长期能够盈利的策略但中间的回撤幅度会让人比较难受。

再实现一个海龟策略

有了第一个练手的双均线策略的基础我们再来一起实现一个比双均线策略略微复杂一点的类海龟交易策略。之所以称之为类海龟交易策略是因为我们在海龟交易策略的唐奇安通道进、出场的基础之上添加了一个不同周期的均线过滤只有当均线和唐奇安通道同时满足多头或空头条件的时候才会触发进场的操作。

我们分成三段来编写这个策略。首先第一段还是在strategy方法中申明这个策略然后我们定义了3个参数变量分别是唐奇安通道的进场周期20唐奇安通道的出场周期10以及均线的周期15。定义为input变量是为了方便我们能够直接在Pine的测试界面修改参数数值而不需要改动原始的代码。

策略的第二段我们通过Pine内置的指标函数分别定义了唐奇安通道进场、出场的上、下轨道以及收盘价的均线在代码中可以看到每个K线所获取的high、low、close我们都在后面加了[1]这是为了计算并取前1个K线周期的指标数据以防止在当前的计算信号K线中用到未来的数据。

最后是策略第三段开仓、平仓条件的判断与执行此处为了避免连续开仓引入系统内置变量strategy.position_size该变量能自动读取策略的当前仓位。前4行是开仓的判断与操作如果当前K线突破唐奇安通道上轨、前一个K线收盘价大于均线、并且此时策略没有做多仓位则在突破价位进行做多的操作如果当前K线突破唐奇安通道下轨、前一个K线收盘价小于均线、并且此时策略没有做空仓位则在突破价位进行做空的操作。后4行是平仓的判断与操作如果当前持有多头仓位价格向下突破平仓唐奇安通道平掉所有多头仓位持有空头仓位平仓逻辑相似。

我们将编辑好的策略加载到一个稍精细的周期BTC4小时K线并测试策略的绩效。可以看到下图中策略的信号以及回测结果从测试情况来看尽管策略逻辑不复杂但仍可以在BTC的中周期取得比较稳定的收益了这也说明数字货币市场是有着很多交易机会的。

我们不改变任何条件和参数将策略移植到ETH这个同样是热门的数字货币品种上策略依旧是有稳定的表现。TradingView提供了许多主流交易所的数字货币对再包括外盘的商品、股指、A股等测试数据都可以对所写的Pine语言策略进行测试只需要修改图表左上方的品种就能迅速完成品种的切换和策略的测试。动动手说不定你能找到更优秀的策略。

如果你想要本次分享Pine语言策略的文本代码欢迎关注公众号并扫码下方小编微信sljsz01与我交流。


往期干货分享推荐阅读

如何投资股票型基金什么时间买买什么

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

如何获取免费的数字货币历史数据

【数量技术宅|金融数据分析系列分享】套利策略的价差序列计算恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500IC是最适合长期做多的指数

  大宗商品现货数据不好拿商品季节性难跟踪技术宅带你Python爬虫一键解决没烦恼

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

声明:本文内容不代表斑马投诉网站观点,内容仅供参考,不构成投资建议。投资有风险,选择需谨慎! 如涉及内容、版权等问题,请联系我们,我们会在第一时间作出调整!

相关文章