我想使用 python 读取 Amibroker 股票代码的价格交易量数据。我在谷歌上找不到任何有用的东西。任何人都可以帮忙吗?
4 回答
Cool:
只是毫不犹豫地完全打开美味糖果的盒子
与其他交易框架一样,AmiBroker 可以提供数据,但它是一个紧凑(约 3.5 MB .EXE
+ .DLL
s)、性能优化的可执行文件,与 Java 或 .NET 程序不同,它不需要任何内部 VM 来解释用户进程在字节码级别上,但在机器码级别上全速运行。
虽然 AB 为数据访问提供了多种集成选项,但我的建议——在过去 12 年进行定量研发之后——将是:去分布式(忘记花时间来实现对某些数据元素的特定访问(卷) 并且不要进一步依赖状态共享——而是开始使用智能进程间通信和智能代理间信令python
-asks、AmiBroker
-replies ad-hoc 等)。
Python 方面——免费(……无论是在localhost
大陆还是其他大陆上运行)
众所周知,根据扩展和工具/模块的可用性,这非常简单且非常灵活,这让我在这里直接跳过它,您先验地知道您在 python 方面需要什么,并且大多数需求已经实现或正在实现很简单地添加了一些模块扩展。
AmiBroker 方面——更难的部分
Tomasz Janeczko 写了很多关于 AB 集成的特定模式 -DLL
基于 - 的集成。为什么?DLL-s 允许在系统间通信架构中实现所需的平滑且完全可控的集成。
(cit.:) "... 将 ... 翻译成 C/C++ 语言并编译为
AFL
插件DLL
。这样做需要一些 C/C++ 编程知识,C/C++ 编译器(可以使用免费的 Visual Studio Express 或 GNU 工具)和 AmiBroker 开发工具包 ( ADK )
。ADK包含如何编写自己的AFL
插件的说明以及可以编译的代码示例。不过需要一些 C/C++ 知识
。ADK可从
http://www.amibroker免费下载.com/bin/ADK.exe(自解压 exe)或 http://www.amibroker.com/bin/ADK.zip(压缩包)
注意:ADK不适合初学者。它适用于程序员(即那些在他们的生活中已经写过一些 C/C++ 代码的人)。”
当心:
DLL
当使用 AmiBroker Development Kit ( ADK ) 编写插件时,它通常使用 Microsoft C 运行时库进行编译。“问题”是根据使用的编译器,DLL
操作系统需要不同版本的 C 运行时才能加载。
例如,Visual C++ 6.0 链接MSVCRT.DLL
在从 Windows XP 开始的所有 Windows 中很常见,因此您可以“忘记”安装运行时。但是,当使用更新的 Visual C++ 2005、2008 或 2010 编译插件时,目标(客户端)计算机上几乎不会出现所需的 C 运行时库。
为了加载使用 VC2005 或更高版本编译的插件,必须在客户端计算机上安装适当的运行库。运行时必须与编译器版本和用于编译的最终编译器服务包完全匹配DLL
,否则操作系统将不会加载DLL
. 适当的运行时 (vcredist.exe
) 位于:VCInstallDir\SDK\v2.0\Bootstrapper\Packgages\vcredist_x86
或VCInstallDir\SDK\v2.0\Bootstrapper\Packgages\vcredist_x64
类似目录中(取决于所使用的 VC 版本)。然后vcredist.exe
必须将此类文件与 DLL 一起提供给所有客户端以进行安装。 或者可以使用静态运行时库
进行编译。 有一个名为 Dependency Walker ( http://www.dependencywalker.com/ ) 的免费软件工具可以检查给定的内容DLL
DLL
需要操作系统加载。
另外——您绝对需要确保您的插件使用“多线程 DLL”运行时库。Godd 消息是,Visual C++ 编译器(2005 和 2010)不再允许选择单线程运行时。
所以 - 把你的DLL
“插件”目录,如果它没有出现在数据源列表中,这意味着它的位数(32bit / 64bit)与 AmiBroker 不匹配。
DLL
准备好使用 -mode 后,可以为几乎任何类似的智能消息传递框架等实现基于-modeDLL
的包装器,并且实现了这一点,您的想象力是与.ZeroMQ
nanomsg
python
python
-问,AmiBroker
-回复AmiBroker
-问,python
-回复AmiBroker
-问,remote-GPU
-回复AmiBroker
-询问、remote-AI/ML
预测和发布交易设置/交易管理的目标(以低延迟时间工作 - 数十[ms]
- 适用于甚至低强度的 HFT 策略),AmiBroker
- 发布、remote-ComputingGrid
处理并向其他任何人发出信号以进行任何后期处理
我不确定你的情况是什么,但你有几个选择。
最终,关于股票的所有信息都存储在 AB 数据库中,您可以从 AFL 访问该数据库。因此,要将值导入 Python,您可以创建一个 Python 代码可以读取的文本文件。
您的下一个选项是直接与 AB COM 对象交互,请参阅指南。我不知道如何在 Python 中做到这一点。
这是引用下的 COM 对象指南:
报价类代表一根价格数据
https://www.amibroker.com/guide/objects.html
下面的链接是我发布的关于 AB COM 互操作的另一个答案的想法。
塞斯莫
//Price Volume of the ticker (Formula: Close x Volume)
Price_Volume = C*V
//Price Volume of specific ticker (eg. SPY) (Formula: Close x Volume)
Price_Volume_SPY = foreign("SPY","C")*foreign("SPY","V")
//Yesterday Price Volume of specific ticker (eg. SPY) (Formula: Close x Volume)
Yesterday_Price_Volume_SPY = Ref(foreign("SPY","C"),-1)*Ref(foreign("SPY","V"),-1)