虽然我对R有一些经验,但我是java的新手。
我参加了一门java课程并阅读了一两本书,以及互动经纪人发布的API指南。这个API比我以前使用过的任何东西都要高,显然。
我想要做的第一件事就是连接到软件。我已经能够使用Interactive Brokers提供的测试GUI来完成这项工作。但是,在编写我自己的脚本时,我收到一个错误:无法编译的源代码 - 错误的sym类型。我已将javaclient / com目录导入到我的新项目中。
导致错误的行是econnect(port = 7496,clientid = 0);
阅读文档,这应该有效,但显然不行。
以下是完整代码。所有导入调用都是从IB提供的示例文件中复制的。 onHowToDetermineStock()是从文档的另一部分复制而来的。在我什么都做之前,我显然需要连接。
有什么想法吗?
谢谢。
package ibapp;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.ArrayList;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import com.ib.controller.ApiConnection.ILogger;
import com.ib.controller.ApiController;
import com.ib.controller.ApiController.IBulletinHandler;
import com.ib.controller.ApiController.IConnectionHandler;
import com.ib.controller.ApiController.ITimeHandler;
import com.ib.controller.Formats;
import com.ib.controller.Types.NewsType;
import com.ib.client.EClientSocket;
/**
*
* @author
*/
void onHowToDetermineStock(){
Contract contract = new Contract();
Order order = new Order();
contract.m_symbol = "IBKR";
contract.m_secType = "STK";
contract.m_exchange = "SMART";
contract.m_currency = "USD";
order.m_action = "BUY";
order.m_totalQuantity = 100;
order.m_orderType = "LMT";
order.m_lmtPrice = enteredLmtPrice;
m_client.placeOrder(GlobalOrderId, contract, order);
}
public class IBApp {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
econnect(port=7496, clientid=0);
onHowToDetermineStock();
}
}
答案 0 :(得分:2)
您的代码存在许多问题,使其成为无效的Java程序。
在Java中,与onHowToDetermineStock
方法不同,所有方法都必须包含在类中。此外,与R不同,Java不使用命名参数(即,除了指定名为port的变量外,port = 7496无效)。还有其他问题。
Java是一种面向对象的语言,与R非常不同。我建议暂时忘记IB API,并花一些时间学习如何编写基本的Java应用程序。网上有很多免费教程。