繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

技术趋势线程序绘制的一种实现思路

作者/asjnajdja 2019-05-30 23:29 0 来源: FX168财经网人物频道

scipy polyBfgs 在一定范围内寻找局部最小值主要是注意参数范围n
聚类多个局部最小值,通过elbow寻找最优k个全局最小
每个类别中选出最小值,组成趋势

Snip20160507_1.png

Snip20160507_3.png

Snip20160507_4.png

一种趋势线绘制方式思路¶

  • scipy polyBfgs 在一定范围内寻找局部最小值主要是注意参数范围n(优化方式也可以使用np.polynomial.Chebyshev先反出多项式,再optimize.fmin_bfgs速度回快点)
  • 聚类多个局部最小值,通过elbow寻找最优k个全局最小(聚类效果如下所示)
  • 每个类别中选出最小值,组成趋势
TLineAnalyse.findMinLocal(x, y, show=True)
/Library/Python/2.7/site-packages/pandas/core/index.py:805: FutureWarning: scalar indexers for index type DatetimeIndex should be integers and not floating point
  type(self).__name__),FutureWarning)
[12.0, 129.0, 237.0]

最后趋势线的确定需要通过LinearRegression联合Cluster共同确定¶

    elif mode == K_TREND_KMEAN:
    for xy in other:
        if len(xy) == 2:
            xPred = xy[0]
            yPred = xy[1]
            if xPred.shape[0] == 2:
                pass
            elif xPred.shape[0] == 3:
                d = np.array([np.ravel(xPred), np.ravel(yPred)]).T
                dPd = pd.DataFrame(d, columns=['X', 'Y'])
                dPd.sort(['X'])
                xPred = dPd.iloc[0:2, 0:1].values
                yPred = dPd.iloc[0:2, 1:2].values
            else:
                ZLog.info('KMeans effect')
                select_k = 2
                kmeans = KMeans(n_clusters=select_k, init='random')
                d = np.array([np.ravel(xPred), np.ravel(yPred)]).T

                kmeans.fit(d)
                y_kmeans = kmeans.predict(d)

                dPd = pd.DataFrame(d, columns=['X', 'Y'])
                dPd['Cluster'] = y_kmeans
                dPdMin = dPd.groupby(['Cluster', 'Y', 'X'])['X', 'Y'].min()
                xPred = [dPdMin.loc[x, :].values[0][0] for x in xrange(0, select_k)]
                yPred = [yOrg[x] for x in xPred]
                xPred = np.array(xPred).reshape(-1, 1)
                yPred = np.array(yPred).reshape(-1, 1)

            linreg = LinearRegression()
            linreg.fit(xPred, yPred)
            xPred = np.array(xOrg).reshape(-1, 1)
            yPred = linreg.predict(xPred)
            xPred = np.ravel(xPred)
            yPred = np.ravel(yPred)
TLineTrend.plotUpTrend(x, y, TLineTrend.K_TREND_KMEAN)
 
分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2192文章4145粉丝45

    暂无个人简介信息

  • 王启蒙现货黄金

    人气296文章3215粉丝8

    本人做分析师以来,并专注于贵金属投资市场,尤其是在现货黄金...

  • 指导老师

    人气1864文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2320文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 梁孟梵

    人气2176文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2328文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4760文章8329粉丝119

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...

FX168财经

FX168财经学院

FX168财经

FX168北美