【问题标题】:Data Feed Thread Executing Trading Strategies?数据馈送线程执行交易策略?
【发布时间】:2011-12-16 16:46:56
【问题描述】:

如您所知,交易策略会根据实时信息采取行动,例如出价或最后交易价格发生变化时。数据馈送提供程序在与主线程不同的线程中异步地将报价流式传输到我们的桌面应用程序。此数据馈送线程在您向数据馈送提供者发出请求时产生并一直存在,直到您明确发送停止流式传输的请求为止。

就目前而言,数据馈送线程执行交易策略,因为它们中的大多数旨在根据分时数据输入或更新订单。你觉得这种方法有什么问题吗?这种设计在交易应用程序中是否常见?

我正在使用 Java。

【问题讨论】:

    标签: java multithreading trading algorithmic-trading


    【解决方案1】:

    您绝对不想在数据馈送线程上执行交易策略,尤其是在执行需要一段时间的情况下。该执行应该发生在不同的线程上。我对 Java 不是很熟悉,但我认为您可以在那里使用线程池。在 C# 中,将工作分散到多个线程上的一种非常强大的方法是使用 Tasks

    您可能需要考虑的另一件事是,当您仍在处理前一个报价时,如果工具有新报价,该怎么办。在许多情况下,只处理最近的一个是有意义的。我已经写了一篇关于我称之为most recent update pattern 的小帖子,其中包含 C# 中的示例实现。也许你觉得这很有用。

    【讨论】:

    • 感谢您的回答和链接!
    【解决方案2】:

    就目前而言,数据馈送线程执行交易策略,因为它们中的大多数旨在根据分时数据输入或更新订单。

    不完全是。数据馈送线程触发交易策略的执行。您不希望任何其他处理减慢数据馈送线程。

    【讨论】:

    • 谢谢,我应该为每个分时数据生成一个新线程来执行交易策略吗?
    • @Tom Tucker:我的回答在一定程度上取决于您使用的语言。数据馈送线程应针对每个分时向主管线程发送一个信号,以确定该分时是否是您的交易策略之一的元素。如果是这样,主管线程将确定特定交易策略的所有元素是否都已到位。如果是这样,监督线程启动一个交易线程来执行特定的交易策略。主管线程必须对分时进行排队,因此在确定要执行哪个交易线程时不会丢失任何分时数据。
    • 谢谢。我正在使用 Java BTW。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2018-12-15
    • 2020-08-18
    • 1970-01-01
    • 2022-08-17
    • 2023-02-20
    相关资源
    最近更新 更多