algorithm - 如何操纵围绕中心值震荡的价格序列(指标)?

标签 algorithm statistics language-agnostic trading tradestation

我不是专业程序员,但我正在尝试改变一些技术指标在名为 TradeStation 的金融图表包中的显示方式(与特定图表供应商无关)。

这就是问题所在:大多数指标都是围绕零点绘制的,有时它们会靠近零点摆动,有时会远离零点。我想改变指标的绘制方式,使它们在零附近振荡得更多。但这是棘手的部分,我不想过多地扭曲它们的形状;一些变化是好的并且不可避免,但我仍然希望这些指标能够被识别为它们最初的样子。

过去我尝试过很多方法,一种方法是使用对数型刻度,但这并不成功,因为它使任何处于非常高值的振荡几乎无关紧要——这不是目标。目标是尽量保持指标的任何一次振荡几乎相同,但改变它的位置,使其更接近零(中心)。或者换一种说法;目标是使指标执行类似形状的振荡,但这些振荡的中心应更接近零(指标刻度的中心)。

有没有人知道,或者能想到一种方法可以做到这一点?是否有任何算法可以帮助保持任何价格序列围绕中心点更多地振荡,而不会对原始价格造成太大的扭曲?

如有任何帮助,我们将不胜感激,谢谢。

==更新== enter image description here 粉色线是原始振荡器,是我画的黑色线。它粗略地代表了我的目标。带圆圈的区域显示画线与零相交的位置,因此其零值大致位于振荡的中心......但与原始振荡相比,振荡的整体形状仍然可以识别,高点的差异也较小和每次振荡的低点;即它们的值(value)更相似。我曾尝试向各种指标添加几个不同的 Detrend 函数,但我发现这会使形状扭曲太多。

更新 2

我曾尝试将 y 轴线性减少 50% 和 80%,不幸的是,这似乎与比例因子的作用相同?它是否正确?它似乎并没有改变不同振荡之间的关系。如果您看到我的示例图,绘制的黑线具有更稳定的高低振荡,即它们在值/大小上更相似,这是关键目标。

接下来,我将尝试向图中添加一个高通滤波器,以查看给出的结果以及它是否以任何方式更接近我的目标。

像往常一样,欢迎发表任何评论,我们非常感谢。

克里斯

更新 3

我还对指标实现了高通滤波器。这也没有成功。这似乎也是一个比例因子。我本质上追求的是让大振荡变小,让小振荡变大。将使用的任何指标带入更同步的范围 - 并在保持相关指标的基本属性的同时执行此操作。更好的描述方式可能是我在使用阻尼公式?

有没有人有任何其他想法,或者我应该尝试的事情?

最佳答案

如果您想做一些量身定制的事情,您可以过滤傅立叶变换的低频分量。

假设我们有以下信号:

enter image description here

然后我们计算 FFT,只保留高频分量。假设我们忽略了前 1.5% 的成分。 原始信号和由此产生的振荡信号的结果图是:

enter image description here

喂!

编辑2

这就是您对上述高通滤波器的期望,添加指数阻尼,而不是仅仅处理低频分量。

Mathematica 中的程序(以防万一):

centerOsc[x_] := 
  Module[{list, n, fp, coef, s}, 
   list = (Transpose@FinancialData[#, "Jan. 1, 2005"])[[2]] &@x;
   n = Length@list;
   fp = Transpose[{N[Range[n]]/n, list}];
   coef = FourierDST[list, 1]/Sqrt[n/2];
   coef = Table[N[coef[[i]] (1 - E^(-i/6))], {i, 1, Length@coef}];
   s = IntegerPart[Length@coef/100]; s = 1;
   {fp, {#, 
       Sum[coef[[r]]*Sin[Pi r #], {r, s, n - 1}]} & /@ (N[Range[n]]/
       n)}];
l = {"GE", "GOOG", "IBM", "MSFT"} ;(*Real prices from*)
GraphicsGrid@
 Partition[ListLinePlot[centerOsc[#],
     Axes -> False, Frame -> True, PlotLabel -> #,
     PlotRange -> {{0.1, .9}, Full}, 
     Epilog -> Line[{{0, 0}, {1, 0}}]] & /@ l, 2]

enter image description here

编辑2

根据您上次的更新,您想要的似乎可以更容易地实现。通过将 y 轴线性减少 50% 和 80%(使用从您的图中提取的您的数据),看看您得到了什么:

enter image description here

并与你的情节进行比较:

enter image description here

关于algorithm - 如何操纵围绕中心值震荡的价格序列(指标)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453169/

相关文章:

python-3.x - 在 python 中查看/打印大型数据集的描述性统计数据的好方法?

sql-server - 数据库图(ER 图/表格布局)在衡量某些事物的分布时会是什么样子?

language-agnostic - 应用层和业务逻辑层有什么区别?

algorithm - 使用不是 2 的幂的碱基的碱基编码效率

将迭代算法转换为递归算法

algorithm - 以最少的运行次数遍历网格(图形)的每条边

math - float 学有问题吗?

algorithm - 从两组中各取一个元素

r - 在 R 中有效地填充平均值旁边的值

language-agnostic - 你如何保持你的程序词汇量?