193是2661为起点至今的交易日数。
要正确使用斐波那契回调线的前提是正确作出斐波那契回调线。斐波那契回调线的画法涉及到高点和低点的正确选择(这里的高点和低点都必须是有效拐点)。要正确的选择高点和低点我们这里将再次回顾拐点的概念和趋势的三种类别(上升趋势、下降趋势和横向震荡)。
1、拐点是指某一蜡烛形态的低(高)点比其左右两边各两根K线的低(高)点都低(高)的点。如图:
2、上升趋势是指在给定时间周期内,当每一轮上涨的高点(拐点)不断创新高,每一轮回调的低点(拐点)也不断抬高的趋势。如图:
3、下降趋势是指在给定时间周期内,当每一轮下跌的低点(拐点)不断创新低,每一轮回调的高点(拐点)也不断降低的趋势,如图:
4、横向震荡是指在给定时间周期内,市场既不是上述的上升趋势也不是下降趋势,而是呈横向运动的整理,其又称无趋势,如图:
5、斐波那契回调线主要用于趋势行情中,也可以用在大级别周期图为横向震荡行情中所蕴含的小级别周期图内——即大周期图呈横向震荡,而此时小周期图内具有一定的短期趋势。我们就是利用上升或下降行情的波段来作出斐波那契回调线,如图:
低点1、低点2、低点3、低点4、高点1、高点2和高点3都为有效拐点。当市场顺次产生低点1、高点1并在高点1后开始回调,我们就可以从低点1出发连接到高点1作出一条斐波那契回调线;当市场在低点2受到支撑再次企稳向上到达高点2并开始回调时我们就可以从低点1出发连接到高点2作出一条斐波那契回调线,也可以从低点2出发连接到高点2作出另一条斐波那契回调线,但注意此时低点1至高点1的那条斐波那契回调线将不再有关注价值;当市场从高点2回调到低点3企稳向上创新高点3并开始回调后,我们可以从低点1出发连接到高点3作出一条斐波那契回调线,也可以从低点2出发连接到高点3作出一条斐波那契回调线,也可以从低点3出发连接到高点3作出一条斐波那契回调线,此时低点2至高点2的那条斐波那契回调线也不再有关注价值;当市场回调形成低点4后企稳向上但并没有创新高时,我们就不能再作出新的斐波那契回调线,原斐波那契回调线继续有效。
……续上回 Fibonacci数列高效解法大全及时间复杂度分析 连载4来看profile的记录分析,看时间具体用在哪个部分了
一看,绝大部分时间耗在两句results上了
看来主要都用来大整数运算了
下面来试一下
把这程序里两句“results = ”后面的大数运算注释掉,换成1。也就是两句都成“results = 1”
再运行计时看看
Total time: 0000753秒
很惊人,去掉大数运算后,运行时间缩短成了原用时的1%。也就是99%时间消耗在Python内置的大数运算上了
下面试下用号称地球上最好的大数运算库替换掉Python内置的大数运算
9 应用GMP库
全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库,这是一个C写成的高效大数运算库
gmpy2是Python下对GMP库的封装
安装很简单,在 *** 作系统下打命令pip install gmpy2,就安装好了
应用到程序也很简单
把上面的二分迭代解法程序开头添加一行
再把程序里
改成
就可以了
运行看一下用时
Total time: 000689297秒
是原用Python内置大数运算用时的9%
效果显著。可见Python内置大数运算效率确实不怎么样
相关大整数乘法高效算法的介绍可参见这篇《 算法大数乘法问题及其高效算法 》
极大整数乘法的时间复杂度低至近似O(nlog n)
前面二分解法本身时间复杂度是O(log n)
现在把大数因素考虑进去。大数时间复杂度的n可以用二进制位数表示
第n项斐波那契数的二进制位数k跟n是线性关系,n10,那位数k也是10
现在把极大整数乘法时间复杂度代入,O(nlog n)O(log n)=O(n(log n)^2)
也就是在大数情况下二分解法的时间复杂度为O(n(log n)^2)
可以看这篇《 为什么算法渐进复杂度中对数的底数总为2 》解释
10 矩阵解法
斐波那契数列和矩阵的关系推导我看到GoCalf Blog里写的一段非常清晰,特在此引用
这解法就是求矩阵的n-1次幂。矩阵幂运算也能根据下面公式迭代二分加速
就是所谓的矩阵快速幂
Python里库很丰富,大名鼎鼎的numpy就是一个有关矩阵的库。这库是有优化的,算矩阵幂就不用个人再写什么矩阵快速幂函数了
用numpy库就能很简单的写出来
因为numpy没有大数支持,大数运算还是要用GMP库
同上测用时
Total time: 0042466秒
这幂运算是二分加速的,时间复杂度为O(log n)
对于固定阶矩阵相乘,乘的次数是个常数,也就是O(1)。虽然这个常数比较大^_
代入大数时间复杂度,总体复杂度也是O(n(log n)^2)
这儿来解释下为何矩阵快速幂比二分递归解法时间常数大
我们再来仔细看看斐波那契数列的矩阵形式:
会发现 z 和 y 必然相等,z 没必要再计算一遍。
t = x - y,因此 t 也没必要再计算一遍。
只需要计算矩阵第一列的那两个元素即可:
矩阵快速幂中两个矩阵相乘实际可分解为8次两个大整数乘法,而二分递归中只需要3次两个大整数乘法。所以二分递归时间常数小。
未完待续……
Fibonacci数列高效解法大全及时间复杂度分析 连载6起到一个推进作用,波浪理论是斐波那契数列的实例之一所以是黄金分割率。波浪理论中的那些浪的高度 和 调整幅度 跟斐波那契数列有关系 经常是0618 或者是 0382之类的倍率。 还有波浪数(浪中浪)也经常呈现斐波那契数。
根据波浪理论:通常一个调整浪会回撤先前波浪的一个斐波那契百分比。具体的回撤比例与实际的调整走势有关,这是因为调整是发生在时间与空间两个层次上的,如果时间上不足,那么必然要通过空间来弥补,如果空间不足,则需要用时间来弥补。
比率分析是指应用黄金比例来评定一个浪与另一个浪在时间和幅度上的比例关系。有人会猜测,三浪的调整深度会是五浪模式的0618。的确,这是一种很可能的关系,但世事从来不会这么简单。不过虽然这种简单的比例很少见,但是与黄金比例暗示的关系相符合的市场基本趋势总是存在的。
:
自波浪理论诞生以来,艾略的的实践者与研究者通常对市场中波浪幅度的关系相当着魔。因为一旦掌握了这种方法,可以在极其精确的点位进行卖出或买入 *** 作,相当于掌握了交易的圣杯。在实践中,比率分析主要从两个方面来反映波浪之间的精确价格关系:回撤与倍数
斐波那契(1175年-1250年),原名比萨的列奥纳多,中世纪意大利数学家。由于幼时跟着父亲在北非工作的经历,他很早就接触到了阿拉伯数字,他认为阿拉伯数字比罗马数字更有效。于是跟着当时地中海最著名的数学家一起学习,并于1200年学成归国。回到意大利之后,他把自己所学的知识写成一本《计算之书》,其中包涵了许多希腊、埃及、阿拉伯、印度、甚至是中国数学相关内容。同时包括了斐波那契数列的相关知识。这本书通过在记帐、重量计算、利息、汇率和其他的应用,显示了新的数字系统的实用价值。这本书大大影响了欧洲人的思想,不仅在中世纪使数学保持了生气,而且为高等数学、物理学、天文学等领域的发展奠定了基础。可是在三世纪后印制术发明之前,十进制数字并不流行。 尽管斐波那契是中世纪最伟大的数学家,可是他的知名度却远不如他的成就来的辉煌。他与同期建造比萨斜塔的设计师波纳纳是同一个时代的人,两个人都对世界作出了很大的贡献,但是人们对其的印象却只是比萨斜塔河对面的一座雕像和两条以其名字命名的街道。历史中这样的事层出不穷,人们习惯忘记,但是作为应用斐波那契数列的投资者,不应该忘记
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)