Chr*_*er 5 language-agnostic algorithm statistics trading tradestation
我不是专家程序员,但我试图改变一些技术指标在名为TradeStation的财务图表包中的显示方式(而不是特定的图表供应商是相关的).
问题在于:大多数指标都围绕零点绘制,有时它们会在接近此点的位置振荡,有时甚至会很远.我想改变指标的绘制方式,使它们在零点附近振荡.但这里是棘手的部分,我不想过多地扭曲它们的形状; 一些变化是好的,不可避免的,但我仍然希望这些指标能够被识别出来.
在过去,我尝试了很多方法,一种方法是使用对数型比例,但这并不成功,因为它使得任何振动达到非常高的价值几乎无关紧要 - 这不是目标.目标是尽量保持指标的任何一个振荡几乎相同,但改变它的位置,使其更接近零(中心).或换一种方式; 目标是使指标执行类似形状的振荡,但这些振荡的中心应该更接近零(指标范围的中心).
有没有人知道,或者可以想到一种方法可以做到这一点?是否有任何算法可以帮助保持任何价格序列在中心点附近摆动更多而不会对原始版本造成太大的扭曲?
对此有任何帮助将不胜感激,谢谢.
== ==更新
粉红色的线是原始的振荡器,我画的黑线.它粗略地代表了我的目标.圆圈区域显示绘制的线与零交叉的位置,使其零值大致位于振荡的中心...但是与原始振荡相比,振荡的整体形状仍然可识别,高点的差异也较小每次振荡的低点; 即它们的价值更相似.我已经尝试将几种不同的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]
Run Code Online (Sandbox Code Playgroud)

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

并与你的情节进行比较:

| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |