你大概知道量化的思想最早在古巴比伦人计算行星轨迹的时候就已经诞生(算术运算),后来借助古希腊的形式化逻辑的发展,人们日益能从量化的思想中提炼和描述自然规律并运用到生产之中。不过,基于量化的思想打造一个交易系统,到底是什么体验呢?

于是你踏上了量化的不归路:硬生生的概念仿佛是刻在石碑上的咒文。

硬着头皮往下看咯。

量化系统的组成

策略

策略的组成要素:条件(信号)、动作

策略核心的思想是“条件 => 动作”,设定任意的条件,一旦满足,就触发交易动作。

常见的条件包括:价格、资产、时间。

常见的动作包括:买入、卖出。

只需要简单的这几个元素,就可以组成非常丰富的交易策略,很神奇,是不是?

是否能找到好的触发条件,在既定条件下能不能做出好的动作,以及这个过程能不能持续循环和持续盈利, 这就是量化系统里面交易意志的体现。一般人说起量化,想到的首先也是策略,它是量化系统里面的灵魂。

计算机交易程序

计算机交易程序相当于旧时期的(股票)经纪人、接线员,他会根据客户的买卖指令,实际向交易平台提交买卖请求,完成资金和合约的交割,并把交易的结果返还给客户。试想一下,如果没有了这个代办的环节,你想到了一个很酷的交易想法,然后要下楼开车去到交易大厅,中间堵车不说,到那发现忘带身份证,厚着脸皮叫来管理人员理论一番,发现自己表格填错了——任何一个环节出错,你的交易算是泡汤了。

一个完善的计算机交易程序,帮你把所有的细节都处理掉,你只需要在合适的时间告诉他,干,管家式的服务就告诉你,妥了。

上面讲的比喻成分太多。一个计算机交易程序需要解决以下的问题:交易帐号验证与帐号授权、资金帐号对接、交易接口网络请求、异常处理、自动排队和重试,确认交易结果,同步帐号信息,这些都是最基本的,还有机器容灾、风险控制等高级功能,必要时候还能人工介入处理,这些都独立于交易意志之外,但又不可或缺。好的交易程序犹如训练有素的仆人,把你想到的和没想到的事情,一并给你处理好,让你专心在策略的设计上。

情报系统

前面说到的交易意志,神人可以靠灵感,神棍可以夜观天象,一般的从业人员多是老实巴交地收集关键情报,用固定的逻辑模板和公式进行计算,从而得出特定的信号,再根据实际策略条件,进行动作。这个过程应该是有条不紊的。情报系统应运而生:稳定、持续地提供信息源,让交易意志能不断地被体现。通常来说,情报系统就是一组不断更新的数据服务。

一个简化的量化系统

普及完上面的基础概念,我们来看一个实际的量化系统怎么运转。细心且学有余力的朋友,可以从无到有实现一个简单的量化系统。

要实现这样一个系统,我们主要解决以下问题。

这个系统有哪些部件?

前面已经回答过了:策略系统、交易系统、情报系统。

这些部件怎么连接起来?

程序从情报系统循环地拉取最新的消息,给到策略系统,然后执行策略逻辑,并把策略系统产生的交易指令给到交易系统,交易系统把处理的结果反馈到情报系统,从而实现量化系统的持续更新,一个类似永动机的循环就这样跑起来了。

是不是听起来太简单了点?实际上整个量化系统的逻辑从结构上来看就是那么简洁。至于具体到每个子系统的细节,则需要另写文章逐步一一讲解了。感兴趣的朋友可以往后面阅读。

# 量化系统示例伪代码开始 { 初始化程序(策略系统,情报系统,交易系统) 循环:当(情报系统.有更新)时执行 { 策略系统.读取信息 策略系统.计算信号 如果(策略系统.有交易指令)执行 { 交易系统.执行交易 } 情报系统.更新 }}

有没有简单的方式?

有的,例如,有人把交易系统、情报系统、策略系统都给你准备好,你只需要在上面拼装自己的策略,系统自动就能运行起来了。

有没有更简单的方式?

当然还有,你连策略都不用自己写,直接用别人的。

但是需要提醒的是,交易策略是有生命周期的,并非什么时候都可以无脑使用,建议你从别人的策略开始学习起,理解里面的交易意图,融会贯通,再调整成为自己独有的策略,结合现成的量化系统,就可以开始量化交易了。

这样一圈下来,你对量化交易是不是理解更深入一些了呢?

结语

理解量化交易概念最快的方法是实际做一次。

但在你启航之前,出于安全的考虑,我们建议你读下一篇文章《利用回测工具降低交易风险》。然后,我们会把量化系统在比特币市场的功能细节,给你一一讲解,并提供实际可用的模板,供你在回测和调试。也许足够坚持和幸运的话,你会真正走到实际交易的那一步。

WeQuant教程—1.2 从简单的量化系统开始的更多相关文章

  1. WeQuant教程—1.3 利用回测工具降低交易风险

    量化系统投入实际使用之前,人们会希望提前测试交易的效果.这个期间往往涉及代码的改动和参数的调整.最常见的做法是将历史数据输入量化系统,让量化系统根据既定的交易逻辑进行操作,观察和分析交易结果,找到问题 ...

  2. WeQuant教程—1.4 实践教学:比特币量化定投

     在wequant.io,为了让读者能直接体验量化系统的魅力,我们用前面的思路,实现了一套完整的量化系统和回测工具,这个系统非常简单,用户只需要把交易意志用策略表达出来,系统就可以自己完成交易效果的回 ...

  3. vue教程2-04 vue实例简单方法

    vue教程2-04 vue实例简单方法 vue实例简单方法: vm.$el -> 就是元素 vm.$data -> 就是data <!DOCTYPE html> <htm ...

  4. Directx11教程(42) 纹理映射(12)-简单的bump mapping

    原文:Directx11教程(42) 纹理映射(12)-简单的bump mapping        有时候,我们只有一个粗糙的模型,但是我们想渲染纹理细节,比如一个砖墙,我们如何在只有一个平面的时候 ...

  5. Directx11教程(19) 画一个简单的地形

    原文:Directx11教程(19) 画一个简单的地形       通常我们在xz平面定义一个二维的网格,然后y的值根据一定的函数计算得到,比如正弦.余弦函数的组合等等,可以得到一个看似不错的地形或者 ...

  6. Directx11教程(6) 画一个简单的三角形(2)

    原文:Directx11教程(6) 画一个简单的三角形(2)      在上篇教程中,我们实现了在D3D11中画一个简单的三角形,但是,当我们改变窗口大小时候,三角形形状却随着窗口高宽比例改变而改变, ...

  7. Directx11教程(5) 画一个简单的三角形(1)

    原文:Directx11教程(5) 画一个简单的三角形(1)       在本篇教程中,我们将通过D3D11画一个简单的三角形.在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作 ...

  8. AI趋势量化系统(Binance升级版)

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. B圈大跌行情,如何应对? 近期,伴随着美联储持续的加息进程,数字货币市场不论是市场焦点LUNA,还是BT ...

  9. 【小型系统】简单的刷票系统(突破IP限制进行投票)

    一.前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了 ...

随机推荐

  1. Flash完美跨域访问的方法

    先,你要确定以下几点,否则可能无法实现: 1.你要跨到哪个域,你必须能管理那域上文件,因为这里要放一个通行文件. 2.你的Flash如果只有SWF,那不一定能实现,因为有时,Flash的AS中,要加入 ...

  2. tasklist /m

    \>tasklist /m explorer*映像名称                       PID 模块                                        = ...

  3. tcpdump 筛选抓包

    安装 $ sudo yum install tcpdump 常用参数 -i interface: 设置抓取的网卡名(可以使用 -i any 抓取所有网卡的数据包) tcpdump -i eth0 -D ...

  4. UI系统综述:iOS的图形绘制、动画与runloop

    一.一条业务pipeline: 一个连接核心:coreanimation 二.两个进程: 1.app进程: 2.render进程: 首先,由 app 处理事件(Handle Events),如:用户的 ...

  5. iOS视图更新与事件循环

    iOS使用的是事件循环+标志更新(视图)机制. The View Drawing Cycle The UIView class uses an on-demand drawing model for ...

  6. 为什么 JVM 不用 JIT 全程编译?

    考虑到跨平台,所以无法使用AOT: 考虑到执行效率,所以无法全部使用JIT: 编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中:另一种是 ...

  7. python语言(三)文件修改、函数、json操作、监控日志代码、高效读取文件

    1.文件操作(2)   代码 f = open('a.txt','a') # "a" 如果源文件不在,会自动创建 f.write('abc') result = f.read() ...

  8. PHP - assert()

    Find and exploit the vulnerability to read the file .passwd.-------------查找并利用此漏洞读取文件.passwd. assert ...

  9. scala 学习笔记--闭了个包

    object Test01 { def main(args: Array[String]): Unit = { //普通函数 val squ=(x:Int) => x*x // ps:_的简写形 ...

  10. [React] Use CSS Transitions to Avoid a Flash of Loading State

    Based on research at Facebook, we know that if a user sees a flash of loading state, they perceive t ...