TWS Interactive Brokers API - Как исправить. Для запроса не найдено определение безопасности?

Используя Java API (и я предполагаю, что это касается любого другого клиентского API TWS Interactive Brokers), я получаю сообщение об ошибке «Для запроса не найдено определение безопасности». FAQ и другие ресурсы оказались совершенно бесполезными.

    Contract contract = new Contract();

    int id = incId;           

    System.out.println("Oder Id " + id );

    // use UTC seconds as transaction id

    // This is the problem you need to have a blank contractId
    contract.m_conId = 12345;
    contract.m_symbol = signal.symbol;
    contract.m_secType = "STK";
    contract.m_expiry = "";
    contract.m_strike = 0;
    contract.m_exchange = "SMART";
    contract.m_primaryExch = "ISLAND";
    contract.m_currency = "USD";

    //etc

    Order order = new Order();

    // set order fields
    order.m_account = "XXXXXX";
    order.m_orderId = id;
    //etc

    GetInstance().wrapper.m_client.placeOrder(id, contract, order);

person FlavorScape    schedule 12.12.2013    source источник


Ответы (6)


Ключевым моментом здесь является то, что поле contractId должно быть пустым. Отправка с ContractId вызывает ошибку безопасности.

person FlavorScape    schedule 12.12.2013
comment
Вы пробовали это с данными по фьючерсам? Я получаю эту ошибку, хотя я указал secType как FUT - person Avinash; 11.07.2014
comment
Я не могу сказать, что не так, если вы не укажете, какие параметры вы отправляете. Есть минимальные критерии для фьючерсов. interactivebrokers.com/en/software/api/apiguide/java/ - person FlavorScape; 15.07.2014
comment
Контрактный контракт = новый Контракт (); контракт.m_symbol = C; contract.m_secType = FUT; contract.m_exchange = CFE; contract.m_currency = USD; contract.m_expiry = 201412; m_client.reqMktData (12, контракт ,, ЛОЖЬ) - person Avinash; 16.07.2014
comment
Хорошо, это портит форматирование. Думаю, я задам еще один вопрос? Или все понятно? - person Avinash; 16.07.2014
comment
Разве ваш заказ не должен быть чем-то большим, чем пустая строка? - person FlavorScape; 16.07.2014
comment
Контрактный контракт = новый Контракт (); contract.m_symbol = USD; contract.m_secType = НАЛИЧНЫЕ; контракт.m_exchange = ИДЕАЛПРО; contract.m_currency = JPY; это сработало в моем случае - person nikolai.serdiuk; 19.10.2014

Другие возможные причины этой ошибки могут включать:

-The ConId должен быть установлен на 0.

-The TradingClass следует оставить пустым.

-Проблемы с LocalSymbol или GlobalSymbol.

-Другие переменные контракта были установлены неправильно.

- Запрошенный конкретный контракт в настоящее время не существует на рынке.

person GGnore    schedule 02.09.2016

Решилось для меня установкой обмена на "СМАРТ".

Мой вариант использования заключался в получении всех контрактов, которые я сейчас держу, и отправке заказа MOC. Я получил контракт с помощью метода reqPositions, но Contracts в этих возвращаемых значениях по-прежнему давали эту ошибку.

Установка обмена на SMART на этих контрактах решила проблему для меня.

person Mate Hegedus    schedule 26.08.2019

В некоторых случаях обмен нужно оставить пустым. Мне повезло с этим поиском:

https://pennies.interactivebrokers.com/cstools/contract_info/v3.9/index.php

Например, для CL:

con.connect()

contract = Contract()
contract.m_symbol = "CL"
contract.m_exchange = ""
contract.m_currency = "USD"
contract.m_secType = "FUT"

con.reqContractDetails(1, contract)

time.sleep(2)

con.disconnect()
person Gregism    schedule 23.02.2016

У меня была такая же проблема, но это произошло из-за того, что я не заполнял значения SecIdType и SecId.

Вот пример заказа и запроса, которые сработали:

IBApi.Order order = new IBApi.Order()
{
    Account = OrderCreationConfig.IndividualAccount
    , ClientId = OrderCreationConfig.OrderSlaveClientId //1
    , Action = orderNodeEntity.OrderAction //"BUY"
    , TotalQuantity = orderNodeEntity.NrOfStocks
    , OrderType = OrderCreationConfig.OrderTypeLMT //"LMT"
    , Tif = OrderCreationConfig.OrderTifGTC //"GTC"
    , OcaType = OrderCreationConfig.OcaTypeId //3
    , LmtPrice = price
    , AuxPrice = 0
    , TrailStopPrice = double.MaxValue
    , VolatilityType = 0
    , DeltaNeutralOrderType = "None"
};

IBApi.Contract contract = new IBApi.Contract()
{
      Symbol = orderNodeEntity.Symbol
     , SecType = OrderCreationConfig.ContractSecTypeSTK //"STK"
     , Strike = 0
     , Right = OrderCreationConfig.ContractRightQuestionMark //"?"
     , Exchange = OrderCreationConfig.ContractExchangeIsland //"ISLAND"
     , Currency = OrderCreationConfig.ContractCurrencyUSD //"USD"
     , LocalSymbol = orderNodeEntity.Symbol
     , TradingClass = null        
     , SecIdType = OrderCreationConfig.ContractSecIdTypeISIN //"ISIN"
     , SecId = this.GetISINCode(orderNodeEntity.Symbol) //"US0378331005" 
};
person Dragos Durlut    schedule 24.07.2019

Также убедитесь, что вы выбрали правильный lastTradeDateOrContractMonth для вашего контракта. У меня такая же ошибка, когда я пытался продать опцион с незаконной датой погашения ...

person Alexander    schedule 06.01.2021