import pandas as pd
import quandl as qdl
from scipy.stats import linregress
# get AAPL 10 years data
data = qdl.get("WIKI/AAPL", start_date="2007-01-01", end_date="2017-05-01")
data0 = data.copy()
data0['date_id'] = ((data0.index.date - data0.index.date.min())).astype('timedelta64[D]')
data0['date_id'] = data0['date_id'].dt.days + 1
# high trend line
data1 = data0.copy()
while len(data1)>3:
reg = linregress(
x=data1['date_id'],
y=data1['Adj. High'],
)
data1 = data1.loc[data1['Adj. High'] > reg[0] * data1['date_id'] + reg[1]]
reg = linregress(
x=data1['date_id'],
y=data1['Adj. High'],
)
data0['high_trend'] = reg[0] * data0['date_id'] + reg[1]
# low trend line
data1 = data0.copy()
while len(data1)>3:
reg = linregress(
x=data1['date_id'],
y=data1['Adj. Low'],
)
data1 = data1.loc[data1['Adj. Low'] < reg[0] * data1['date_id'] + reg[1]]
reg = linregress(
x=data1['date_id'],
y=data1['Adj. Low'],
)
data0['low_trend'] = reg[0] * data0['date_id'] + reg[1]
# plot
data0['Adj. Close'].plot()
data0['high_trend'].plot()
data0['low_trend'].plot()
3
是如何影响代码的吗?当它被改变时,似乎会对输出产生影响。代码如下:while len(data1)>3:
- chawila根据你的陈述 (引自:)
我做了一些搜索并思考了整整一天,似乎没有一个真正好的解决方案。
我可以向你保证,没有普适的好主意可以解决这个问题,但这不应该让你紧张。几代CTA(商品交易顾问)为了掌握这个领域所花费的最大努力,在他们留给我们的道路上至少可以学到一些东西。
1) 定义趋势:
初步惊奇的是,人们应该认为趋势更像是受外部系统驱动的(外在的)特征,更相关的是一种观点,而不是时间序列数据(可观察的)历史。
换句话说,一旦人们意识到趋势信息在时间序列数据集内部根本不存在,事情就会变得明朗起来。
2) 如果一个人足够相信自己的趋势识别方法,
那么她/他只能将这种趋势指示延伸到未来(一种推测)。
3) 市场,仅有市场验证(或忽略)一个人“接受”的信念。
4) 共享信念再次确认此线性信念为大多数尊重趋势指示的共识(由市场风险敞口股权衡量,而不是按照普遍投票方式,更不是按照群众吵闹或CTAs的自我宣传声音衡量)。
上面的USDCAD示例屏幕(在新窗口中放大查看全尺寸深入视图)反映了所有这些,并添加了一些基本事件实例,这些事件跨越了技术编制(定量支持)的主要吸引子,展示了外汇交易流的一部分真实生活。
pandas_talib
(这个包)。 - zglin