【问题标题】:How to show buy/sell signals of Amibroker on my webpage?如何在我的网页上显示 Amibroker 的买入/卖出信号?
【发布时间】:2016-07-02 06:56:38
【问题描述】:

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

如果我可以将图表流式传输到网站,那就更好了。

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

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

【问题讨论】:

  • 这篇文章与发布高质量问题的StackOverflow 推广的MCVE 方法 相去甚远。文本状态(cit.:)“他们有吗?...没有看到任何...”但没有关于更深入研究或代码的证据。更新您的问题以包含适用于 Ami/Web 的完全具有代表性的 MCVE,它可以重现您要求社区帮助诊断和修复的任何问题。 这是 StackOverflow 的首选方式,可以建设性地解决和讨论任何类型的 MCVE 相关问题。无论如何,欢迎来到这个伟大的知识社区 + 随时为我们的前进做出贡献。
  • 对不起,我是新来的。我已经删除了那句话。我尝试的代码在这里无关紧要,因为它根本不起作用。(这与调试无关。)我需要的是如何做到这一点的整体方法。

标签: algorithmic-trading metatrader4 amibroker


【解决方案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 documentation。直接用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 插件。我永远无法让它为我工作。

【讨论】:

    【解决方案2】:

    第 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 步:继续前进,直到完成并整合设定的目标

    这很容易,只要你们都知道什么和诀窍。

    【讨论】:

      猜你喜欢
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      相关资源
      最近更新 更多