当前位置: 首页 > 知识库问答 >
问题:

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

汪阿苏
2023-03-14

我是新的java虽然我有一些经验与R.

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

我想做的第一件事就是简单地连接到软件。我已经能够用Interactive Brokers提供的测试GUI做到这一点。然而,在编写自己的脚本时,我遇到了一个错误:不可编译的源代码——错误的符号类型。我已经将javaclient/com目录导入到我的新项目中。

导致错误的线路是EconConnect(端口=7496,客户端ID=0);

阅读文档,这应该是可行的,但显然不行。

下面是完整的代码。所有的导入调用都是从IB提供的一个示例文件中复制的。onHowToDetmineStock()是从留档的另一个部分复制的。在我能做任何事情之前,我显然需要连接。

有什么想法吗?

谢谢你。

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();
    }

}

共有1个答案

申屠浩歌
2023-03-14

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

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

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

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

 类似资料:
  • 如果我想使用交互式经纪人Java API检查当前头寸,然后通过出售或购买每个头寸的股票来重新平衡这些头寸,我只需要使用EWrapper。position()方法获取帐户中的当前头寸?或者我应该使用EClientSocket。reqPositions()方法来获取它? Ewrapper似乎用于从TWS接收信息到客户端,而EClientSocket用于向TWS发送请求。在这种情况下,我是否同时使用po

  • 对Python和IB API还不熟悉,但仍停留在这个简单的问题上。此应用程序工作正常,并打印IB服务器回复。然而,我不知道如何将这些数据输入熊猫的数据框或任何其他变量。你如何“把数据拿出来”谢谢 在论坛、文档或youtube上,我找不到任何有用的例子。我想答案一定是将accountSummary返回给pd。系列,但不知道如何。 预期输出将是一个可以在应用程序之外操作的数据系列或变量。

  • 我正在寻找将Python连接到交互式代理应用编程接口。谷歌搜索显示了ibPy的可用性(见https://pypi.python.org/pypi/ib),但是这个库似乎没有得到维护,也不支持Python 3。我还发现https://github.com/colin1alexander/IbPython3但是这个项目已经被取消了。 我知道Quantopian使用交互式代理作为其执行代理,但有一个用于

  • 问题内容: 是否有可能让bash脚本自动处理通常会以默认操作呈现给用户的提示?目前,我正在使用bash脚本调用内部工具,该工具将向用户显示提示(提示输入Y / N)以完成操作,但是我编写的脚本必须完全“放手”,因此我需要一种发送到提示符的方法,以允许程序继续执行。这可能吗? 问题答案: 这不是“自动完成”,而是自动化。一种用于这些事情的常用工具称为Expect。 您也可能只需要通过管道输入就能摆脱

  • 问题内容: 我需要确定调用我的Python脚本的外壳是否处于交互模式。如果它处于交互模式,则程序应将输出通过管道传递到less(1)以便于阅读。如果没有,它应该只将其输出打印到stdout,以便将其通过管道传输到打印机,文件或其他寻呼机。 在shell脚本中,我将检查是否定义了提示变量$ PS1,或者在$-变量中存储的标志中寻找-i选项。 从Python内部测试交互性的首选方法是什么? 问题答案:

  • 我想在一个非交互式脚本中安装JRE1.7。有没有一种方法可以做到这一点,相当于下面的方法?