Interactive Brokers con Delphi ( TWS )

.



En el fichero tienen ejemplos sobre cómo utilizar la API de la Trader Workstation de Interactive Brokers con Delphi con el fin de conseguir una completa automatización de la compra-venta de accciones, contratos, etc. En concreto se basan en el emini-sp500 código "ES" vencimiento septiembre 2010.
Con un poco de habilidad pueden programar sus estrategias, lanzar órdenes cuando se alcance un nivel de precios determinado, definir órdenes limitadas, etc.
No olviden que antes de utilizar sus procedimientos en la cuenta real deben probarlos en la cuenta simulada de IB.

Descargar el fichero


6 comentarios:

  1. He probado el código demuestra ,pero los hechos nunca son llamados .

    ResponderEliminar
  2. Prueba a cambiar el vencimiento del contrato del emini SP que viene en el ejemplo, ya que a fecha de hoy ya ha vencido (IMPORTANTE: utiliza el modo de prueba de la TWS)
    Instala la última versión del TWS así como del API que publica interactive brokers, ya que hay funciones que necesitan una pequeña modificación en cuanto al número de parámetros que necesitan.

    ResponderEliminar
  3. Thanks for the quick response. Please excuse my using English as I do not speak Spanish very well. I updated my software and generated a new typelib. I am running WinXP (SP3) and Delphi 7, and this is my TWSAPI configuration:
    Build 913.6, Dec 17, 2010 1:04:49 PM
    Java Version: 1.6.0_23
    API_Version=9.64

    My application connects to TWS and requests a data stream. The log shows that price and size data are being sent, but the event handlers are never called.

    Gracias por la respuesta rápida. Por favor, disculpe mi Inglés utilizando como yo no hablo español muy bien. He actualizado mi software y generó una nueva biblioteca de tipos. Estoy corriendo WinXP (SP3) y Delphi 7, y esta es mi configuración TWSAPI:
    Construir 913.6, 17 de diciembre 2010 01:04:49 PM
    Versión Java: 1.6.0_23
    API_Version = 9,64

    Mi aplicación se conecta a TWS y pide una secuencia de datos. El registro muestra que los datos de precios y el tamaño se están enviando, pero los controladores de eventos nunca son llamados.

    [Richard]

    ResponderEliminar
  4. Para obtener datos históricos yo he usado:
    tws1.reqHistoricalDataEx(1, contrato, '', '3 D', '5 mins', 'TRADES', 0, 1);

    Además hay que poner:
    1) en el apartado VAR del programa:

    VAR
    contrato: Icontract;

    2)En el evento Oncreate del form:

    contrato := Tws1.createContract;
    contrato.symbol := 'ES';
    contrato.secType := 'FUT';
    contrato.expiry := '201009'; //cambiar a lo que corresponda
    contrato.strike := 0;
    contrato.right := '';
    contrato.multiplier := '';
    contrato.exchange := 'GLOBEX';
    contrato.currency := 'USD';

    3) en el evento OnHistoricalData:

    PROCEDURE TForm1.Tws1historicalData(ASender: TObject; reqId: Integer;
    CONST date: WideString; open, high, low, close: Double; volume,
    barCount: Integer; WAP: Double; hasGaps: Integer);
    VAR
    t: char;
    BEGIN
    t := chr(9);
    memo1.lines.add(
    inttostr(reqid) + t + date + t + floattostr(open) + t + floattostr(high) + t + floattostr(low)
    + t + floattostr(close) + t + inttostr(barcount) + t + floattostr(wap) + t + inttostr(hasgaps)
    );
    END;

    ResponderEliminar
  5. Se me olvidaba...
    Tiene que estar ejecutándose la TradeWorkstation y

    en el evento OnCreate del programa Delphi indicar:

    VAR
    id: integer;
    begin
    tws1.connect('127.0.0.1', 7496, id);
    ...

    ResponderEliminar
  6. Buenas tardes,

    ha llovido desde entonces pero me ha llamado la atención este post ya que no encuentro mucha información al respecto.

    Uso la TWS de IB y ando iniciandome con delphi (version XE5)

    La finalidad es desarrollar una aplicación con un sistema automatico pero de momento voy recadando información para al menos poder empezar a enlazar con los datos de IB.

    ¿Me sabría decir alguien si hay ejemplos actualizados para hacerme una idea del código necesario para recibir los datos de la TWS desde delphi xe5?

    Muchas gracias por vuestro interes

    Un saludo

    ResponderEliminar