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

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

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

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

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


person cyberyod    schedule 02.07.2016    source источник
comment
Этот пост далек от рекомендуемого StackOverflow метода MCVE публикации высококачественных вопросов. В тексте говорится (цит.:) Есть ли он у них вообще?... не видел... но никаких доказательств более глубоких исследований или кода. Обновите свой вопрос, чтобы он содержал полностью репрезентативный MCVE как для Ami/Web, который может воспроизвести любую проблему, которую вы просите у сообщества, помочь диагностировать и исправить. Это предпочтительный способ StackOverflow для конструктивного решения и обсуждения любых вопросов, связанных с MCVE. В любом случае, добро пожаловать в это великое Сообщество знаний + не стесняйтесь вносить свой вклад в наше продвижение вперед.   -  person user3666197    schedule 02.07.2016
comment
Извините за это, я вроде новенький здесь. Я удалил эту фразу. Код, который я пробовал, здесь неуместен, поскольку он вообще не работал (речь не об отладке). Мне нужен общий способ, как это сделать.   -  person cyberyod    schedule 02.07.2016


Ответы (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 у меня есть что-то похожее на следующее, где я вызываю dll C# и передаю ей соответствующие аргументы. Из моего кода C# я использую REST для отправки сделки в MetaTrader.

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

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

https://stackoverflow.com/a/37097609

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

person Sethmo011    schedule 22.01.2018

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

Это так просто, когда вы оба знаете, что и как.

person user3666197    schedule 03.07.2016