如何用python生成市场的分形图

如何用python生成市场的分形图,python,python-2.7,fractals,Python,Python 2.7,Fractals,我希望在python中生成以下内容: 但我对这个概念非常陌生。有人知道这方面的图书馆或要点吗 编辑: 据我所知,你每次都需要把分形分成2。因此,必须从两个中点之间的直线计算y轴点。然后,这两个部分需要根据分形形成?不是100%确定你在问什么,但正如我从你的评论中理解的那样,你想要使用链接中描述的递归生成一个真实的股市曲线 据我所知,链接页面和中的描述如下: 给你一个起点和终点,以及一系列的转折点(t1,v1),(t2,v2),等等,例如起点=(0,0),终点=(1,1),转折=[(1/4,1

我希望在python中生成以下内容:

但我对这个概念非常陌生。有人知道这方面的图书馆或要点吗

编辑:
据我所知,你每次都需要把分形分成2。因此,必须从两个中点之间的直线计算y轴点。然后,这两个部分需要根据分形形成?

不是100%确定你在问什么,但正如我从你的评论中理解的那样,你想要使用链接中描述的递归生成一个真实的股市曲线

据我所知,链接页面和中的描述如下:

  • 给你一个起点和终点,以及一系列的转折点(t1,v1),(t2,v2),等等,例如
    起点=(0,0),终点=(1,1),转折=[(1/4,1/2),(3/4,1/4)]
    ,其中ti和vi是介于0和1之间的分数
  • 您可以确定缩放到起始和结束之间间隔的实际转折点,并计算这些点之间的差异,即从pi到pi+1的距离
  • 你将这些片段混洗以引入一些随机性;当放在一起时,它们仍然覆盖完全相同的距离,即它们连接原始起点和终点
  • 通过递归调用新点之间不同段的函数重复此操作
  • 下面是我刚刚编写的一些Python代码:

    from __future__ import division
    from random import shuffle
    
    def make_graph(depth, graph, start, end, turns):
        # add points to graph
        graph.add(start)
        graph.add(end)
    
        if depth > 0:   
            # unpack input values
            fromtime, fromvalue = start
            totime, tovalue = end
    
            # calcualte differences between points
            diffs = []
            last_time, last_val = fromtime, fromvalue
            for t, v in turns:
                new_time = fromtime + (totime - fromtime) * t
                new_val = fromvalue + (tovalue - fromvalue) * v
                diffs.append((new_time - last_time, new_val - last_val))
                last_time, last_val = new_time, new_val
    
            # add 'brownian motion' by reordering the segments
            shuffle(diffs)
    
            # calculate actual intermediate points and recurse
            last = start
            for segment in diffs:
                p = last[0] + segment[0], last[1] + segment[1]
                make_graph(depth - 1, graph, last, p, turns)
                last = p
            make_graph(depth - 1, graph, last, end, turns)
    
    from matplotlib import pyplot
    depth = 8
    graph = set()
    make_graph(depth, graph, (0, 0), (1, 1), [(1/9, 2/3), (5/9, 1/3)])
    pyplot.plot(*zip(*sorted(graph)))
    pyplot.show()
    
    下面是一些示例输出:


    我也有类似的兴趣,开发了一个python3库来满足您的需求

    pip install fractalmarkets
    

    请参见

    “我希望用python生成此文件”。你想创建一个关于分形的网站吗?有许多有趣的web框架可用。你试过Django吗?@Kevin lol,没有,显然没有。我在找递归函数。你能提供一个更具体的链接吗?您现在所拥有的内容将进入头版。@Kevin谢谢您提供的信息。愚蠢的伊夫拉姆,叹气。我已经更新了链接。不太清楚你在问什么。你想生成一个看起来有点真实的股市图吗?或者你想实现“价格与交易时间”的标准化?还有,是否有任何输入数据,或者你只是想要随机图?这很好,是的,正是我想要的。不过还有一件事,
    depth=1
    应该将
    len(graph)
    作为4,等等。是否可以从一开始就使用
    ,或者我应该在之后使
    graph
    唯一?@Tjorriemorrie这是一个好的捕获,这不是有意的。这些点似乎被添加了多次,例如,从(0,0)开始,每个越来越小的线段都添加了(0,0)。或者,您可以只添加中间点(在我的第一个版本中是这样的),但是您必须单独处理第一个起点和终点。根据建议,我将
    图形
    更改为
    集合
    ,以避免出现这种情况;其他一切都是一样的。谢谢,这是一些非常好的python编码:)和+1,让我可以轻松地切换
    shuffle
    @tobias_k:这段代码可以扩展为使用x轴的实时值并生成逼真的分形OHLC数据点吗?我想尝试创建一个综合流媒体Bokeh finance情节,可以使用分形生成器作为OHLC引擎。@GoFaster我不是市场专家,但我不明白为什么这不起作用。只需将x轴上的
    0.0
    替换为打开时间,
    1.0
    替换为关闭时间,并相应地在两者之间插入值。