7

我想使用 python 读取 Amibroker 股票代码的价格交易量数据。我在谷歌上找不到任何有用的东西。任何人都可以帮忙吗?

4

4 回答 4

2

Cool:只是毫不犹豫地完全打开美味糖果的盒子

与其他交易框架一样,AmiBroker 可以提供数据,但它是一个紧凑(约 3.5 MB .EXE+ .DLLs)、性能优化的可执行文件,与 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的包装器,并且实现了这一点,您的想象力是与.ZeroMQnanomsgpython

  • python-问,AmiBroker-回复
  • AmiBroker-问, python-回复
  • AmiBroker-问, remote-GPU-回复
  • AmiBroker-询问、 remote-AI/ML预测和发布交易设置/交易管理的目标(以低延迟时间工作 - 数十[ms]- 适用于甚至低强度的 HFT 策略),
  • AmiBroker- 发布、 remote-ComputingGrid处理并向其他任何人发出信号以进行任何后期处理
于 2016-08-31T15:22:41.093 回答
1
于 2017-10-18T04:05:50.013 回答
1

我不确定你的情况是什么,但你有几个选择。

最终,关于股票的所有信息都存储在 AB 数据库中,您可以从 AFL 访问该数据库。因此,要将值导入 Python,您可以创建一个 Python 代码可以读取的文本文件。

您的下一个选项是直接与 AB COM 对象交互,请参阅指南。我不知道如何在 Python 中做到这一点。

这是引用下的 COM 对象指南:

报价类代表一根价格数据

https://www.amibroker.com/guide/objects.html

下面的链接是我发布的关于 AB COM 互操作的另一个答案的想法。

C#中CreateObject的等效代码

塞斯莫

于 2016-04-04T08:22:31.490 回答
0
//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)
于 2022-02-17T08:55:11.207 回答