1

我想显示 Amibroker 在我的网站上生成的买入/卖出信号。我尝试了很多东西,但我找不到解决方案。

如果我可以将图表流式传输到网站会更好。

问题是,我不知道如何访问 Amibroker 的 API。(他们甚至有吗?在他们的功能页面中提到,但没有看到任何相关文档)。

然后,我不确定如何将它连接到我的网络服务器。

4

2 回答 2

1

步骤 0:首先获取AmiBroker领域知识

这一点,您可以自己做,投入自己的时间、汗水和泪水,或者您可以立即通过聘请领域专家外包核心知识。

在此处输入图像描述

如果您选择前者,请从文档开始。软件架构及其相关工具都在那里得到了很好的描述。

在此处输入图像描述


第 1 步:定义您的项目目标

同样,这一步不能跳过。正如您所期望的,人们可以草拟、完善和维护自己的项目定义,或者外包项目管理可用于这种专业知识的组合{PM|QA|CM}


第 2 步:从 (1) 中定义的已识别功能单元开始

这里有一个简单的出口商单位代码:

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();

第 3 步:继续前进,直到完成并整合设定的目标

就这么简单,只要你们都知道什么和诀窍。

于 2016-07-03T02:16:44.330 回答
1

在 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 插件。我永远无法让它为我工作。

于 2018-01-22T07:49:03.283 回答