分类
美股期权交易基础

编写脚本并整合交易策略

算法框架:编写脚本并整合交易策略

Horizon offers the ability to develop and deploy proprietary algorithmic trading strategies within the Horizon framework. Clients can run the Horizon algorithms but can also easily script or directly integrate their automation trading strategies, in line with our ‘Trade Your Way’ philosophy.

From basic operations, such as sending orders, to highly sophisticated algorithmic trading strategies, Horizon Platform for Automated Trading automates every action and leverages all the features of the global Horizon Platform: pre-trade safety nets, basket trading, advanced order management, trading automatons, volatility management, pricing, position keeping, hedging, etc.

Horizon can trade across a wide range of structured products (vanilla to exotic), underlying asset classes (from equity to hybrids, and beyond), and 编写脚本并整合交易策略 product types (futures, options, warrants, CBBCs, In-Line warrants, capital protected products, etc.), and for high volume for each product. A key strength of Horizon is the ability to handle everything on a single platform: from monitoring and managing positions in a single 编写脚本并整合交易策略 view, to real-time automated trading, with embedded algorithmic capabilities.

你好,Pine脚本v5

V4V5转换器

脚本库

用户定义函数的默认值

与脚本库相辅相成的改进:可以为用户定义函数中的参数定义默认值,这有效地使它们成为可选的。在下面的示例中,我们说明了一个自定义函数 customPow() ,它将 编写脚本并整合交易策略 base 提升到 exp 的幂。如果调用函数时未指定 exp ,则使用2:

SWITCH

新的 switch 语句是对熟悉的 if 语句的一个转折。如果您曾经不得不创建一棵 if-else 语句的大树,您就会意识到使用 switch 实现所需的结果是多么方便。您可以在我们的参考手册中了解更多信息。在下面的代码中查看它的实际效果。它是我们内置的平均真实范围指标,它现在使用 switch 语句在其计算中提供不同的平滑算法:

绘图集

使用Pine绘图的生活质量的重大改进:新的 line.all 、 label.all 、 box.all 和 table.all 内置阵列变量始终包含脚本绘制的所有指定类型图形的ID。

While

v5附带的另一个期待已久的Pine功能是 while 循环。 while 语句创建一个循环,当条件为假或在循环中使用 break 命令时,该循环将停止。

脚本的 while 循环会一直执行,直到在上涨和下跌交易量中都找到所需的交易量,而且我们还没有回过头来超过允许的最大K线数。该脚本还展示了添加到Pine v5的另一个功能: runtime.error() 。

runtime.编写脚本并整合交易策略 error()

runtime.error() 函数现在可以停止脚本的执行并在您可以在 Pine中定义的任何条件下显示错误消息。这对于想要防止用户错误使用指标的脚本创建者会派上用场。它还可以用作非正统的调试工具,例如在循环期间或从函数内部停止执行。

要使用新函数,只需在满足条件时调用 runtime.error() 函数即可。当它执行时,它将停止脚本并在指标名称旁边显示熟悉的感叹号。当用户点击感叹号图标时,将出现您在函数调用中使用的消息。

编写脚本并整合交易策略

程序化交易脚本

交易策略的种类

套利对冲策略

趋势策略

回归策略

高频策略

以上是从交易策略角度去划分的,在发明者量化交易平台上从策略设计角度去看,策略还可以分为:

单品种策略

多品种策略

多账号策略

多逻辑策略

交易所API接口

不需要验证的接口

一般称为“公共接口”,这类接口不需要验证API KEY(忘记API KEY是什么的可以翻下上篇文章)。这类接口一般是行情接口,例如查询深度行情、查询K线数据、查询资金费率、查询交易品种相关信息、查询交易所服务器时间戳等。简单说就是和你的账户基本毫无相关的接口可以大致确定就是一个公共接口(不需要验证)在发明者量化交易平台上,调用不验证的API函数时(封装交易所非验证接口,公共接口)即使API KEY配置错误,也可以正常获取到接口返回的数据。(因为不验证)

需要验证的接口

简单说就是需要验证的接口(通过API KEY验证),这类接口叫做私有接口。这类接口通常都和你的账户一些操作或者信息有关系,例如查询账户资产、查询账户持仓、查询挂单、查询转账、转币、调整杠杆、设置持仓模式等。这些操作都必须验证。在发明者量化交易平台上,调用需要验证的API函数时(封装的交易所需要验证的接口,私有接口),如果API KEY配置错误,调用接口时会报错,返回空值。

那么在发明者量化交易平台上这些接口是如何使用的呢?

那么一些行为、定义并不统一的交易所接口在发明者量化交易平台上如何使用呢?

是否在发明者量化交易平台API文档上的所有API函数都会产生网络请求呢?

再来说几个在发明者量化交易平台使用API函数时常见的问题、经验

容错

编写策略时对于接口返回的数据我们是都需要判断验证的,例如在发明者量化交易平台上获取行情这行代码(自己写程序直接访问交易所接口也是一样):var ticker = exchange.GetTicker(),假如我们需要用这个ticker变量(参看GetTicker函数返回的结构)里面的Last(最近价格)这个数据,我们需要使用var newPrice = ticker.Last这样取得数据(newPrice是啥?new:最新,Price:价格,对!合起来!)

通俗说:_C(funcName, param1, param2),调用正确,funcName 不带小括号,param1、param2是要给funcName这个函数传的参数。_C(funcName(param1, param2)),调用错误,通常萌新没认真看FMZ API文档都会这么写。

现货市价单买单的下单量

现货市价单买单的下单量也是很多萌新容易搞错的,上一篇中已经讲过现货市价单买单的下单量通常是金额(极个别的交易所可能是其它设定,一般FMZ上这些特殊的交易所设定都会在FMZ API文档上说明),例如我用OKEX V5 模拟盘测试:

期货下单时的方向

日志输出、交易信息展示

状态栏

日志栏

FMZ的API函数,可以产生日志输出的函数比如Log(. ),exchange.Buy(Price, Amount),exchange.CancelOrder(Id)等都可以在必要参数后跟一些附带输出参数,比如:exchange.CancelOrder(orders[j].Id, orders[j])这样就是在取消orders[j]这个订单时,附带输出这个订单信息。

指标函数的使用

算出的指标数据ma是一个数组,每个元素一一对应K线数组(records),即ma[ma.length -1]对应records[records.length - 1],以此类推。其它再复杂的指标也是同理,需要注意MACD这类指标。

XIndicator-使用Lua编写指标和策略交易系统

章志强 于 2018-02-11 16:16:43 发布 795 收藏 编写脚本并整合交易策略 2

Lua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。