2016-12-01 91 views
0

我称之为互动经纪人reqHistoricalData()方法和我看到IBGateaway我看到,我得到一个错误JAVA互动经纪人API

200 |没有安全的定义已发现

我试图改变秒类型不同的人,但这里总是返回相同的结果的请求是我的代码:

public class IBrokersApi implements EWrapper { 

private EClientSocket clientSocket = new EClientSocket(this); 
public Contract contract = new Contract(); 

public void connect(){ 
    if(!clientSocket.isConnected()){ 
     clientSocket.eConnect("", 4002, 0); 
    } 
} 

public void disconnect(){ 
    if(clientSocket.isConnected()){ 
     clientSocket.eDisconnect(); 
    } 
} 
public void getHistData(){ 
    contract.m_conId = 1; 
    contract.m_symbol = "APPL"; // "ESJ13-FUT-GLOBEX"; 
    contract.m_secType = "STK"; 
    contract.m_exchange = "SMART"; 
    clientSocket.reqHistoricalData(0, contract,"20161120 00:00:00", "1 D", "1 day", "TRADES", 0, 2, null); 
} 
+0

码200通常意味着“成功” –

+0

在盈透证券的API就意味着没有成功。 – Loganasparkeris

+1

所以不会取决于服务器配置?你有没有联系服务器管理员?那是开始的地方。 –

回答

0

你的“1” conId是不正确。 AAPL股票碰巧有一个265598的conId,你可以使用API​​中的ContractDetails机制来查找。

对于IB API中的大多数情况,您通常可以选择发送conId和exchange,或者在您的示例这样的简单情况下,您可以指定各种“人类可读”字段。在你的情况下,只需不设置conId并设置货币(可以在默认情况下设置)。因此,对于创造一个合同,你的代码应该是这样的:

Contract c = new Contract(); 

    c.symbol("AAPL"); 
    c.secType(SecType.STK); 
    c.exchange("SMART"); 
    c.currency("USD"); 

或期权合约:

Contract c = new Contract(); 

    c.symbol("AAPL"); 
    c.secType(SecType.OPT); 
    c.exchange("SMART"); 
    c.currency("USD");  
    c.multiplier("100");      // 1 option is for 100 stock shares 
    c.lastTradeDateOrContractMonth("20180119"); // yyyyMMdd 
    c.strike(175.00); 
    c.right(Right.Put);       // CALL or PUT