Я хотел бы прочитать данные об объеме цен на символы акций Amibroker с помощью python. Я не могу найти в Google ничего полезного для этого. Кто-нибудь может помочь?
Чтение данных об объеме цен Amibroker с помощью python
Ответы (3)
Cool:
Только не постесняйтесь полностью открыть коробку вкусных конфет
AmiBroker, как и другие торговые платформы, может предоставлять данные, но это компактный (~ 3,5 МБ .EXE
+ .DLL
s) исполняемый файл с оптимизированной производительностью, который, в отличие от программ Java или .NET, не требует, чтобы какая-либо внутренняя виртуальная машина интерпретировала пользовательские данные. обрабатывает на уровне байт-кода, но работает на полную мощность на уровне машинного кода.
Хотя AB предлагает несколько вариантов интеграции для доступа к данным, мой совет - после того, как я провел последние 12 лет в количественных исследованиях и разработках - был бы: распространяйте (забудьте потратить свои время реализовать только конкретный доступ к некоторому элементу данных (том) и больше не полагаться на совместное использование состояний - лучше начать использовать интеллектуальную межпроцессную связь и интеллектуальную межагентную сигнализацию python
-задач , AmiBroker
- специальные ответы и т. д.).
Сторона Python - бесплатно (... будь он запущен на localhost
или другом континенте)
Это, как известно, довольно просто и оооочень гибко как с точки зрения расширения, так и с точки зрения доступности инструментов / модулей, что позволяет мне сразу пропустить его здесь, вы априори лучше знаете, что вам нужно на стороне Python, и большинство потребностей уже реализованы или уже реализованы. довольно просто добавлено как несколько расширений модуля.
Сторона AmiBroker - самое сложное
Томаш Янечко много писал об особом способе интеграции AB - на основе DLL
. Почему? DLL обеспечивают плавную и полностью управляемую интеграцию, необходимую в архитектуре межсистемного взаимодействия.
(cit. :) "... перевести ... на язык C / C ++ и скомпилировать как
AFL
плагинDLL
. Для этого требуются некоторые знания программирования C / C ++, Компилятор C / C ++ (можно использовать бесплатные инструменты Visual Studio Express или GNU) и AmiBroker Development Kit (ADK).
ADK содержит инструкции по написанию ваш собственныйAFL
плагин вместе с примерами кода, готовыми к компиляции. Однако требуются некоторые знания C / C ++.
ADK можно бесплатно загрузить с сайта
http://www.amibroker.com/bin/ADK.exe (самораспаковывающийся exe) или http://www.amibroker.com/bin/ADK.zip (zip-архив )
ПРИМЕЧАНИЕ: ADK не для новичков. Он для программистов (т.е. для людей, которые уже написали код C / C ++ в своей жизни) ».
Будь осторожен:
Когда подключаемый модуль
DLL
написан с помощью AmiBroker Development Kit (ADK), он обычно компилируется с библиотекой времени выполнения Microsoft C. «Проблема» заключается в том, что в зависимости от используемого компилятора для загрузкиDLL
операционной системой требуются разные версии среды выполнения C.
Например, Visual C ++ 6.0 ссылается наMSVCRT.DLL
, который обычно встречается во всех Windows начиная с Windows XP, чтобы можно было «забыть» об установке среды выполнения. Но когда плагин скомпилирован с более поздней версией Visual C ++ 2005, 2008 или 2010, необходимая библиотека времени выполнения C почти никогда не присутствует на целевом (клиентском) компьютере.
Чтобы загрузить подключаемый модуль, скомпилированный с VC2005 или выше, необходимо установить соответствующую библиотеку времени выполнения на клиентском компьютере. Среда выполнения должна точно соответствовать версии компилятора и возможному пакету обновления компилятора, используемому для компиляцииDLL
, иначе операционная система не загрузитDLL
. Соответствующие среды выполнения (vcredist.exe
) находятся в:VCInstallDir\SDK\v2.0\Bootstrapper\Packgages\vcredist_x86
илиVCInstallDir\SDK\v2.0\Bootstrapper\Packgages\vcredist_x64
или подобном каталоге (в зависимости от используемой версии VC). Затем такиеvcredist.exe
должны быть отправлены вместе с DLL всем клиентам для их установки.
В качестве альтернативы можно скомпилироватьDLL
со статической библиотекой времени выполнения.
Существует бесплатный инструмент под названием Dependency Walker (http://www.dependencywalker.com/), что позволяет проверить, какие данныеDLL
нужно загрузить операционной системе.
Плюс - вам абсолютно необходимо убедиться, что ваши плагины используют библиотеку времени выполнения «Многопоточная DLL». Хорошая новость в том, что компиляторы Visual C ++ (2005 и 2010) больше не позволяют выбирать однопоточную среду выполнения.
Итак - поместите свой DLL
в каталог «Plugins», и если он не отображается в списке источников данных, это означает, что его разрядность (32 бит / 64 бит) не соответствует разрядности AmiBroker.
Имея DLL
-режим, готовый к использованию, можно реализовать оболочку на основе DLL
практически для любой инфраструктуры интеллектуального обмена сообщениями, например ZeroMQ
, nanomsg
и др., И, достигнув этого, ваш воображение - единственное ограничение в дальнейшем межсистемном взаимодействии с python
.
python
-запросы,AmiBroker
-ответыAmiBroker
-запросы,python
-ответыAmiBroker
-запросы,remote-GPU
-ответыAmiBroker
-asks,remote-AI/ML
-прогнозирует и публикует цели для настройки / управления торговлей (работает с малым временем задержки - десятки[ms]
- подходит даже для малых интенсивность HFT-стратегий),AmiBroker
-публикует,remote-ComputingGrid
-процессы и сигнализирует кому-либо еще о любой постобработке
Я не уверен, каков ваш сценарий, но у вас есть несколько вариантов.
В конечном итоге вся информация, хранящаяся об акциях, находится в базе данных AB, к которой вы можете получить доступ из вашего AFL. Итак, чтобы получить значение в Python, вы можете создать текстовый файл, который может читать ваш код Python.
Ваш следующий вариант - напрямую взаимодействовать с объектом AB COM, см. Руководство. Я не знаю, как это можно сделать в Python.
Вот руководство по COM-объекту в разделе "Цитата":
Класс котировок представляет собой один бар ценовых данных.
https://www.amibroker.com/guide/objects.html
Ссылка ниже - это идея из другого ответа, который я опубликовал относительно взаимодействия AB COM.
Эквивалентный код CreateObject в C #
Сетмо
Вы можете попробовать изменить этот javascript, который я изменил в примере Amibroker на Python. Этот javascript выгружает базу данных Amibroker в файл. Этот сценарий поможет вам понять, как можно получить доступ к базе данных в Amibroker.
function FormatFloat( number )
{
number = 0.001 * Math.round( number * 1000 );
str = number.toString();
return str.substring( 0, str.indexOf(".") + 4 );
}
var oAB = new ActiveXObject("Broker.Application");
var fso = new ActiveXObject("Scripting.FileSystemObject");
/* Indicate the location and file name for the database dump. */
file = fso.OpenTextFile( "C:\\Info.txt", 2, true );
/* Indicate the location and name of the database to dump. */
oAB.LoadDatabase("C:\\Program Files (x86)\\AmiBroker\\Data");
var oStocks = oAB.Stocks;
var Qty = oStocks.Count;
for( i = 0; i < Qty; i++ ) { /* Loop through all the stocks in the database. */
oStock = oStocks(i);
for (j = 0; j < oStocks(i).Quotations.Count; j++) { /* Loop through all the ohlcv in each stock. */
oQuote = oStock.Quotations( j );
var oDate = new Date( oQuote.Date );
file.WriteLine( oStocks(i).Ticker + "," +
(oDate.getMonth()+1) + "/" + oDate.getDate() + "/" + oDate.getFullYear() + "," +
FormatFloat( oQuote.Open ) + "," +
FormatFloat( oQuote.High ) + "," +
FormatFloat( oQuote.Low ) + "," +
FormatFloat( oQuote.Close ) + "," +
Math.round( oQuote.Volume ) );
}
}
file.Close();
WScript.Echo("Export finished" );