用于为 QUIK 编写交易机器人的算法语言 QPILE

Программирование

用于为 QUIK 编写交易机器人的算法语言 QPILE。
交易机器人可以用特定语言编写,类似于程序代码。QPILE 就是其中之一,本文将考虑这种语言,比较 QPILE 和
LUA 语言,并给出这种语言的机器人示例。

关于 QPILE 的一般信息

QPILE 是 QUIK 可编程接口和逻辑环境的缩写。

这是 QUIK 工作站解释的一系列命令。它主要用于计算证券组合的价格。该语言还用于:

  • 在经纪人的桌面和他们的投资组合中动态重新计算客户资产的价格。在后一种情况下,它们的总价格也会重新计算;
  • 使用他们自己的算法和数据查找缺失的保证金贷款指标;
  • 制定正确的交易策略。

该语言描述了表格的结构:列和行的指定、公式。在后者中,可以使用数学运算、变量、来自其他表的数据进行计算。从 QUIK 服务器或用户磁盘加载的程序代码由语言解释器处理,计算公式中的值。一个程序的表有一个数据源,但计算不重复,不影响系统效率。使用 QUIK 表时,QPILE 上的表具有标准功能。工作场所的 QUIK 配备了 QPILE 代码调试器。https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm 该语言将允许您描述具有给定结构的新表格,突出显示具有某些值的单元格,基于数学和逻辑表达式计算字段。用户将收到声音信号或短信形式的通知。QPILE 上的表格可以通过 ODBC 和 DDE 服务器进行编辑、打印、复制、导出。初始数据来自 QUIK 表:

  • 交易,包括执行交易和非个人交易;
  • 场外交易的订单,包括止损订单和订单——结算交易的交易报告;
  • “客户组合”、“买/卖”
  • 通过货币、交易账户、工具从参与者的头寸中获取数据。

基于 QPILE 的表格不能通过上下文菜单复制到文本文件并导出到技术分析系统,也不能基于它们开发图表。基于 QPILE 的表不能被过滤或排序。

使用表格

要加载程序代码,您需要选择服务菜单,然后选择 QPILE 脚本。您也可以使用 Ctrl+F11 组合。之后您需要单击“添加”并选择所需的文件。它具有 .qpl 扩展名,其名称将出现在可用脚本列表中。
用于为 QUIK 编写交易机器人的算法语言 QPILE如果程序出现错误,系统将在“消息窗口”中发出通知,其中将包含有缺陷文件的名称和出错的行号。如果在文件中未发现任何故障,则字段中将显示以下数据:

  • 表名;
  • 列数和客户数;
  • 标识符和客户端列表;
  • 参数列表和文件的源代码。

用于为 QUIK 编写交易机器人的算法语言 QPILE“本地下载”按钮将允许您从文件中获取表,“上传到服务器”会将程序发送到服务器,以便所有用户都可以访问它。要创建表,请单击创建表。在“可用脚本”中选择您需要执行的程序,通过“客户端过滤器”设置行数,定义所需的列及其顺序。
用于为 QUIK 编写交易机器人的算法语言 QPILE暂停和恢复计算、再次开始计算并在调试模式下、将描述保存到文件、演示公式和脚本参数在上下文菜单中可用。

QPILE 构造

数据类型

  • 字符串 – 字符串。
  • Double 是一个浮点数。
  • 集合 – 一个集合。
  • Map – 关联数组 – 允许您通过键获取信息的对序列。

表达式

应用了加法、减法、乘法、除法的算术运算。还使用了逻辑表达式“and”、“or”、等于、more、less、不等式、条件结构“if … then …”。

功能

函数可以位于程序中的任何位置并具有不同的名称。总共有 18 组数学函数和函数可用于获取表和参数的值、关联数组、表列表和其他任务。一年级:

  1. 允许您返回参数的正弦、余弦、正切、余切的值、计算参数的指数、生成随机数等的数学函数。
  2. 一般命令:NEW_GLOBAL 初始化全局变量和 MESSAGE 打开消息。

可使用的功能:

  • 对象集合(Collection)。它们允许您创建新集合、返回所需数量的元素、替换或插入所需的值。
  • 关联数组(MAP)。帮助创建和管理阵列。
  • 文件– 使用文本文件,维护程序的日志。文件名可能包含它的路径。
  • 字符串
  • 图表。函数 GET_CANDLE 访问蜡烛数据,函数 GET_CANDLE EX 返回关联数组。
  • 应用程序。创建订单并将其发送到交易系统。
  • 标签。它们的构造和安装在图表上。添加、删除一个或所有标签,获取和设置特定标签的参数。

还有以下功能:

  1. 用于访问任意 QUIK 表的行和可用参数列表。访问工作场所表数据。其中包括返回 MAP 的 GET_ITEM 和返回条目数的 GET_NUMBER_OF。
  2. 与可编程表一起工作。这些命令对 OWN 表进行操作。它可以被上一段中的标准函数和这些函数读取。该组包括用于添加、修改和删除带有索引的行以及完全清除 OWN 表的命令。

要获取值,请使用:

  1. 当前交易表。使用 GET_PARAM (_EX) 命令获取交换信息参数。
  2. 报价窗口。获取工具报价的值。
  3. 按工具和货币排列的头寸表。通过代码获取客户、公司、工具、存款账户的数据。

服务功能——返回当前交易时段的日期、关联系列、当前日期和时间、确定连接状态、中断计算模式。

调试程序

在“调试”窗口中逐步控制程序的运行。它从上下文菜单“在调试模式下开始计算”打开。也可以用breakpoint()命令打开,程序行会以红色高亮显示。该窗口包含带有程序代码和变量值的字段。窗口底部有“下一步”、“继续执行”、“停止计算”按钮。按 F5 将继续执行程序,Shift + F5 组合将停止调试,F10 键将指向下一行。

QPILE 还是 LUA?

LUA 是一种用于创建交易机器人的新编程语言。与 QPILE 一样,它在 QUIK 终端中实现。https://articles.opexflow.com/programming/lua.htm 一个致力于开发交易机器人的网站展示了 LUA 语言相对于 QPILE 的优势。因此,它可以充当未编译的脚本和字节码,配备开发人员工具和面向对象的编程机制。用其他编程语言编写的对象可以连接到 LUA 程序。LUA 提供了 8 种数据类型,包括元表。LUA 语言是多线程的、快速的,并且事务和终端事件是异步的。LUA 比 QPILE 更常见,并且已经为它编写了许多扩展。

QPILE 语言现已弃用。论坛上的专家建议使用 LUA。尽管有用且有效的程序仍在使用中。

不过QPILE语言相对LUA来说比较简单,所以如果你没有编程经验,还是选择QPILE比较好。在这种语言中,如果您不需要执行复杂的计算,您可以编写一个简单的机器人。

如何在 QPILE 上创建交易机器人?

要创建交易顾问,您将需要以下程序:

  1. 它的快车。
  2. 记事本++代码编辑器。
  3. QPILE 指南。
  4. 用于 Notepad++ 中代码检测的 XML 插件。

下载并安装这些程序。通过将 userDefineLang.xml 放置在路径 C:\Users\User\ AppData\Roaming\Notepad++\ 中来启用语言语法
用于为 QUIK 编写交易机器人的算法语言 QPILE首先,让我们创建以下交易策略。脚本应每分钟计算最后几根蜡烛的 Hi 和 Low,检查工具的当前价格。如果工具的价格达到该期间的最大值或最小值,则在所需方向开仓。当收到空头信号时,多头头寸自动平仓。机器人使用 GAZP 工具,时间范围设置为 1 分钟。高低测量深度设置为 5 根蜡烛。要进入多头,需设置一条规则与当前价格与该时段最大值的交集。如果当前价格超过这 5 根蜡烛的最小值,机器人将进入空头。在 Notepad++ 中编写一段代码,其中包含基本设置和服务器日期和时间。这段代码如下图所示。
用于为 QUIK 编写交易机器人的算法语言 QPILE前 4 行代码构成程序头。第 6 行和第 44 行之间是程序的主体,其中包含机器人的内容。第 7 – 12 行包含用户设置,其中包括工具、组和客户的代码,MICEX 上的帐号。这些值在程序执行期间不会改变。第13-16行是变量的初始值。它们将在每次迭代时重置为零。第 17 – 21 行包含使用服务器日期和时间的指示。此数据被传递给 DATETIME 函数并转换为文本格式。第 22 – 29 行将接收到的数据发送到表中。必须保存代码并且必须指定 qpl 扩展名。
用于为 QUIK 编写交易机器人的算法语言 QPILE通过按 Ctrl+F10 并选择生成的 qpl 文件,在 QUIK 中打开程序。使用 Ctrl+F11 组合打开“使用投资组合”窗口并将投资组合计算周期设置为 5 分钟。按 Ctrl+F12 设置要在表格中显示的列。图为机器人的工作成果。
用于为 QUIK 编写交易机器人的算法语言 QPILE让我们在我们的程序中添加更多的函数和条件。
“用户设置”块补充了 NUMBER 和 INTERVAL 变量,将用于获取最后 N 个柱的功能。DATETIME 函数设置服务器日期和时间,并从中调用当前日期和时间函数 CURDATE 和 CURTIME。当前时间在第 24 行被转换为一个数字。第 26 行设置算法从 10:00:01 到 18:40:00 UTC 运行的时间。
用于为 QUIK 编写交易机器人的算法语言 QPILE
用于为 QUIK 编写交易机器人的算法语言 QPILE
用于为 QUIK 编写交易机器人的算法语言 QPILE用于为 QUIK 编写交易机器人的算法语言 QPILE大多数情况下,指标、振荡器、统计计算是由图表的最后 N 根蜡烛计算的。QPILE 没有收集 N 个周期前的蜡烛数量的功能,但是有一个 GET_CANDLE 功能,可以按日期和时间以文本格式访问图表上的蜡烛。我们的代码包含获取最后 N 根柱线 OHLC() 的函数。它使用嵌套在 COLLECTION 列表中的最后一根蜡烛的参数创建一个集合。程序检查 INTERVAL 值,如果它不在 0…60 范围内,则会显示一条消息,指出该值不对应于允许的范围。在第 88 行创建了一个带有蜡烛的 MAP 集合。一个 FOR 循环使用从新蜡烛到旧蜡烛的 INTERVAL 步骤轮询图表到所需的深度。在第 90 行,循环声明后,机器人返回一个间隔。当您使用 GET_CANDLE 获得蜡烛时,使用 INSERT_COLLECTION_TEAM 函数将其放入 BARLIST 集合中。作为 OHLC() 命令操作的结果,BARLIST 被补充为来自工具图表的最后一根蜡烛,数量为 NUMBER。集合中的元素数由 GET_COLLECTION_COUNT() 命令请求并由 BARCOUNT 变量报告。服务器日期、时间、INSTRUMENT 和 BARCOUNT 变量的值由 OUTPUT 中的 SET_VALUE() 函数报告。该数组由 CREATE_MAP() 命令创建。数据落入自定义表中,如下图所示。INSTRUMENT 和 BARCOUNT 变量的值由 OUTPUT 中的 SET_VALUE() 函数报告。该数组由 CREATE_MAP() 命令创建。数据落入自定义表中,如下图所示。INSTRUMENT 和 BARCOUNT 变量的值由 OUTPUT 中的 SET_VALUE() 函数报告。该数组由 CREATE_MAP() 命令创建。数据落入自定义表中,如下图所示。
用于为 QUIK 编写交易机器人的算法语言 QPILE

QPILE 上的交易机器人 – 现成的解决方案

移动平均机器人

演示机器人不适合真实交易。
用于为 QUIK 编写交易机器人的算法语言 QPILE机器人包括 5 个参数。DATE、TIME、PRICE 标识符值设置为 30 级。MOVING 和 TP 标识符设置为零精度。在 QPILE 下编写的移动平均线机器人代码:

N. Moroshkin 位置计算器

一个程序,用于计算当前卖价和卖价下的最大允许回撤水平和多头和空头头寸的目标。水平是针对建仓量的 2 个值计算的。机器人在从开盘价开始一步分配止损单时找到允许的头寸交易量,并计算在柱的向上方向开仓。找到的水平被输入到终端窗口,随后反映在价格图表中。对于给定的工具,交易是固定的。如果开仓,机器人开始计算其参数。根据仓位的变化,调整分配的订单。
用于为 QUIK 编写交易机器人的算法语言 QPILE
用于为 QUIK 编写交易机器人的算法语言 QPILE

音量过滤器

一个机器人投资组合,用于计算蜡烛交易量的算术平均值,并将其与 X 系数的平均产品进行比较。在选定的时间段内与绘制的图表一起正常工作。
用于为 QUIK 编写交易机器人的算法语言 QPILE

期权希腊人

用于计算和显示“希腊”选项的投资组合。它与 Black-Showers 方法不同。
用于为 QUIK 编写交易机器人的算法语言 QPILE

QUIK的TRIX交易机器人

该程序基于TRIX指标。当指标收于零线(指定水平)上方时,机器人采取多头头寸。仓位通过止盈、止损或追踪止损平仓。

M4 预处理器

用于使用 QPILE 和 Lua 的程序。包括带有可执行文件、文档和带有正则表达式解析的 DLL 文件的档案。要使用该程序,您需要将可执行文件解压缩并将 regexp2 放在 C:\Windows 路径中。QPILE for QUIK 课程:https://youtu.be/vMTXwDUujpI 在 Quik 终端中安装 QPILE 脚本:https://youtu.be/0B7qL8Svh7I QUIK 系统工作站位于链接 – https://euvgub.github.io/quik_user_manual/ch8.html。QPILE 是一种过时的语言,但非常简单,即使是新手交易者也可以使用。长期以来已经证明了自己的交易机器人和程序继续致力于它。但是,对于更复杂的任务,最好使用 LUA。

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    回复