【问题标题】:How to find price reversal with RX.NET如何使用 RX.NET 找到价格反转
【发布时间】:2017-06-25 21:36:49
【问题描述】:

我正在学习 RX,并试图看看我是否可以用它来解决以下问题: 我有一系列加密货币价格,我试图找出价格反转何时开始在暴涨期间发生。在这些暴涨期间,代币的价格上涨得非常快,当它开始下跌时,我想做一个动作(卖出订单)。然而,有时它会停顿一下,然后进一步上升,但大多数情况下,当它开始下降时,它就真的下降了。

我已经设法让股票流继续运行并计算它们之间的一些增量,这可能会让你畏缩(我有点误用 Scan 方法):

public class Ticker
{
    public decimal Ask { get; set; }
    public decimal Bid { get; set; }
    public decimal Delta { get; set; }
    public decimal DeltaPercent { get; set; }
    public DateTime Time { get; set; }
    public override string ToString()
    {

        return $"a: {Ask} B:{Bid} D:{Delta} DP:{DeltaPercent} T:{Time}";
    }
}    

res.AsObservable().DistinctUntilChanged(x => x.Ask)
    .Scan((state, t) =>
    {
        var d =  t.Ask-state.Ask;
        t.Delta = d;
        t.DeltaPercent = t.Delta/state.Ask;
        return t;
    })

现在我想知道 N 个连续增量在 T 时间内何时小于 X 量,以及它们何时执行某项操作。我想我必须以某种方式将它们分组,但此刻我不知所措。

【问题讨论】:

    标签: c# system.reactive


    【解决方案1】:

    您没有严格定义您的问题。但是您可能会在这些运算符的某种组合中找到您的解决方案:

    • Buffer - 根据计数、时间跨度或自定义逻辑将 observable 中的项目分组到列表中
    • Window - 与缓冲区相同,但不是分组为列表,而是分组为可观察对象
    • TimeInterval - 将每个项目包装在一个 observable 中,并带有一个标记,告诉您自上一个项目以来已经过去了多少时间。
    • Scan - 用于累积状态(如您所演示)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多