分类
中国汇市

程序化交易中常用的趋势指标及交易方法

钛学术 (全网免费下载)

如何建立程序化交易模型?

交易者必须明确地了解交易策略是什么类型,是套利交易还是投 机交易呢?假如是投机交易,是选择短线交易,还是长线交易呢?如 果是套利交易,是期现套利还是跨期套利呢?接下来要依据交易策略 的类型,选取相关的期货品种或是期货合约。假如是投机交易,一般 情况下选择主力合约进行交易;然而假如选择的是跨期套利,那么交 程序化交易中常用的趋势指标及交易方法 易者可能要选择主力合约与次主力合约,或是依据需求选择相关的合 约,在股指期货市场中,最多能够选择四只股指期货合约进行综合套 利;至于期现套利,则期货方面往往选择主力合约,现货方面选择的 程序化交易中常用的趋势指标及交易方法 种类相对比较多,比如交易者能够根据自己的需要选择合适的股票组 合或基金组合或者股票基金双组合等一些方式。最后是依据交易策略 设计交易模型,让策略程序化,在此过程中,交易者通常需要很多参 数,比如运用周期、资金比例等。

通常来说,程序化交易的绩效是由两个因素所决定的:一是技术 指标的选择;二是指标对于行情的灵敏度。在技术指标部分中,就有 很大的差异,一般来说,就看投资者的交易偏好来说,如果是以趋势 系统当作出发点,那么运用的操作指标可以趋向指标(MACD)、动能 指标(MTM)等为主轴.,搭配其他交易规则进行操作;反之,如果以 逆势系统作为出发点。那就可以考虑以RSI, KD等指标为主轴,再搭 配其他止损的机制作为辅助就行了;而对于形态系统,是因为每个人 对于盘势形态的看法不太一样,所以此种策略在撰写下难度比较高。 上面所说的三种操作策略其中以趋势系统较被广泛运用,初学者可以 这种系统作为出发点寻找赚钱的策略,然后再进行修改。

一般来说,在指标的选取上应该要注意到参数的设定不能过分最 佳化,否则的话就有可能形成最好范例的问题,然而以往的优异绩效 不能代表将来的绩效,所以当我们建立了一项策略,就应该要注意其 他参数的绩效是否稳定,这样才能够规避过度优化的迷思。

历史检验在程序化交易设计整个过程相比之下是较为简单,交易 者仅仅运用历史数据对程序化交易模型加以检验。然而必须注意一点: 历史检验必须把交易成本考虑进去,特别是一些日内的高频交易,交 易成本将会吞噬很多盈利。在检验时,对各种检验指标进行统计是有 必要的,比如,交易的盈利与亏报比率、最大资金回撤比例、最大连 续亏损次数、最大连续盈利次数与交易最大盈亏比等。接着按照各类 检验指标对交易模型加以设计调整,对相关参数加以优化。另外,交 易者的风险承受能力也必须考虑进去。最后则是交易模型每一次进行 调整以后,都必须重新对其进行历史测算,直至交易模型达到一个相 对理想的状态。

建立一个完整的程序化交易模型有太多的方法,然而这其中应该有策略设计、历史检验、实盘验证和交易执行四个过程。

程序化交易模型经过历史数据的检验以后,模型并不能直接运用, 还要经过实盘验证,来观察交易模型的稳定性和可行性。历史检验和 实盘验证有太多的不一样,在历史检验的过程当,所有的买卖指令 均是依照可成交来计算的,然而在实盘当中,极有可能经由某种原因 影响而不能成交,比如在下单的时候,形成滑价造成成交失败等。在 进行历史检验时许多问题都会被忽略,过于理想化,因此许多问题只 有在实盘模拟验证时才可能出现。

在实盘模拟验证中发生问题的时候,就应该返回到交易模型的策 略设计步骤加以修改,有的时候如果问题是很严重的,就必须推翻模 型,对交易模型进行重新设计。当交易模型进行调整以后,重复进行 第二、第三过程,唯有如此,才能设计出好的程序化交易模型。

程序化就是一种交易工具,可以帮助投资者积累财富的工具,然 而并不是一种暴利的赚钱方式,程序化模型有好坏的区别,程序化盈 利的前提就是要有一个好的模型,程序盈利的关键是坚持执行,程序 盈利的精髓就是在确定最终运用模型以后,彻底地放弃投资者对金融 市场的一切理解和交易技能。

换言之,当投资者有了一个很好的交易策略,是否盈利的另一个 关键因素在于下单的技巧和纪律。在整个交易过程当中,纪律大约就 占据了成败的六成,至于其他的四成就决定在策略,尽管程序化交易 的发明,能够有效摒弃人性的弱点,然而当交易者在操作中,如果不 按照有效指标信号而进出场,虽然有稳赚不赔的策略也很难让你发财, 所以,当信号出现买入或卖出的时候,作为交易者一定要遵守信号进 行操作,这样才能有机会根据策略的目标而获利。

听出买卖点,一招擒龙头,关注公众号 “老韩实盘”:laohanshipan(点击可复制) 回复关键词 “指标” 既可以免费领取一套龙头股战法合集!

程序化交易中常用的趋势指标及交易方法

近几年来,高频交易在全球金融市场迅速发展,引起了金融行业的广泛关注.高频交易的"高频"特征,导致其交易无法通过人为手动进行操作,只能借助计算机程序化交易系统实现.因此,构建合理的高频交易策略模型是十分必要的.MACD(Moving Average Convergenceand Divergence)是一种判断股票、期货、外汇买卖时机和进场点、跟踪价格运行趋势的常用分析工具.基于MACD指标构造出适用于高频交易策略建模的平稳性指标,并在对数增量平稳的假设下验证了新指标的平稳性.最后,通过实际应用创建交易策略来验证它的有效性和获利性,提出一种在高频交易中新的交易思想.

钛学术 (全网免费下载)

中泰证券:程序化交易系统构建与风险控制

量化交易在中国的蓬勃发展、人工智能在投资领域的应用、交易工具的丰富,使得程序化交易在证券市场越来越受欢迎。程序化交易能够更快地、更有纪律性地执行策略,从而减少冲击成本、降低情绪影响。规模较大的私募,由于具有交易策略多样性、交易市场广泛性、交易品种复杂性等特点,对程序化交易的需求显得尤为迫切。此外,程序化交易中的做市商策略、算法交易策略也对降低市场流动性风险起到积极作用。不过,历史上也曾发生过因为软件bug导致的亏损及个股闪崩等事件,这些风险事件大多是在程序化交易过程的关键点上没能做好检查和风险控制所致。如果能从系统构建开始就有意识的做好防范,使用正确的编程方式,就可以在很大程度上避免风险事件的发生。笔者希望本文能起到抛砖引玉的作用,吸引更多的程序化交易工程师分享经验,共同降低程序化交易的风险。

程序化交易系统的构建

程序化交易是把可量化的分析方法,用计算机编成交易策略进行自动下单交易,程序化交易是量化交易的一部分。根据证监会2015年10月9日公布《证券期货市场程序化交易管理办法(征求意见稿)》里的定义,程序化交易是指通过既定程序或特定软件,自动生成或执行交易指令的交易行为。在设计上一般包括行情网关、交易网关、策略器管理、风控及头寸管理器、监控客户端等若干环节。

1.行情网关

行情网关指的是连接不同的行情接口的适配层。针对股票类的行情网关有宏汇、国泰安、交易所原始行情接口、券商提供的接口等;针对期货的行情网关有CTP、飞马、飞创、飞鼠、盛立金融、艾克朗科等,还有各种境外行情。在行情网关的设计上,要充分考虑期货、期权、股票的兼容性,并且通过一致的行情结构体来统一,同时在行情上要保存好交易所的时间戳和本地时间戳。

行情网关的使用中,要注意以下4个风险点:过期的行情会导致错误的信号;行情断开或者重连会导致信号延迟或者错误;超过涨跌停价格可能产生错误的行情;多路行情源引发的行情重复问题。

2.程序化交易中常用的趋势指标及交易方法 交易网关

在交易网关上,除了下单外,成交回报是另一项重要内容。成交回报信息是策略重要的驱动因素,需要根据成交回报对订单状态进行更新。在更新状态的时候要注意顺序问题,不要让前面的状态覆盖了后面的状态。当订单收到全成、全撤、部撤、废单、拒单等状态时,需要将订单设为IsDone状态。所有IsDone状态的订单,状态形式不能再做改变。

在交易网关接口处理上要注意成交回报的顺序。乱序的成交回报如果没处理好,会导致已终结的订单被中间状态覆盖,比如全成变成部成,会引发资金扣减错误和持仓错误等问题。

3.策略管理器

策略管理器是程序化交易最核心的环节,设计的好坏,直接决定了程序化交易系统的策略扩展性。策略管理器在不同的团队有不同的设计方式,比较建议的设计方式是:一套平台,多种策略。目前常用的策略主要是趋势交易、Alpha策略、套利策略、做市商策略等。有同时买卖数百只股票,对并发有要求的策略,也有对低延迟有高要求的做市商策略。不管是哪种,都需要在策略管理器层面尽可能的统一。在实践中非常重要的理念,就是“用配对交易的理念来设计系统”。如果策略管理器从一开始就能支持配对交易,那么对其他策略的兼容性就会很好。

程序化交易的触发方式一般有两种:信号触发和定时触发。定时触发比较简单,这里重点谈谈信号触发。

复杂事件处理引擎CEP。CEP又称复杂事件处理引擎,主流产品有Apama CEP、Sybase CEP等,在国外共同基金使用较多,而对冲基金用的较少。在程序化交易系统里使用CEP的少之又少,最根本的原因在于CEP过于复杂,过于复杂的系统会带来高延迟和更多的不确定性。

消息队列MQ。消息队列的代表是互联网体系的Kafka、RocketMQ等,一般称之为分布式消息中间件,大多用在互联网的高并发场景,在低延迟的程序化交易系统里用的很少。程序化交易多为单体应用,在一台服务器上跑完策略,更看重低延迟而不是分布式和高并发。

进程内RPC。在单台服务器上策略模块的通讯多采用进程间通讯,也有直接在单个进程内通过无锁队列来实现消息派发,不过在高频交易中的实践里,使用mmap做进程间的通讯基本已经达成一致。mmap也是进程间通讯最快的方式。

4.策略调度

5.风控及头寸管理器

风控是策略非常重要的环节,分为三个层次:一个是账户层面的风控,包括账户总体盈亏、挂撤比、最大下单数、安全垫等;一个是策略层面的风控,一个账户里可能运行多个策略,每个策略都有自己的风控指标;再就是品种层面的风控,每个品种都设置最大可用资金、最大下单数、未成交订单数等;

6.风险指标

在风控环节一定要加上涌浪单检测来防止乌龙指。策略交易系统一般是行情和成交回报驱动策略,这也就决定了不太会有单品种频繁下单或者单品种在市场上暴露过多未成交订单。如果出现上述情况,往往是交易系统本身或者策略本身出现逻辑bug,这时应该做对应的拦截,防止对市场造成冲击。

7.资金扣减

交易系统里一定要设置资金扣减,在资金扣减上要注意市价单的处理。对于市价单,要用涨停价格来扣减,然后需要根据成交回报来更新实际的资金占用,所以这里成交回报的顺序和鲁棒就显得尤其重要。如果收到全成后又收到部成,并且没有仔细处理的话,容易导致资金和持仓错误。有些工程师会不注意策略交易系统的资金控制,认为柜台会做校验不会透支,然而如果有配对交易,比如期现套利,股指端成交后,现货发现透支,将会导致风险敞口的发生。

8.监控客户端

9.各类信号监控

10.异常流程处置

开发技巧

策略交易系统的开发模式与其他系统最大的区别在与对异常和不确定性的低容忍,“所有事情都要做到能够被解释”是一条很重要的纪律。在开发或者测试过程中发生的任何异常情况都要仔细分析背后可能存在的原因,往往某个隐藏的bug会导致生产上的亏损,所以不能接受任何“我这里是正常的”“重启试试”等逃避问题的行为。

1.防御式编程

防御式编程是提高软件质量的有益辅助手段,也是《代码大全》里的推荐方式。防御式编程的主要思想是:子程序不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想将可能出现的错误影响控制在有限的范围内。“假设你面对的是一个残酷的非法数据世界,你要足够鲁棒来保证你不受侵害”。可以通过接口类和内部类将数据隔离,在接口类上做数据的判断和检查,包括行情的判断、文件数据的判断、用户输入的判断等。

2.大量使用断言

编写代码时,我们总是会做出一些假设,断言就用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,使用断言可以创建更稳定、品质更好且不易于出错的代码。断言只出现在Debug版本里,不会影响Release版本的性能。可以使用断言判断指针不为空、使用断言判断收到全成或部撤后不再收到成交回报、使用断言判断在成交回报回来查表时候一定能找到对应订单、使用断言判断行情的时间戳是顺序的等等,在每个逻辑关键点加上断言会极大程度上保障系统的健壮性,也能在重构过程中充满信心。

3.用单元测试用例来覆盖

单元测试也叫白盒测试,通过编写对应的测试代码来验证代码功能的正确性。单元测试是保障代码质量的重要手段,越早进行测试,未来修复bug的代价越少,但是单元测试也是“短期利益与长期利益冲突”的典型。长期来看有好处,短期却需要付出更多的劳动。单元测试有以下三点好处。

尽可能早的测试功能正确性。一个功能越早被测试,就能越早发现问题。当系统构建成功后发现bug,通过日志或者各种调试工具来修正错误的代价极其高昂,而早期通过单元测试代码覆盖,能尽可能的保障每个功能的健壮。

驱动代码编写规范,独立可测。当开始编写单元测试用例的时候,为了更好的测试功能类,会尽可能的把类写的独立可测,会尽可能的降低代码的耦合程度,也会更好的遵循单一职责原则(SRP),总而言之就是通过编写更多的单元测试来驱动代码写得更好。

单元测试是重构的重要保障。单元测试案例随着时间流逝会越积累越多,这也是重构的重要保障。当重构完并且通过所有单元测试,就会对产品的品质更有信心,也会更有信心去重构系统,而缺乏单元代码覆盖的系统重构起来困难重重,重构代价很高。

如何进行短线交易: 5种有效策略

CMC Markets

投资衍生品具有很大风险,并不适用于所有投资者。您并不拥有标的资产及其相关权益。我们建议您征询独立顾问的意见,确保您在交易前完全了解可能涉及的风险。本网站仅提供一般性信息,并没有考虑到您特定的目标,需求及财务状况。因此,在您决定交易或继续持有任何衍生品产品时,您应当结合您的个人目标,需求和财务状况进行考量。。对于我们的服务和任何收费,所有细节都包含在我们的金融服务指南中,您同样可以通过以上渠道获取我们的金融服务指南。我们的CFD目标市场确认函对我们的金融产品适用人群有详细描述。在您决定交易或继续持有任何金融产品前,请务必阅读我们的产品披露声明、信息备忘录(适用于CMC Pro用户)和其他相关文件。所有的这些文件均可在cmcmarkets.com.au上获得,或者您可以致电1300 303 888 与我们取得联系。
CMC Markets Asia Pacific Pty Ltd (ACN 100 058 213), AFSL No. 238054, the CFD issuer。

Apple, iPad, 和 iPhone 是苹果公司(Apple Inc.)在美国和其他国家的注册商标。App Store是苹果公司(Apple Inc)的服务商标. Android是谷歌公司(Google Inc.)的注册商标。