0

我曾尝试使用技术指标库来计算RSI(and ROC) 烛台的收盘价,但是当我比较Binance的结果时,我没有得到非常准确的结果:

我使用这个Binance API获取数据:

这是RSIROC指标的使用示例:

如果我这样做:

let inputData = {
        values: data, // 15 candlesticks, 1m candlestick data, values[0] is oldest closing price
        period: 14,
      };

我做计算:

const results_rsi = RSI.calculate(inputData);

我得到单元素数组,与Binance 上的(实时)数据相比,结果非常不准确。

如果我这样做:

let inputData = {
        values: data, // 100 candlesticks, 1m candlestick data, values[0] is oldest closing price
        period: 14,
      };

 const results_rsi = RSI.calculate(inputData);

我得到一个包含一堆元素的结果,如果我将result_rsi最后一个元素与 Binance进行比较,RSI 14 (1m)我会得到非常准确的结果。另外,我在其中一个git 问题中读到,提供更多历史数据会更好。

现在,到目前为止一切都很好......或者至少我是这么认为的 :) 但是,RSI 和 ROC 结果都非常准确。

问题是,当我应用相同的逻辑但使用不同的参数时,可以这样说:

let inputData = {
        values: data, // 100(or even 200 and 500) candlesticks, 1h candlestick data, values[0] is oldest closing price
        period: 30,
      };

       const results_rsi = RSI.calculate(inputData);
      const results_roc = ROC.calculate(inputData);

results_rsi我检查了and的最后一个元素results_roc(我认为这是实际结果,但可能不是?),我仍然得到很好的结果RSI,但是因为ROC我得到了非常错误的结果。这让我觉得我是否正确使用了这个库,而且我不太确定RSI结果是否正确,因为我没有尝试使用许多不同的参数/数据。

所以,问题:

(来自文档):

var data = 
[11045.27,11167.32,11008.61,11151.83,10926.77,10868.12,10520.32,10380.43,10785.14,10748.26,10896.91,10782.95,10620.16,10625.83,10510.95,10444.37,10068.01,10193.39,10066.57,10043.75];

var period = 12;
        
var expectResult = [-3.85,-4.85,-4.52,-6.34,-7.86,-6.21,-4.31,-3.24];
    
ROC.calculate({period : period, values : data});
  1. ROC这里的实际结果是什么?因为数组被返回。
  2. 输入值应该如何排序?(应该是什么values[0])?
  3. 我哪里错了?:D
4

1 回答 1

1

“准确性”的足够数据深度是多少?
(更好:我们什么时候在屏幕上获得相等的输出?)

RSI 是包含先前数据元素的几个指标之一。因此,基于 15 天或 50 天基础数据的 14 天 RSI 将与基于 500 天数据的 14 天 RSI 显着不同。

因此,除非所有 TimeSeries 的“观察者”从 (a) 完全相同的 TimeSeries 和 (b) 使用完全相同的“长度”计算 RSI第一个“观察到的”周期长度条)和(c)使用计算方法的相同数值属性(几乎所有平台都使用相同的 64 位 IEEE-754 数值处理,这不会引起问题,使用混合 FPGA /GPGPU/SoC/ASIC 算法可能会引入此类进一步的不连贯性(导致结果出现新的差异)),
因此,
当且仅当我们都从时间序列历史中数据的“开始”开始时,满足 (a) & (b) & (c) 的机会最高(如果我们都使用相同的数据,不是那么容易,如果有些使用未校正的时区,来自不同(T)OHLC(V)数据源的不同历史深度)并使用相同的数值处理方法。

一些技术指标不太容易受到观察深度的影响,还有一些(如果这是一个核心问题(为了减少延迟/提高性能/保持 Quant-models 的重现性和结果的可重复性),
请尝试设置您的“准确性”阈值并测试所有技术指标对先验数据深度的依赖性(以便收敛开始满足您的“准确性”阈值,如果结果开始收敛并保持不变,则进一步扩展深度没有意义稳定,与任何进一步扩展的先验数据重新处理深度无关)

在某些情况下,您碰巧达到了这种“足够短”的先验数据深度,您无需重新处理更深的过去的单个条。在所有其他情况下并非如此,因为无法避免 DATA 深度依赖性。Pitty,如果我们想获得相同的结果,我们都需要采用相同的深度(通常是最大深度,见上文)。

于 2022-02-16T17:39:04.903 回答