java - 使用盈透证券 Java API 的简单脚本

标签 java interactive-brokers

尽管我对 R 有一些经验,但我还是 java 新手。

我参加了 Java 类(class),并阅读了一两本书以及交互式代理发布的 API 指南。显然,这个 API 比我以前使用过的任何 API 都更高。

我想做的第一件事就是连接到软件。我已经能够使用盈透证券提供的测试 GUI 来完成此操作。但是,在编写自己的脚本时,我收到错误:无法编译的源代码 - 符号类型错误。我已将 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();
    }

}

最佳答案

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

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

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

例如:https://docs.oracle.com/javase/tutorial/

关于java - 使用盈透证券 Java API 的简单脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419596/

相关文章:

python - future 数据没有通过 reqHistoricalData 的权限,但 reqMktData 可以工作

python - 使用 Python API 下载数据时如何消除(或从控制台抑制)Interactive Brokers 错误

c++ - Interactive Brokers API C++ 控制台非常基本的东西

Java:加载外部类

java - java "Context"类的用途是什么?

Java:是否可以一劳永逸地抛出 IOException?

java - 订单 ID placeorder Java 交互式经纪商

python - 我如何在 Python 中接收来自 IBs API 的数据?

java - 如何在java中保存索引颜色PNG

java - Swing 中的平滑动画