Как показать сигналы покупки / продажи Amibroker на моей веб-странице?

Я хочу показать сигналы покупки / продажи, которые Amibroker генерирует на моем сайте. Я много чего перепробовал, но не смог найти решение.

Было бы еще лучше, если бы я мог транслировать графики на сайт.

Проблема в том, что я не знаю, как получить доступ к API Amibroker.(У них вообще есть такой? Он упоминается на странице их функций, но не видел никакой документации по этому поводу).

Тогда я не уверен, как бы я подключил это к моему веб-серверу.

2 ответа

Из 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.

Вторым является АДК. Вы можете написать плагин C++ (он будет находиться в папке плагинов Amibroker, и оттуда вы можете вызывать метод C++ из своего кода AFL). Преимущество этого решения в том, что вы можете написать свой код AFL на C++ и отправлять сделки оттуда. Я уже пользовался ADK, это не очень сложно, но в итоге я решил пойти другим путем.

Другой вариант - получить доступ к объектам COM из внешнего кода из языков, которые его поддерживают, путем передачи информации в DLL, аналогично решению ADK, за исключением того, что если вы не заинтересованы в C++, вы можете использовать любой язык, который вы выберете, с COM служба поддержки. Я использую эту опцию. В моем коде AFL у меня есть что-то похожее на следующее, где я назову C# dll и передам соответствующие дополнения. Из моего кода C# я использую REST для отправки сделки в MetaTrader.

for(i = 0; i < BarCount; i++)
{
   if(Buy[i])
   {
     SendTrade(args);
   }
}

Я дал предыдущий ответ о том, как это сделать.

/questions/8282408/kak-postoyanno-eksportirovat-dannyie-iz-amibroker/8282437#8282437

Существуют и другие решения, которые вы можете использовать почти так же, как и третье решение, которое я дал. Я знаю, что люди создали похожие решения на разных языках, таких как Java, Python, Ruby и т. Д. Для C# вы можете посмотреть на DotNet для Amibroker. Он портировал ADK в C#. Это оплачено. Другим является AmiBroker.NET SDK. Он сделал то же самое, что и DotNet для AB - перенос ADK на C#, но его решение кажется более подходящим для плагинов Data. Я никогда не мог заставить это работать на меня.

Шаг 0: сначала получите знание домена AmiBroker

Это пункт, который вы можете сделать самостоятельно, потратив свое время, пот или слезы, или вы можете сразу же передать основные знания на аутсорсинг, наняв эксперта по предметной области.

введите описание изображения здесь

Если вы выбрали первый вариант, начните с документации. И архитектура программного обеспечения, и связанные с ней инструменты хорошо изображены там.

введите описание изображения здесь


Шаг 1: определите цели вашего проекта

Опять же, этот шаг не может быть пропущен. Как и следовало ожидать, можно набросать, отшлифовать и сохранить собственные определения Проекта, или для этого вида композита доступно внешнее управление проектом. {PM|QA|CM} -expertise.


Шаг 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: Продолжайте идти, пока не завершите и не интегрируете поставленные цели

Это так просто, если вы оба знаете, что и ноу-хау.

Другие вопросы по тегам