добавление биржевых данных в amibroker с помощью c # - PullRequest
1 голос
/ 31 мая 2010

Мне было трудно получить ответ на этот вопрос, и я очень, очень признателен за помощь.

Я занимался этим более 2 недель без прогресса.

Я хочу использовать c #, чтобы добавить строку биржевых данных в amibroker, но я просто не могу найти CLEAR-ответ о том, как создать его экземпляр в C #.

В VB я бы сделал что-то вроде:

Dim AmiBroker = CreateObject("Broker.Application")                
sSymbol = ArrayRow(0).ToUpper
Stock = AmiBroker.Stocks.Add(sSymbol)
iDate = ArrayRow(1).ToLower
quote = Stock.Quotations.Add(iDate)
quote.Open = CSng(ArrayRow(2))
quote.High = CSng(ArrayRow(3))
quote.Low = CSng(ArrayRow(4))
quote.Close = CSng(ArrayRow(5))
quote.Volume = CLng(ArrayRow(6))

Проблема в том, что CreateObject не будет работать в C # в этом случае.

Я нашел код ниже где-то в Интернете, но, похоже, не понимаю, как этого добиться.

Type objClassType; 
objClassType = Type.GetTypeFromProgID("Broker.Application");
// Instantiate AmiBroker
objApp = Activator.CreateInstance(objClassType);
objStocks = objApp.GetType().InvokeMember("Stocks", BindingFlags.GetProperty,null, objApp, null); 

Может кто-нибудь помочь мне здесь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 июня 2017

Смотрите мой ответ здесь для кода:

https://stackoverflow.com/a/20101274/1581495

Я сейчас использую этот метод. Я сохраняю текстовые файлы из MetaTrader, а затем импортирую их в реальном времени в AmiBroker. Делать это таким же образом, как импортировать кавычки, используя импорт ASCII, поэтому вам необходимо убедиться, что вы подготовили файл формата импорта. Для меня строка примеров данных выглядит так:

EURAUD,20170607,00:00:00.4885,1.50174,1.50231,1 //Symbol, Date, Time (HH:MM:SS.tttt), Bid, Ask, Volume

Я использую файл default.format, который выглядит следующим образом:

$FORMAT TICKER,DATE_YMD,TIME,CLOSE,AUX1,VOLUME
$SEPARATOR ,
$AUTOADD 0
$BREAKONERR 0
$SKIPLINES 0 

Найдите руководство и несколько примеров по импорту и форматам:

https://www.amibroker.com/guide/d_ascii.html

РЕДАКТИРОВАТЬ: это также может помочь с импортом

http://www.amibroker.com/kb/2016/01/23/how-to-create-custom-import-definition-for-ascii-importer/

0 голосов
/ 31 мая 2010

В коде VB используется то, что называется поздним связыванием с компонентом, совместимым с COM IDispatch. Позднее связывание не поддерживается C # (до C # версии 3). Компилятор C # компилирует только код, который он знает как связывать (называется раннее связывание).

Чтобы сделать то, что вы хотите, было бы проще создать dll-прокси через Visual Studio - выберите добавить ссылку в проект, затем выберите вкладку COM и затем найдите этот компонент брокера ами в списке. Это сгенерирует прокси-dll, который вы можете запрограммировать на использование кода, аналогичного тому, который вы показали для VB.

В C # 3.0 вы обнаружите, что иногда вам нужно использовать Type.Missing и что вам нужно выполнить дополнительное явное приведение, даже если вы думаете, что это не кажется логичным.

C # 4.0 имеет что-то под названием dynamic, что позволяет вам писать намного более чистый код при доступе к COM-компонентам.

...