我想显示 Amibroker 在我的网站上生成的买入/卖出信号。我尝试了很多东西,但我找不到解决方案。
如果我可以将图表流式传输到网站会更好。
问题是,我不知道如何访问 Amibroker 的 API。(他们甚至有吗?在他们的功能页面中提到,但没有看到任何相关文档)。
然后,我不确定如何将它连接到我的网络服务器。
我想显示 Amibroker 在我的网站上生成的买入/卖出信号。我尝试了很多东西,但我找不到解决方案。
如果我可以将图表流式传输到网站会更好。
问题是,我不知道如何访问 Amibroker 的 API。(他们甚至有吗?在他们的功能页面中提到,但没有看到任何相关文档)。
然后,我不确定如何将它连接到我的网络服务器。
这一点,您可以自己做,投入自己的时间、汗水和泪水,或者您可以立即通过聘请领域专家外包核心知识。
如果您选择前者,请从文档开始。软件架构及其相关工具都在那里得到了很好的描述。
同样,这一步不能跳过。正如您所期望的,人们可以草拟、完善和维护自己的项目定义,或者外包项目管理可用于这种专业知识的组合{PM|QA|CM}
。
这里有一个简单的出口商单位代码:
var oAB = new ActiveXObject( "Broker.Application" );
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
Ticker = oAB.ActiveDocument.Name;
file = fso.OpenTextFile( Ticker + ".csv", 2, true );
var oStocks = oAB.Stocks;
oStock = oStocks( Ticker );
var Qty = oStock.Quotations.Count;
for( i = 0; i < Qty; i++ )
{
oQuote = oStock.Quotations( i );
var oDate = new Date( oQuote.Date );
file.WriteLine( oStock.Ticker + "," +
oDate.getFullYear() + "-" +
oDate.getMonth()+1 + "-" +
oDate.getDate() + "," +
oQuote.Close + "," +
oQuote.Open + "," +
oQuote.High + "," +
oQuote.Low + "," +
oQuote.Volume
);
}
file.Close();
oAB.Quit();
就这么简单,只要你们都知道什么和诀窍。
在 AFL 中,您可以在代码触发信号时创建一个文本文件。例如:
for(i = 0; i < BarCount; i++)
{
if(Buy[i])
{
//create text file code here using fputs
}
}
关于 API,Amibroker 提供了两种访问 API 的方式。首先是上面提到的 COM 对象。您可以直接在 AFL 中访问它,但不建议这样做 - AmiBroker COM 文档。直接使用COM,我看不到如何导出生成的信号,似乎没有与从AFL获取信号相关的功能。
第二个是ADK。您可以编写一个 C++ 插件(它会放在 Amibroker 插件文件夹中,您可以从那里从您的 AFL 代码中调用 C++ 方法)。此解决方案的优点是您可以用 C++ 编写 AFL 代码,并从那里发送交易。我之前用过ADK,难度不是很大,但最后还是决定走另一条路。
另一种选择是通过将信息传递给 DLL 来从支持它的语言的外部代码访问 COM 对象,这与 ADK 解决方案相同,但如果您不热衷于 C++,则可以使用您选择的任何具有 COM 的语言支持。我使用这个选项。在我的 AFL 代码中,我有类似于以下内容的内容,我将在其中调用 C# dll 并将相关参数传递给它。在我的 C# 代码中,我使用 REST 将交易发送到 MetaTrader。
for(i = 0; i < BarCount; i++)
{
if(Buy[i])
{
SendTrade(args);
}
}
我已经给出了关于如何做到这一点的先前答案。
https://stackoverflow.com/a/37097609
您可以使用其他解决方案,其工作方式与我给出的第三个解决方案几乎相同。我知道人们已经用不同的语言创建了类似的解决方案,例如 Java、Python、Ruby 等。对于 C#,您可以查看DotNet for Amibroker。他已将 ADK 移植到 C# 中。是付费的。另一个是AmiBroker .NET SDK。他为 AB 做了与 DotNet 相同的事情——将 ADK 移植到 C#,但他的解决方案似乎更适合 Data 插件。我永远无法让它为我工作。