
现代的交流技术性很强,吸引了IT专家的注意(例如,我对此主题
文章的积极讨论表明了这一点)。 许多人对编写交易机器人感兴趣,有人想尝试自己在交易所赚钱,有人不介意按订单进行交易。 今天,我们将讨论如何开发第一个此类产品-我们将讨论可能的技术堆栈,降低准入门槛以及将可能的损失降至最低的方法。
免责声明 :为那些至少已经大致想象了交易所的设备,存在风险的人提供的帖子,有机会尝试不花最后的钱,总的来说,具有常识。
探索可能的技术栈
如同在任何IT项目中一样,在开发用于在证券交易所进行交易的应用程序时,特定工具的选择决定了最终目标。 在开始开发交易机器人之前,您需要设计整个系统,了解其中将包含哪些模块,以及它们如何相互作用。
您是否编写了一个高频机器人,毫秒对于每个机器人都很重要? 交易系统将在哪些国家/地区运作? 是否只有交易引擎,还是仍然需要添加风险管理模块?
在每种情况下,技术集可能会有所不同。 QuantStart配置文件资源上的一篇文章中
介绍了一种很好的选择方法(当然,使用英语-最好掌握这种语言以开发金融应用程序)。
通常,您很可能必须从以下技术列表中进行选择:
- 大多数经纪人(不仅API)(这是我对这类工具的选择 )都具有C ++和/或Java接口。 也许您将能够找到社区代表/特定经纪人的客户使用C#,Python,R,Excel和MatLab编写的现成的连接模块。 但是您可能必须自己编写它们。
- 诸如uBLAS,LAPACK和NAG for C ++之类的库经常用于数据分析,NumPy / SciPy在Python中非常流行MatLab。
- 使用GPU(FPGA)开发高频机器人时,您很可能需要熟悉CUDA框架。
借助内置的编程语言来学习金融领域的发展细节
默认情况下,创建强大的交易系统是一个相当大的项目。 但是,如果您的目标原则上是要熟悉金融领域的发展,在创建交易机器人时研究各种要点,那么使用所谓的内置编程语言是很有可能的。
有些交易终端不仅可以用于以手动模式进行交易,还可以使用内置的脚本语言来创建简单的机器人。
俄罗斯股市上最受欢迎的终端之一是QUIK,它具有算法语言QPILE(QUIK可编程接口和逻辑环境)。 有了它,您可以自动化
简单的交易系统 。 同样在QUIK中,脚本语言LUA的解释器是内置的-称为QLUA。 它上的脚本既可以以源代码的形式下载到终端,也可以以已编译的字节码的形式下载到终端。
QPILE代码示例:
PROGRAM FirmCode = "MC0012300000" CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, "EQTV", "SUR") CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, "EQTV", "SUR") Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, "EQTV", "SUR") AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked If AvailableMoney > 0 Status = " " Else Status = " " SET_ROW_COLOR(ROWNAME, "RGB(255,138,138)", "DEFAULT_COLOR") End If END_PROGRAM
两种语言都有一个相当发达的用户社区,可以在官方
论坛上的线程中提问。
除了QUIK,您还可以通过
SMARTx终端在俄罗斯交易所进行
交易 。 它使用内置脚本语言TradeScript。 语法很简单,但是可用相当复杂的策略对可用单词和操作数进行编码。 这是TradeScript简单策略代码的样子:
Buy Signals # , TREND(EMA(CLOSE, 20), 15) = UP AND TREND(MACD(13, 26, 9, SIMPLE), 5) = UP Sell Signals # , TREND(EMA(CLOSE, 20), 15) = DOWN AND TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Long Signal # , TREND(EMA(CLOSE, 20), 15) = DOWN OR TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Short Signal # , TREND(EMA(CLOSE, 20), 15) = UP OR TREND(MACD(13, 26, 9, SIMPLE), 5) = UP
最重要的步骤:测试和调试
金融业的应用程序,尤其是交易所交易工具的开发由于以下事实而变得复杂:在这里,您必须为字面上的错误支付费用。 这不是为下一次Web启动编写代码,在这种情况下,故障可能会被忽略。 交易机器人代码中的任何错误都将导致金钱损失。 因此,调试和测试是创建此类软件的最重要阶段。
当然,您应该应用所有最佳实践,创建测试,正确进行代码接受(即使您只是在开发项目)。 最重要的是-在开始使用真实货币进行测试之前,先在虚拟货币上“驱动”该程序。
如今,许多俄罗斯经纪人向您提供的帐户与真实帐户几乎没有什么不同,但其中的钱是虚拟的,因此提供了免费的测试访问服务(例如,SMARTx终端开发公司提供了一种)。 通常,使用这种帐户时,您可以在主要市场进行交易-股票,货币,衍生工具-并与主要股票,期货等交易。
在某些情况下,您甚至可以测试借入资金(即杠杆)的交易-但是在创建第一个机器人时,问题仍然是是否有必要向其添加此类功能。
对于交易所交易应用程序开发人员的有用资源: