In this guide, we will explore the structural "top" tier of AmiBroker data plugin development, breaking down the C++ SDK essentials and how to optimize your source code for real-time performance. 1. The AmiBroker Development Kit (ADK)
This is the "engine room." When AmiBroker needs data for a chart, it calls GetQuotes . A high-performance plugin source code should implement here. Instead of hitting your API every time a user scrolls, the plugin should store data in a local buffer. 3. Real-Time Streaming vs. Backfill
This identifies your plugin to the system. It returns the name, vendor, and type of plugin (Data, Indicator, or Tools).
Since AmiBroker may request data for multiple charts simultaneously, your internal data structures (like a std::map of symbols) must be protected by Mutexes or Critical Sections.
The "top" tier of plugins are those that handle both historical backfill and real-time "tick" data seamlessly.
Writing an AmiBroker data plugin is a rite of passage for serious systems traders. By mastering the ADK and focusing on thread-safe, cached data delivery, you can build a connector that matches the speed of the software it feeds.
Implement a robust logging system that writes to the AmiBroker "Log" window using SiteContext->LogMessage() . This makes debugging connection drops much easier.
AmiBroker is renowned among quantitative traders for its blistering backtesting speed and flexibility. However, the software is only as good as the data feeding it. While many commercial vendors offer ready-made connectors, developing your own using the source code SDK allows for unparalleled customization—whether you’re plugging into a proprietary API, a crypto exchange, or a niche local database.
While the official ADK includes a "Universal Data Plug-in" sample, it is quite basic. For more advanced implementations, developers often look toward:
When you look at the top-performing data plugin source codes, they all implement a specific set of exported functions. Without these, AmiBroker won't recognize your DLL. GetPluginInfo