请教一个QD补IB数据的问题

Discussion in 'QuantDeveloper' started by YAHN, Jan 18, 2010.

  1. 最近计划在IB开个户,实验一下用QD做自动交易。但是在测试中不知道如何调用IB的历史数据,比如用30分钟系统,总不能先开机等待几个小时让数据自我建立,希望一运行系统,IB的历史数据就可调用。现在QD的论坛已经关闭,不知道如何解决。在OQ中可以通过以下代码实现,想问一下那位高手知道在QD中如何实现。谢谢。

    public override void OnStrategyStart()
    {

    DateTime datetime1;
    DateTime datetime2;

    datetime2 = DateTime.Now;
    datetime1 = datetime2.AddDays(-2); //时间自定

    foreach (Bar bar in GetHistoricalBars("IB",Instrument,datetime1, datetime2, 60))

    Bars.Add(bar);
    }
     
  2. QD 没有GetHistoricalBars 这函数 不能实时取 IB 的历史数据。
     
  3. QD 有GetBarHistory 函数,但由于我刚学C#不久,所以不会调用。
     
  4. 取本地的 5min 数据用 :
    Code:
    DateTime datetime1; 
    DateTime datetime2;
    
    datetime2 = DateTime.Now; 
    datetime1 = datetime2.AddDays(-2); //时间自定
    
    Instrument instrument1= InstrumentManager.Instruments["XXXXXX"];
    BarSeries bars=instrument1 .GetBarSeries ( "Bar.Time.300",datetime1,datetime2);
    
     
  5. datetime1 = DateTime.Now;
    datetime2 =datetime1.AddMinutes(-1000);
    IHistoricalDataProvider IBProviderHistorical = ProviderManager.HistoricalDataProviders["IB"];
    foreach (Bar bar in DataManager.GetHistoricalBars(IBProviderHistorical, Instrument, datetime2, datetime1,300))
    {
    Bar.Add(bar);
    }

    试试这个。
     
  6. 差点误导了,呵呵。沙浪的代码对的。
     
  7. 感谢Fisher 和 Shalang 两位高手热心的帮助,fisher的代码还没有测试通过,可能是我的C#功底太差,正在继续努力。Shalang 的代码只能用 Incredible 来形容。
     
  8. 还的请教一个问题,IB的历史数据调用来了后,发现一个奇特的问题,实时数据和历史数据之间有8个小时的空档,在OQ中正常,在什么地方设置一下才能正常。
     
  9. 我是吧机器时间设置成GMT+1 笨办法。呵呵。yahn兄要是找到好的方法给讲一下。
     
  10. 多谢 shalang 兄帮忙,对于使用QD我只能算是新兵,向你请教的地方还很多。
     
  11. 不敢不敢。只是碰巧你遇见的问题我以前也碰见过。我们都是新兵。呵呵。互相学习。
     
  12. 今天找到一个方法,可以使图表在不改时区的前提下实现“连续”。方法是:

    1、在strategy上,按右键,将“策略”输出到“CATS”,生成****.DLL文件。
    2、在CATS中调用。
    3、在CATS中,运行STRATEGY。

    呵呵,图表连续。
     
  13. y CATS 是没问题。呵呵。