JAVA互动经纪人API
问题描述:
我称之为互动经纪人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);
}
答
你的“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
码200通常意味着“成功” –
在盈透证券的API就意味着没有成功。 – Loganasparkeris
所以不会取决于服务器配置?你有没有联系服务器管理员?那是开始的地方。 –