报错信息 前几篇文章我们已经了解过所谓程序化、量化交易就是一个脚本程序根据从交易所获取到的数据,经过一系列的计算、判断、触发做出一些操作,操作交易所账户进行交易。这些获取数据、操作账户的行为都是通过交易所API接口进行的。简单说就是脚本程序和交易所交互,既然是交互那么就肯定有正常的交互、异常的交互。当发生异常交互时接口便返回了异常信息。 当然市面上的程序化、量化交易系统,亦或自行开发的程序都会有各种各样的错误提示、报错信息。这些错误信息并非局限于交易所API接口的报错信息。还有诸如:程序运行时异常错误、配置错误、程序语法错误等。在发明者量化交易平台上,错误信息也大概分为几个大类: 1、策略语法错误 这类错误最常见,通常是因为萌新不熟悉编程,学习测试阶段代码编写有语法错误导致。例如: 代码少写了括号之类的字符。此类错误通常在编辑策略页面就能看到错误提示,并且策略也是运行不起来的(运行时会直接报错,如下图)。 所以写完策略,在平台策略编辑页面习惯性的搂一眼,看看有没有红色小XX,有就肯定是有明显错误了。 2、策略程序BUG导致的运行时程序异常 程序存在BUG,在程序运行时,触发异常会导致程序异常停止,显示此类报错信息。 此类错误都会导致程序异常,程序会停止运行。 3、配置、设置不当导致的错误 在FMZ平台,交易对统一定义为X_Y这样的格式,X代表交易币的名称,Y代表计价币的名称(期货币本位合约交易对的计价币通常用USD表示,在前几篇文章中有介绍)。例如BTC_USDT,如果我胡乱写交易对,写成BTC-USDT。 在FMZ平台回测系统中报错: 实盘中报错: 再者,萌新经常遇到的一种错误: 此类错误是由于修改了FMZ平台账号的密码,导致配置的交易所对象中的API KEY失效(用户的API KEY都是在浏览器端加密后配置在FMZ平台),策略无法启动,进而报错。 4、接口调用报错 接口调用报错是在运行策略时经常遇到的,往期文章中我们学习、了解到FMZ平台上的接口分为产生网络请求的接口、不产生网络请求的接口。接口报错不会导致策略程序停止,通常是由于接口调用异常,返回了错误数据,然后策略没有做容错,使用了错误数据引发的程序异常错误导致程序停止(容错的概念在前几篇文章中有提及)。这里列举几个产生网络请求的接口报错信息: (1)、网络超时 萌新们经常遇到的报错信息之一,原因是使用了国内网络的设备(自己的电脑或者国内的服务器)。由于大部分交易所都被墙,所以国内网络基本上很多交易所都访问不到,访问接口都会报超时。(前几篇文章中有提及) (2)、http 429 错误 经典报错信息之一,原因是调用交易所接口过于频繁,超过交易所限制的频率。(前几篇文章中有提及)有的萌新同学可能会说,我多申请几个交易所的API KEY或者我多申请几个交易所账号不就行了。我们需要知道,交易所限制接口访问频率通常是基于IP地址的,简单说就是只要在一个IP地址发送的请求全部统计在这个IP地址上,超过了限制这个IP再发送请求交易所服务器就拒绝访问了。 (3)、交易所接口业务层面的报错 上面讲的timeout、429这些是网络层面的错误。交易所接口业务层面发生问题也会报错,例如我要获取现货行情,但是我设置了一个不存在的交易对。我在FMZ平台的调试工具里测试,调试工具是个很方便的测试工具,非常适合实盘测试函数调用、获取数据等需求。 调试工具执行结果,调试工具执行和实盘执行并无区别。 这里的报错信息意思就是说交易对无效(从这里看出"err-msg":"invalid symbol")。例如此类和业务相关的报错还有很多,比如设置杠杆时某些交易所不支持带小数部分的杠杆值,此时杠杆值如果带有小数部分也会导致接口调用报错。 列举一个不产生网络请求的接口调用 设置期货合约代码 有些接口仅仅是设置系统中的某些全局变量,不产生网络请求,例如: 但是参数传错,或者乱写也是会报错的。 但是不论哪种类型的错误,显示出的报错信息都是查找问题的关键信息,通常都能从报错信息中看出问题所在。可以使用翻译工具,翻译报错信息,提取关键信息。例如上例中的"err-msg":"invalid symbol",翻译:“err msg”:“无效符号”。大概就知道是交易对设置错了,因为通常都用英文symbol代表交易代码、交易对。 回测系统 回测系统也是一个量化工具中的重点,回测系统可以方便的测试策略原型,初步测试策略中潜在的BUG、逻辑问题等。对于回测系统需要理性看待。回测系统在一定程度上是可以反映出策略的一些问题的。下面先简单的从FMZ支持的不同策略语言层面说明一下FMZ平台上的回测系统。(关于回测系统的一些介绍,前几篇文章中有所提及) JavaScript 浏览器端回测,使用的是本机硬件资源。 Python 在托管者上回测,可以选择具体分配到哪一个托管者上(自己部署的托管者,FMZ平台的公共托管者都行)。鉴于FMZ平台上公共托管者负载较大,建议使用本机托管者回测(这样速度也会快些,公共托管者回测时,当任务较多超过负载,会取消一些回测任务,导致回测中断)。 C++ 和脚本语言不同,C++策略需要先编译然后执行。C++语言的策略会在FMZ平台(服务器)先编译(如果代码写的有问题,可能编译不通过,直接弹框报错提示)。编译通过后在FMZ平台上(服务器)回测。 麦语言 底层实现为JavaScript,回测时同样是在浏览器端回测。 可视化 底层实现为JavaScript,回测时同样是在浏览器端回测。 发明者量化交易平台的回测系统回测模式分为两种(这个不分策略语言,这个是回测设置,各种语言的策略回测都一样)。 1、模拟级别回测 模拟级别回测简单通俗的说就是根据K线数据模拟生成逐个时间节点的价格数据。 K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。 就好比如图这样模拟: 当然实际回测系统实现这个模拟的时候情况比图上略微复杂,这里不做深究,理解模拟级别回测机制即可。知道了这个原理,就需要注意模拟级别回测的弊端了,虽然模拟级别回测速度很快(因为模拟生成的价格,并非真实的逐秒的价格一个个放出)。但是如果策略拟合了模拟的tick变动趋势就会让策略表现的非常优秀(但是实际情况中价格可能不是这种走势,虽然价格都在这个K线柱的框架内)。这里用于生成模拟tick数据的K线叫做底层K线,这个K线的周期叫做底层K线周期,在策略设置页面如图设置: 这里设置1分钟,意思就是使用周期为1分钟的K线数据作为生成模拟tick的数据源。还有一点就是对于高频策略,使用模拟级别回测显然不太合适。但是对于趋势策略,使用模拟级别回测还是能一定程度反映出策略的绩效的。 2、实盘级别回测 说了模拟级别回测,我们再讲一下实盘级别回测。简单说实盘级别回测就是回测时真实的放出逐秒的价格数据。让策略回溯行情中每秒的价格。这种回测模式下可以回测一些交易频率高的策略,并且可以得到一定程度的参考价值。缺点就是实盘级别回测数据量太大,无法较大时间范围的回测(通常时间范围不到1天)。可以通过关闭分笔数据,降低深度数据档位(成交逐笔数据,盘口深度数据在实盘级别回测中也有逐秒快照,所以实盘级别回测数据量庞大),来适当增大回测范围,如图: 发明者量化交易平台回测系统的数据来源是何处呢?回测系统默认使用的是FMZ平台的数据中心的数据,FMZ平台数据中心自动收集设定好的各个交易所各个币种的行情数据,提供给平台上的回测系统。 1、默认使用FMZ数据中心的数据 前几篇文章中有提及平台提供的回测数据只支持有限的交易对(全市场、全币种回测数据是一个天文数字,全部都收集不现实,平台收集了主流交易所、主流币种的行情数据)。 2、使用自定义数据源数据 可以使用回测页面的选项设置自定义数据源,简单说就是如果你自己有某个交易所的数据,可以根据FMZ平台的格式要求,提供给FMZ平台的回测系统,用于回测。 学习、测试、思考 做程序化、量化交易离不开学习、测试、思考。思考问题这个并不能凭空思考,那样是低效的。解决问题、思考问题最行之有效的就是查找资料、然后动手试下、思考分析,问题如果没解决请往复以上动作。但是通常萌新遇到问题,就会感觉: “哎呀~程序化、量化、写策略太难了”。 “看了半天,还是懵懵的!” “没入门到想放弃!” .... 在FMZ平台上入门其实很简单,首先要善于查找资料。发明者量化交易平台策略广场、社区、文库中有不少资料可以查阅。 然后就是动手能力,使用回测系统、调试工具可以很方便的测试,这里并不是说要测试一个完整的策略。其实你如果是完全0基础,甚至你可以在FMZ量化的回测系统上学习JavaScript程序基础。 这个是我经常学习JS的教程网站:runoob不仅限于JS,各种IT知识这里都能查询、学习。比如我JS的正则表达式不知道怎么用,怎么办?当然先查阅资料,然后动手试下咯~ 我看到这样一个例子: 我想测试下,甚至就可以用FMZ平台的回测系统测试学习。 回测系统上随便设置一个交易所 测试以下代码: 看~多好的一个学习工具!比如我想学习JavaScript语言的循环逻辑怎么写,动手试下:按数组中的顺序,循环打印一个数组变量中的各个元素: 瞬间是不是感觉学习有动力了呢!其实在FMZ上,完全可以边看JavaScript教程,边在回测系统上动手学习JavaScript基础。JavaScript语法掌握的差不多了,进入下一个阶段需要实际使用交易所接口获取数据测试了,还可以使用FMZ平台的调试工具进行真实的接口测试。然后就是多思考,举一反三,测试验证,对比分析等。这样学习入门就非常快了。 —- 编译者/作者:发明者量化交易 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
币圈量化交易萌新看过来--带你走近币圈量化(三)
2021-08-03 发明者量化交易 来源:区块链网络
LOADING...
相关阅读:
- 币圈量化交易萌新看过来--带你走近币圈量化(四)2021-08-03
- 博森CCR智能量化机器人发布全球第一款一键启动多种策略结合2021-08-03
- 币圈一级市场是什么?怎么盈利?2021-08-03
- 东哥论币:2021年8月3日、日间比特币行情分析与操作策略2021-08-03
- 预期年化8%!顶峰AscendEX推出稳定币USDT、USDC质押方案2021-08-03