C# 使用c向amibroker添加股票数据

C# 使用c向amibroker添加股票数据,c#,createobject,instantiation,stock,C#,Createobject,Instantiation,Stock,我很难找到答案,我真的非常感谢你的帮助 我在这方面已经有两个多星期没有进展了 我想用c向amibroker添加一行股票数据,但我就是找不到一个关于如何在c中实例化它的明确响应 在VB中,我会这样做 Dim AmiBroker = CreateObject("Broker.Application") sSymbol = ArrayRow(0).ToUpper Stock = AmiBroker.Stocks.Add(sSymbol) iDate = ArrayRow

我很难找到答案,我真的非常感谢你的帮助

我在这方面已经有两个多星期没有进展了

我想用c向amibroker添加一行股票数据,但我就是找不到一个关于如何在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); 
有人能帮我吗


感谢

VB代码对COM IDispatch兼容组件使用了一种称为后期绑定的方法。C版本3之前的C不支持后期绑定。C编译器只编译它知道如何绑定的代码,称为早期绑定

要执行您想要执行的操作,通过VisualStudio生成代理dll会更容易—选择“在项目上添加引用”,然后选择“COM”选项卡,然后在列表中搜索该ami代理组件。这将生成一个代理dll,您可以使用与VB类似的代码对其进行编程

在C3.0中,您会发现有时必须使用Type.Missing,并且必须执行一些额外的显式强制转换,即使您认为这似乎不符合逻辑


C 4.0有一种称为dynamic的东西,它允许您在访问COM组件时编写更干净的代码。

有关代码,请参见我的答案:

我现在实际使用这个方法。我从MetaTrader保存文本文件,然后将它们实时导入AmiBroker。这样做本质上类似于使用ASCII导入导入引号,因此您需要确保准备好导入格式文件。对我来说,一行示例数据如下所示:

EURAUD,20170607,00:00:00.4885,1.50174,1.50231,1 //Symbol, Date, Time (HH:MM:SS.tttt), Bid, Ask, Volume
$FORMAT TICKER,DATE_YMD,TIME,CLOSE,AUX1,VOLUME
$SEPARATOR ,
$AUTOADD 0
$BREAKONERR 0
$SKIPLINES 0 
我使用default.format文件,如下所示:

EURAUD,20170607,00:00:00.4885,1.50174,1.50231,1 //Symbol, Date, Time (HH:MM:SS.tttt), Bid, Ask, Volume
$FORMAT TICKER,DATE_YMD,TIME,CLOSE,AUX1,VOLUME
$SEPARATOR ,
$AUTOADD 0
$BREAKONERR 0
$SKIPLINES 0 
在此处找到有关导入和格式的指南和一些示例:

编辑:这也可能有助于导入