- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不是专业程序员,但我正在尝试改变一些技术指标在名为 TradeStation 的金融图表包中的显示方式(与特定图表供应商无关)。
这就是问题所在:大多数指标都是围绕零点绘制的,有时它们会靠近零点摆动,有时会远离零点。我想改变指标的绘制方式,使它们在零附近振荡得更多。但这是棘手的部分,我不想过多地扭曲它们的形状;一些变化是好的并且不可避免,但我仍然希望这些指标能够被识别为它们最初的样子。
过去我尝试过很多方法,一种方法是使用对数型刻度,但这并不成功,因为它使任何处于非常高值的振荡几乎无关紧要——这不是目标。目标是尽量保持指标的任何一次振荡几乎相同,但改变它的位置,使其更接近零(中心)。或者换一种说法;目标是使指标执行类似形状的振荡,但这些振荡的中心应更接近零(指标刻度的中心)。
有没有人知道,或者能想到一种方法可以做到这一点?是否有任何算法可以帮助保持任何价格序列围绕中心点更多地振荡,而不会对原始价格造成太大的扭曲?
如有任何帮助,我们将不胜感激,谢谢。
==更新== 粉色线是原始振荡器,是我画的黑色线。它粗略地代表了我的目标。带圆圈的区域显示画线与零相交的位置,因此其零值大致位于振荡的中心......但与原始振荡相比,振荡的整体形状仍然可以识别,高点的差异也较小和每次振荡的低点;即它们的值(value)更相似。我曾尝试向各种指标添加几个不同的 Detrend 函数,但我发现这会使形状扭曲太多。
更新 2
我曾尝试将 y 轴线性减少 50% 和 80%,不幸的是,这似乎与比例因子的作用相同?它是否正确?它似乎并没有改变不同振荡之间的关系。如果您看到我的示例图,绘制的黑线具有更稳定的高低振荡,即它们在值/大小上更相似,这是关键目标。
接下来,我将尝试向图中添加一个高通滤波器,以查看给出的结果以及它是否以任何方式更接近我的目标。
像往常一样,欢迎发表任何评论,我们非常感谢。
克里斯
更新 3
我还对指标实现了高通滤波器。这也没有成功。这似乎也是一个比例因子。我本质上追求的是让大振荡变小,让小振荡变大。将使用的任何指标带入更同步的范围 - 并在保持相关指标的基本属性的同时执行此操作。更好的描述方式可能是我在使用阻尼公式?
有没有人有任何其他想法,或者我应该尝试的事情?
最佳答案
如果您想做一些量身定制的事情,您可以过滤傅立叶变换的低频分量。
假设我们有以下信号:
然后我们计算 FFT,只保留高频分量。假设我们忽略了前 1.5% 的成分。原始信号和由此产生的振荡信号的结果图是:
喂!
编辑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]
编辑2
根据您上次的更新,您想要的似乎可以更容易地实现。通过将 y 轴线性减少 50% 和 80%(使用从您的图中提取的您的数据),看看您得到了什么:
并与你的情节进行比较:
关于algorithm - 如何操纵围绕中心值震荡的价格序列(指标)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453169/
我是一名优秀的程序员,十分优秀!