0

我编写了一些 Java 代码(使用交互式经纪人 API)每 50 毫秒轮询一次期货定价,当它处于我喜欢的情况时,它将购买或出售 X 合约等。

Timer t = new Timer( );
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
      // get pricing, look for situational stuff
    }
}, 0, 50);

但是,我不知道如何编写代码以正确地保持程序始终在后台运行。如果重要的话,我正在 OS X 上开发它,生产环境可以是 ubuntu 或 centOS

4

1 回答 1

0

java 程序将一直运行,直到最后一个非守护线程停止或您调用其中一个停止方法(如 System.exit(0))。由于您的计时器不是守护程序,因此它将永远运行。如果你有一个窗口,那么它也有一个线程。

由于您可能已经连接到 IB,因此 EReader 创建了一个非守护线程来从套接字读取。您必须断开连接才能停止此线程。

更好的选择是订阅市场数据并在收到新数据时做一些事情。请注意,50 毫秒对于请求数据来说太快了,因为无论如何 IB 每秒只更新几次。

于 2016-12-18T21:23:25.533 回答