带有交互式代理Java API的简单脚本

带有交互式代理Java API的简单脚本,java,interactive-brokers,Java,Interactive Brokers,我是java新手,虽然我对R有一些经验 我参加过一门java课程,读过一两本书以及交互式代理发布的API指南。显然,这个API比我以前使用过的任何API都要高 我想做的第一件事就是简单地连接到软件。我已经能够通过交互式代理提供的测试GUI来实现这一点。然而,当我编写自己的脚本时,我得到了一个错误:不可编译的源代码-错误的符号类型。我已经将javaclient/com目录导入到我的新项目中 导致错误的线路是econnect(端口=7496,客户端ID=0) 阅读文档时,这应该是可行的,但显然不行

我是java新手,虽然我对R有一些经验

我参加过一门java课程,读过一两本书以及交互式代理发布的API指南。显然,这个API比我以前使用过的任何API都要高

我想做的第一件事就是简单地连接到软件。我已经能够通过交互式代理提供的测试GUI来实现这一点。然而,当我编写自己的脚本时,我得到了一个错误:不可编译的源代码-错误的符号类型。我已经将javaclient/com目录导入到我的新项目中

导致错误的线路是econnect(端口=7496,客户端ID=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();
    }

}

您的代码存在许多问题,使其成为无效的Java程序

在Java中,所有方法都必须包含在一个类中,这与您的
onHowToDetermineStock
方法不同。此外,与R不同,Java不使用命名参数(即port=7496无效,除非指定一个名为port的变量)。还有其他问题

Java是一种面向对象的语言,与R非常不同。我建议暂时忘记IB API,花一些时间学习如何编写基本的Java应用程序。网上有很多免费教程


例如:

FYI,还有一个名为IBPy的python api。它不是IB的官方代码,但我能够快速编写我的项目,因为我已经精通python了。