├── README.md ├── images ├── renko_example.png ├── score.png └── sf_3d.png ├── pyrenko.py └── pyrenko_tutorial.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # pyrenko 2 | This module allows to carry out noise reduction of financial time series using Renko chart. Contents of repository: 3 | 1. pyrenko.py - contains "renko" class. 4 | 2. pyrenko_tutorial.ipynb - tutorial with examples. 5 | 3. images - resources of the tutorial. 6 | 7 | We recommend to start with tutorial. 8 | Also, you can find more information in this article https://towardsdatascience.com/renko-brick-size-optimization-34d64400f60e 9 | -------------------------------------------------------------------------------- /images/renko_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantroom-pro/pyrenko/9172bb435be26efe0f656f838fd134c49a49b5bd/images/renko_example.png -------------------------------------------------------------------------------- /images/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantroom-pro/pyrenko/9172bb435be26efe0f656f838fd134c49a49b5bd/images/score.png -------------------------------------------------------------------------------- /images/sf_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantroom-pro/pyrenko/9172bb435be26efe0f656f838fd134c49a49b5bd/images/sf_3d.png -------------------------------------------------------------------------------- /pyrenko.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | import matplotlib.patches as patches 4 | import talib 5 | 6 | class renko: 7 | def __init__(self): 8 | self.source_prices = [] 9 | self.renko_prices = [] 10 | self.renko_directions = [] 11 | 12 | # Setting brick size. Auto mode is preferred, it uses history 13 | def set_brick_size(self, HLC_history = None, auto = True, brick_size = 10.0): 14 | if auto == True: 15 | self.brick_size = self.__get_optimal_brick_size(HLC_history.iloc[:, [0, 1, 2]]) 16 | else: 17 | self.brick_size = brick_size 18 | return self.brick_size 19 | 20 | def __renko_rule(self, last_price): 21 | # Get the gap between two prices 22 | gap_div = int(float(last_price - self.renko_prices[-1]) / self.brick_size) 23 | is_new_brick = False 24 | start_brick = 0 25 | num_new_bars = 0 26 | 27 | # When we have some gap in prices 28 | if gap_div != 0: 29 | # Forward any direction (up or down) 30 | if (gap_div > 0 and (self.renko_directions[-1] > 0 or self.renko_directions[-1] == 0)) or (gap_div < 0 and (self.renko_directions[-1] < 0 or self.renko_directions[-1] == 0)): 31 | num_new_bars = gap_div 32 | is_new_brick = True 33 | start_brick = 0 34 | # Backward direction (up -> down or down -> up) 35 | elif np.abs(gap_div) >= 2: # Should be double gap at least 36 | num_new_bars = gap_div 37 | num_new_bars -= np.sign(gap_div) 38 | start_brick = 2 39 | is_new_brick = True 40 | self.renko_prices.append(self.renko_prices[-1] + 2 * self.brick_size * np.sign(gap_div)) 41 | self.renko_directions.append(np.sign(gap_div)) 42 | #else: 43 | #num_new_bars = 0 44 | 45 | if is_new_brick: 46 | # Add each brick 47 | for d in range(start_brick, np.abs(gap_div)): 48 | self.renko_prices.append(self.renko_prices[-1] + self.brick_size * np.sign(gap_div)) 49 | self.renko_directions.append(np.sign(gap_div)) 50 | 51 | return num_new_bars 52 | 53 | # Getting renko on history 54 | def build_history(self, prices): 55 | if len(prices) > 0: 56 | # Init by start values 57 | self.source_prices = prices 58 | self.renko_prices.append(prices.iloc[0]) 59 | self.renko_directions.append(0) 60 | 61 | # For each price in history 62 | for p in self.source_prices[1:]: 63 | self.__renko_rule(p) 64 | 65 | return len(self.renko_prices) 66 | 67 | # Getting next renko value for last price 68 | def do_next(self, last_price): 69 | if len(self.renko_prices) == 0: 70 | self.source_prices.append(last_price) 71 | self.renko_prices.append(last_price) 72 | self.renko_directions.append(0) 73 | return 1 74 | else: 75 | self.source_prices.append(last_price) 76 | return self.__renko_rule(last_price) 77 | 78 | # Simple method to get optimal brick size based on ATR 79 | def __get_optimal_brick_size(self, HLC_history, atr_timeperiod = 14): 80 | brick_size = 0.0 81 | 82 | # If we have enough of data 83 | if HLC_history.shape[0] > atr_timeperiod: 84 | brick_size = np.median(talib.ATR(high = np.double(HLC_history.iloc[:, 0]), 85 | low = np.double(HLC_history.iloc[:, 1]), 86 | close = np.double(HLC_history.iloc[:, 2]), 87 | timeperiod = atr_timeperiod)[atr_timeperiod:]) 88 | 89 | return brick_size 90 | 91 | def evaluate(self, method = 'simple'): 92 | balance = 0 93 | sign_changes = 0 94 | price_ratio = len(self.source_prices) / len(self.renko_prices) 95 | 96 | if method == 'simple': 97 | for i in range(2, len(self.renko_directions)): 98 | if self.renko_directions[i] == self.renko_directions[i - 1]: 99 | balance = balance + 1 100 | else: 101 | balance = balance - 2 102 | sign_changes = sign_changes + 1 103 | 104 | if sign_changes == 0: 105 | sign_changes = 1 106 | 107 | score = balance / sign_changes 108 | if score >= 0 and price_ratio >= 1: 109 | score = np.log(score + 1) * np.log(price_ratio) 110 | else: 111 | score = -1.0 112 | 113 | return {'balance': balance, 'sign_changes:': sign_changes, 114 | 'price_ratio': price_ratio, 'score': score} 115 | 116 | def get_renko_prices(self): 117 | return self.renko_prices 118 | 119 | def get_renko_directions(self): 120 | return self.renko_directions 121 | 122 | def plot_renko(self, col_up = 'g', col_down = 'r'): 123 | fig, ax = plt.subplots(1, figsize=(20, 10)) 124 | ax.set_title('Renko chart') 125 | ax.set_xlabel('Renko bars') 126 | ax.set_ylabel('Price') 127 | 128 | # Calculate the limits of axes 129 | ax.set_xlim(0.0, 130 | len(self.renko_prices) + 1.0) 131 | ax.set_ylim(np.min(self.renko_prices) - 3.0 * self.brick_size, 132 | np.max(self.renko_prices) + 3.0 * self.brick_size) 133 | 134 | # Plot each renko bar 135 | for i in range(1, len(self.renko_prices)): 136 | # Set basic params for patch rectangle 137 | col = col_up if self.renko_directions[i] == 1 else col_down 138 | x = i 139 | y = self.renko_prices[i] - self.brick_size if self.renko_directions[i] == 1 else self.renko_prices[i] 140 | height = self.brick_size 141 | 142 | # Draw bar with params 143 | ax.add_patch( 144 | patches.Rectangle( 145 | (x, y), # (x,y) 146 | 1.0, # width 147 | self.brick_size, # height 148 | facecolor = col 149 | ) 150 | ) 151 | 152 | plt.show() -------------------------------------------------------------------------------- /pyrenko_tutorial.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## About pyrenko\n", 8 | "It's python module which contains renko class. This class allows to build, evaluate, and draw Renko chart." 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "## What is Renko chart?\n", 16 | "\n", 17 | "\n", 18 | "Renko chart is chart type that is only concerned with price movement, time and volume are not included. Renko chart doesn’t show each price movement. You should set these parameters before building Renko chart:\n", 19 | "\n", 20 | "1. What brick size of a chart to choose that represents the magnitude of price movement? If a brick size is small, chart has more movements, but this chart is noisier.\n", 21 | "\n", 22 | "2. What type of price will be used to build a chart (e.g. open, close, etc.)? Also, a timeframe should be chosen, it might be days, hours, minutes, and ticks. Tick data are more accurate because movements are not missed.\n", 23 | "\n", 24 | "\n", 25 | "\n", 26 | "### The basic principles of building a Renko chart:\n", 27 | "1. New brick is built only if the price movement has exceeded the specified threshold level.\n", 28 | "\n", 29 | "2. The brick size is always the same. For example, if the size is 10 points, and the price has increased by 20, then 2 bricks will be drawn. If the price increases, the brick will be green (light), if the price falls — red (dark).\n", 30 | "\n", 31 | "3. Next value of the chosen variant of the price is compared with the maximum and minimum of the previous brick. The new rectangle is always displayed to the right of the previous one.\n", 32 | "\n", 33 | "4. If the price exceeds the upper level of the previous brick by a threshold or more, draw the corresponding number of green (light) rectangles just above that the lower border of the new brick corresponds to the upper boundary of the previous one.\n", 34 | "\n", 35 | "5. If the price falls below the bottom of the previous brick by the size of the threshold or more, draw the corresponding number of red (dark) rectangles that the upper boundary of the new brick corresponds to the lower boundary of the previous one." 36 | ] 37 | }, 38 | { 39 | "cell_type": "markdown", 40 | "metadata": {}, 41 | "source": [ 42 | "This tutorial demonstrates the basic functions of renko class. Examples depend on next modules." 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 1, 48 | "metadata": { 49 | "collapsed": true 50 | }, 51 | "outputs": [], 52 | "source": [ 53 | "import numpy as np\n", 54 | "import scipy.optimize as opt\n", 55 | "from sklearn.utils import resample\n", 56 | "import matplotlib.pyplot as plt\n", 57 | "import datetime as dt\n", 58 | "from dateutil.relativedelta import relativedelta\n", 59 | "import pyrenko\n", 60 | "import quandl\n", 61 | "import talib" 62 | ] 63 | }, 64 | { 65 | "cell_type": "markdown", 66 | "metadata": {}, 67 | "source": [ 68 | "### Example 1. Renko chart using one-by-one prices." 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 2, 74 | "metadata": { 75 | "collapsed": false 76 | }, 77 | "outputs": [ 78 | { 79 | "name": "stdout", 80 | "output_type": "stream", 81 | "text": [ 82 | "Set brick size (manual mode): 1.0\n", 83 | "Created renko bars: 1\n", 84 | "Created renko bars: 0\n", 85 | "Created renko bars: 3\n", 86 | "Created renko bars: -6\n", 87 | "Created renko bars: 2\n", 88 | "Renko bar prices: [10.0, 11.0, 12.0, 13.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 8.0, 9.0]\n", 89 | "Renko bar directions: [0, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1]\n", 90 | "Renko bar evaluation: {'balance': 4, 'sign_changes:': 2, 'price_ratio': 0.4166666666666667, 'score': -1.0}\n" 91 | ] 92 | }, 93 | { 94 | "data": { 95 | "image/png": "iVBORw0KGgoAAAANSUhEUgAABk4AAANYCAYAAACCeBFFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X+U5Xdd3/HXOwQYEmxAR4uRDhKhYawtuEuxFsFDlYMo\nRojHetaOIpxTQbHIqjWKIiL4C6RRqh5/VCF0ca20EaKlQcvPtCLa3dKcU8YtUnBCqMgYDAQyBNlP\n/7jv1ck4u9mdnZk7c/fxOGdOZj73e+99z7nn7mTnuZ/vt8YYAQAAAAAAILlo2gMAAAAAAADsFcIJ\nAAAAAABAE04AAAAAAACacAIAAAAAANCEEwAAAAAAgCacAAAAAAAANOEEAAAAAACgCScAAAAAAABN\nOAEAAAAAAGjCCQAAsGdV1UOq6mRVffcemOX9VXXDtOcAAAB2lnACAACcVlU9vcPFqY9PVdUHquqV\nVXX5tOfbZWO3nqiqFqvqhVW1sFvPCQAATFw87QEAAIA9byR5QZL3J5lL8k+SPCPJY6vqi8YYd01x\ntln1hUlemOQtSVamPAsAAFxQhBMAAOBs3DjGON6f/1pV/UWS70tyVZL/OL2xZktV3TfJXUkqu7jD\nBQAA+BtO1QUAAGzFTZn8cv8LNt5QVU+uqrdX1R1V9dGq+p2q+sINx7yqqj5WVZdX1ev68z+vqpdV\nVd3Tk1fVL1fVWlV93bq1h1bVa6vqL6rq41X1jqr66rP9hqpqqare2fe9rareVlVP3OS4x/Zxd1bV\ne6vqmzfc/sCq+umqurm/r9ur6g1V9Y82HPflffqzb6yql1TVLUk+nuS5SX6zD3trH/Ppqnr82X4v\nAADA1gknAADAVjy0//uR9YsdEX4nyccy2ZHyo0kWk9y04XodI5O/j7wxyYeTfE+Styb57iTfdron\nraqLquq6JEtJnjbGeH2vf06SdyR5YpKfS/L8JPdN8tvr48oZHveFSV6dyW6PFyT54UxOkfWEDYc+\nPMlrk/xuz3pbkldW1eK6Y67IZCfObyc5nOSlSb4okwjyoE2e/gVJnpzkp3vuNyZ5Rd/2kv5evznJ\n8j19HwAAwPmrMez+BgAANldVT0/ya0m+MsnN+ZtrnPxCkvsnefgY44N97KVJbknyH8YY377uMT47\nyf/p9Wf32iuTfEuSF4wxfnzdsceSfHqM8Zj++iFJ3pfke5P8bJLXJHlKkq8bY7xp3f2uzWSnxpeN\nMd6xbp6bk2SM8bd2xqy77xckOZHkt8YY33CG496XZCHJ48YYv99r8/09/9sxxvf12r3HGJ/acN+F\nfo6XjDF+rNe+PJNrmLw3yT9Yf62Yqvr6THadPGGM8fbTzQQAAGw/O04AAIB7UknelMnOkFsy2XFx\nR5KrTkWT9sQklyX5jar6rFMfmewueWf+9u6NJPmlDV/flMmOjY3uk8m1VL46yZPXR5P25CR/eCqa\nJMkY4+NJfjnJ5288VdgGT+vv8UfPcMwp7z4VTfo5VjMJIlesW/vraNI7ZD4zySf6uAObPOar1kcT\nAABgulwcHgAAuCcjyXckeU8mYeSZSR6fyWmt1nt4JgHiLad5jI9uWFsbY/zFhrWPJHngJvd/fpJL\nM4kmN21y+0OS/MEm68vrbn/3Jrcnk+hxMmd3KqyVTdbuNnNfo+V5Sb49k1Oa3atvGklWN7n/+8/i\neQEAgF0inAAAAGfjj8YYx5Okql6f5L8l+fWqunKM8Yk+5qJM4sBSkg9t8hh/teHrT5/D89+Y5KuS\nXFNVb93mHRr3eDH6dU438/rH+MFMdq/8apIfyuQ6KCczOdXYZrv+7zyH5wcAAHaYcAIAAJyTMcbJ\nqvqBTHaWfGcmFz9PJtfqqCQfHmO8eZuf9g+S/GKS/5zktVX1tDHGyXW3/2mSKze53+K620/nTzIJ\nGl+YvibKefr6JG8eY/zL9YtV9YBMTnd2NlyMEgAApsQ1TgAAgHM2xnhbkj9M8ryquk8vvzGT03E9\nv6r+1j/S6gupn89zvjnJN2ZyPZN/v+HmNyR5TFV9ybrnuzTJtyV53xjjdKfpSpLXZRIqfrhPs3W+\nPp0Nu1iq6huSfN45PMbH+zEesA3zAAAA58COEwAA4J6cLia8LJMLxX9rkl8eY3ysqr49yauTHK+q\n38hkh8VCkq/J5PRezz2fQcYYN1TVM5K8uqo+NsZ4dt/0k0kOJbmxql6RyemxvjWTa5tcfQ+P+d6q\n+rFMTqt1U1Vdn+STSf5xklvHGD94jmP+TpIXVNWvJfn9JP8wyb/IZEfO2XpXJgHmmt6p8skkb+qL\n0QMAADtIOAEAAO7J6U4bdX0mp7n63qr6lTFxtKpuTfL9Sb43yX2T3JrkpiSvPMvH3bg+1q+NMV5T\nVZ+R5Oer6vYxxjVjjD+vqi9N8lOZnD5sLpPTbj1ljHHjPX6DY7ywqv5vkn+V5CVJPtH3f/Xp5jjD\n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\n", 96 | "text/plain": [ 97 | "" 98 | ] 99 | }, 100 | "metadata": {}, 101 | "output_type": "display_data" 102 | } 103 | ], 104 | "source": [ 105 | "renko_obj = pyrenko.renko()\n", 106 | "print('Set brick size (manual mode): ', renko_obj.set_brick_size(auto = False, brick_size = 1.0))\n", 107 | "\n", 108 | "# Emulation that how it will be going when data is streaming from provider/exchange\n", 109 | "print('Created renko bars: ', renko_obj.do_next(10.0))\n", 110 | "print('Created renko bars: ', renko_obj.do_next(10.5))\n", 111 | "print('Created renko bars: ', renko_obj.do_next(13.0))\n", 112 | "print('Created renko bars: ', renko_obj.do_next(5.5))\n", 113 | "print('Created renko bars: ', renko_obj.do_next(9.5))\n", 114 | "\n", 115 | "print('Renko bar prices: ', renko_obj.get_renko_prices())\n", 116 | "print('Renko bar directions: ', renko_obj.get_renko_directions())\n", 117 | "print('Renko bar evaluation: ', renko_obj.evaluate())\n", 118 | "\n", 119 | "if len(renko_obj.get_renko_prices()) > 1:\n", 120 | " renko_obj.plot_renko()" 121 | ] 122 | }, 123 | { 124 | "cell_type": "markdown", 125 | "metadata": {}, 126 | "source": [ 127 | "### Example 2. Renko chart using history data and auto-brick-size (ATR approach)" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 3, 133 | "metadata": { 134 | "collapsed": false 135 | }, 136 | "outputs": [ 137 | { 138 | "name": "stdout", 139 | "output_type": "stream", 140 | "text": [ 141 | "Set brick size to optimal: 12.928911141291287\n", 142 | "Renko bar prices: [555.17, 542.2410888587086, 529.3121777174173, 555.1699999999998, 529.3121777174173, 555.1699999999998, 568.0989111412912, 581.0278222825825, 593.9567334238739, 606.8856445651652, 619.8145557064565, 632.7434668477479, 645.6723779890392, 658.6012891303305, 671.5302002716219, 645.6723779890393, 632.743466847748, 658.6012891303305, 632.743466847748, 619.8145557064566, 606.8856445651653, 593.956733423874, 619.8145557064565, 632.7434668477479, 606.8856445651653, 632.7434668477479, 606.8856445651653, 632.7434668477479, 645.6723779890392, 658.6012891303305, 671.5302002716219, 684.4591114129132, 697.3880225542046, 710.3169336954959, 723.2458448367872, 736.1747559780786, 749.1036671193699, 762.0325782606612, 774.9614894019526, 749.10366711937, 736.1747559780787, 723.2458448367873, 710.316933695496, 697.3880225542047, 723.2458448367872, 736.1747559780786, 749.1036671193699, 762.0325782606612, 736.1747559780787, 723.2458448367873, 710.316933695496, 697.3880225542047, 684.4591114129133, 710.3169336954959, 723.2458448367872, 736.1747559780786, 749.1036671193699, 762.0325782606612, 736.1747559780787, 723.2458448367873, 710.316933695496, 697.3880225542047, 723.2458448367872, 697.3880225542047, 684.4591114129133, 671.530200271622, 697.3880225542046, 710.3169336954959, 723.2458448367872, 736.1747559780786, 749.1036671193699, 762.0325782606612, 774.9614894019526, 787.8904005432439, 800.8193116845353, 774.9614894019527, 762.0325782606614, 787.8904005432439, 762.0325782606614, 749.10366711937, 736.1747559780787, 762.0325782606612, 774.9614894019526, 787.8904005432439, 800.8193116845353, 813.7482228258266, 826.6771339671179, 800.8193116845354, 826.6771339671179, 839.6060451084093, 852.5349562497006, 865.4638673909919, 878.3927785322833, 891.3216896735746, 904.250600814866, 917.1795119561573, 930.1084230974486, 943.03733423874, 955.9662453800313, 968.8951565213226, 981.824067662614, 955.9662453800314, 943.0373342387401, 930.1084230974487, 917.1795119561574, 904.2506008148661, 930.1084230974486, 943.03733423874, 955.9662453800313, 968.8951565213226, 943.0373342387401, 930.1084230974487, 917.1795119561574, 943.03733423874, 955.9662453800313, 968.8951565213226, 981.824067662614, 994.7529788039053, 1007.6818899451966, 1020.610801086488, 1033.5397122277793, 1046.4686233690707, 1020.6108010864881, 1007.6818899451968, 1033.5397122277793, 1046.4686233690707, 1059.397534510362, 1072.3264456516533, 1046.4686233690707, 1072.3264456516533, 1085.2553567929447, 1098.184267934236, 1111.1131790755273, 1124.0420902168187, 1136.97100135811, 1149.8999124994014, 1162.8288236406927, 1175.757734781984, 1149.8999124994014, 1136.97100135811, 1124.0420902168187, 1111.1131790755273, 1098.184267934236, 1085.2553567929447, 1072.3264456516533, 1059.397534510362, 1046.4686233690707, 1033.5397122277793, 1020.610801086488, 1007.6818899451966, 1033.5397122277793, 1046.4686233690707, 1059.397534510362, 1072.3264456516533, 1085.2553567929447, 1098.184267934236, 1111.1131790755273, 1124.0420902168187, 1136.97100135811, 1111.1131790755273, 1098.184267934236, 1085.2553567929447, 1072.3264456516533, 1098.184267934236, 1111.1131790755273, 1124.0420902168187, 1136.97100135811, 1149.8999124994014, 1162.8288236406927, 1136.97100135811, 1124.0420902168187, 1111.1131790755273, 1098.184267934236, 1085.2553567929447, 1072.3264456516533, 1059.397534510362, 1046.4686233690707, 1033.5397122277793]\n", 143 | "Renko bar directions: [0, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1]\n", 144 | "Renko bar evaluation: {'balance': 62, 'sign_changes:': 38, 'price_ratio': 4.235955056179775, 'score': 1.3968128321924231}\n" 145 | ] 146 | }, 147 | { 148 | "data": { 149 | "image/png": "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\nTzIYDOaWX+r1Mtrf98D1DOty/pzL6RlvK/XLhqwpq6wHy9aCZLs+n5MkfAEAAADgTGqaZvqA9GqS\nec84myR7yXA4TL/fn3uubfnL77quM9rfX7pbYTAYZJjkqDseJRlMJmmaZivumePR1fw5beNtab9s\n0JqybD1Y9tkk2/f5nCThCwAAAABnW5Xk8uIq/X4/u7u7J9Kc41bX9UoPSftJTscdc6w6mj+nbrwt\n6ZdNWVNWWQ9O3WdzQs6tuwEAAAAAAACnifAFAAAAAACgQ8IXAAAAAACADglfAAAAAAAAOiR8AQAA\nAAAA6JDwBQAAAAAAoEPCFwAAAAAAgA4JXwAAAAAAADokfAEAAAAAAOiQ8AUAAAAAAKBDF9bdAAAA\nAAA4LuPxOE3THFk2Go2mL44uXl52yo2WHH+k/+aoqip1XXfaJk7WSc6fbRlvi/okWaFftnBNWdTz\nm/b5bBLhCwAAAACn0ng8zs6VnUxuTOZXKkn2Fp+nd7GXqqo6bdsmq6oql3q9DCbz++18ksFgsPA8\nl3q9jPb3z9wD19PipObPNo23lfokWdov27KmrPLZJJvz+Wwa4QsAAAAAp1LTNNOHpFeTHPWcs0my\nlwyHw/T7/bnnOWt/sV3XdUb7+wt3PAwGgwyTzOu1UZLBZJKmac5U350mJzV/tmm8Le2TZKV+2ZY1\nZdlnk2zW57NphC8AAAAAnG5Vksvzi/v9fnZ3d0+sOdugruulD0n7SfTaGXAC82frxtuSPklOz7qy\nymeTbNjnsyHOrbsBAAAAAAAAp4nwBQAAAAAAoEPCFwAAAAAAgA4JXwAAAAAAADq0EeFLKeWLSymv\nL6W8t5TycCnluYfKn1dKub+U8tuz8s864hyPL6X881JKU0r5cCnldaWUJx2q82mllJ8upXyklPK+\nUsr3lVI2og8AAAAAAIDTYVOCh7uSvCPJNydp55T/+yQvmFOeJP8syVck+aokz0hyOcm/vlk4C1l+\nJsmFJE9P8rVJvi7JS7q4AQAAAAAAgGQaRKxd27b3J7k/SUop5Yjy4azs05M8pryU8ilJviHJ/9C2\n7Ztmx74+yaiU8vlt274tybOTXEnyzLZtmyS/Wkp5YZLvLaW8uG3bjx3P3QEAAAAAAGfJpux8uVP3\nZBokveHmgbZt95OMk3zh7NDTk/zqLHi56YEkdyf50yfUTgAAAAAA4JQ7LeHLpyb5aNu2Hzp0/P2z\n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\njaEmz6mq5++mn7plKqrqHlX1/qr6zrAd8Lu76bNifVbV9avqrVW1s6ourKrXV9V11u5TsD9ZqWar\nakNVvayqvlRVPxr6vKmqfmXJGGqWNbOa79mxvn859HnakuVqljW1yu2DTVX1vqr6t+E79zNVdZOx\ndscTmFnCl92oqkckeWWSFyb59SRfTHJGVc1NdWIwco8kr0nym0l+O8m1k3yoqg4e63NSkgcmeXiS\neyY5PMm713iecDVDkP3EjL5Xx6lZZkZVHZbkE0l+kuT+STYl+ZMkF471eXaSpyT5oyR3SXJxRtsK\nB675hGHkORnV45OTHJnkWUmeVVVPWeygbpmy6yT5QpLjkvTSxlXW56kZfScfk9F2wz2T/OW+nTb7\nsZVq9pAkd0ry4oyOGTw0yRFJ3rekn5plLa34Pbuoqn4vo+/Z7+ymWc2y1va0fXCrJB9L8rWM6vEO\nSU5Ismusm+MJzKzqXvb7eL9VVZ9O8pnufvrwupJ8K8nJ3f3yqU4OlhhCwe8muWd3f7yqDk3yvSSP\n7O73DH2OSLItydHdfdb0Zsv+rKqum+RzSf44yQuSfL67n6FmmTVV9dIkd+3ue63Q57wkr+juE4fX\nhya5IMljuvsdazNT+Kmq+kCS87v7iWPL3pXkku5+9PBa3TITqurKJL/X3e8fW7ZifVbVpiRfTXJU\nd39+6HP/JH+X5Cbdff5afw72H7ur2d30uXOSzyS5WXd/W80yTcvVbFXdOMmnMjrB6O+TnNjdJw9t\nR2Z0gFvNMhXLbB+cluTS7n7MMus4nsBMc+XLElV17SRHJfnHxWU9SqjOTHLXac0LVnBYRmcH/GB4\nfVSSDfnZGt6eZEfUMNP12iQf6O4PL1l+56hZZsuDk3y2qt5Ro9s7nl1VT1hsrKpbJLlRfrZmL8ro\ngIuaZVo+meSYqrpNklTVHZPcLaMDK+qWmbbK+jw6yYWLBwQHZ2a0HfybazRVWMniftm/Da/VLDNl\nOLH4zUle3t3bdtPlrlGzzJChZh+Y5J+r6oPDvtmnq+ohY90cA2OmCV+ubi7JtTI6y2rcBRntEMDM\nGP4QnZTk4939tWHxjTI6K+CiJd3VMFNTVY/M6NYMz91N8w2jZpktt8zoCq3tSe6X5C+SnFxVW4b2\nG2W0E2pbgVny0iRvT/L1qro0oysNT+rutw3t6pZZtpr6vFFGV3tfpbuvyOgEJDXMVFXVQRl9D5/a\n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\nAAAAAElFTkSuQmCC\n", 150 | "text/plain": [ 151 | "" 152 | ] 153 | }, 154 | "metadata": {}, 155 | "output_type": "display_data" 156 | } 157 | ], 158 | "source": [ 159 | "years_ago = 3\n", 160 | "# Get data for last years\n", 161 | "data = quandl.get(\"WIKI/GOOG\",\n", 162 | " trim_start = dt.datetime.now() - relativedelta(years = years_ago), \n", 163 | " trim_end = dt.datetime.now)\n", 164 | "\n", 165 | "# Get optimal brick size based\n", 166 | "optimal_brick = pyrenko.renko().set_brick_size(auto = True, HLC_history = data[[\"High\", \"Low\", \"Close\"]])\n", 167 | "\n", 168 | "# Build Renko chart\n", 169 | "renko_obj_atr = pyrenko.renko()\n", 170 | "print('Set brick size to optimal: ', renko_obj_atr.set_brick_size(auto = False, brick_size = optimal_brick))\n", 171 | "renko_obj_atr.build_history(prices = data.Close)\n", 172 | "print('Renko bar prices: ', renko_obj_atr.get_renko_prices())\n", 173 | "print('Renko bar directions: ', renko_obj_atr.get_renko_directions())\n", 174 | "print('Renko bar evaluation: ', renko_obj_atr.evaluate())\n", 175 | "\n", 176 | "if len(renko_obj_atr.get_renko_prices()) > 1:\n", 177 | " renko_obj_atr.plot_renko()" 178 | ] 179 | }, 180 | { 181 | "cell_type": "markdown", 182 | "metadata": {}, 183 | "source": [ 184 | "### Example 3. Yet another approach to define brick size by score function optimization\n", 185 | "It would be good to measure a quality of Renko chart. Let’s assume a simple strategy which uses these trend following rules: your position should be “long” while the current brick is green (light). Change to the “short” position if the color of brick has been changed. Using this logic, we have the following parameters:\n", 186 | "\n", 187 | "1. balance is a sum of positive and negative deals. If the current brick has the same direction as the previous one, the balance value should be increased by +1. If the direction has been changed, the balance value should be decreased -2. Positive value is good.\n", 188 | "\n", 189 | "2. sign_changes is a number of that how many times a trend has been changed. Less value is better.\n", 190 | "\n", 191 | "3. price_ratio is a ratio of a number of original price bars to a number of renko bricks. Greater value is better.\n", 192 | "\n", 193 | "\n", 194 | "#### The score function tries to integrate these parameters into a single value. Greater value is better.\n", 195 | "\n", 196 | "\n", 197 | "\n", 198 | "If sign_changes is equal to 0, it should be set to 1 before calculation.\n", 199 | "Let’s try to visualize this score function in 3D space. Size of sphere corresponds to a score value. Red spheres have score equals to -1 value.\n", 200 | "" 201 | ] 202 | }, 203 | { 204 | "cell_type": "code", 205 | "execution_count": 4, 206 | "metadata": { 207 | "collapsed": false 208 | }, 209 | "outputs": [ 210 | { 211 | "name": "stdout", 212 | "output_type": "stream", 213 | "text": [ 214 | "Set brick size to optimal: 12.571733414146138\n", 215 | "Renko bar prices: [555.17, 542.5982665858538, 530.0265331717077, 555.17, 530.0265331717077, 517.4547997575615, 542.5982665858538, 555.17, 567.7417334141461, 580.3134668282922, 592.8852002424384, 605.4569336565845, 618.0286670707306, 630.6004004848768, 643.1721338990229, 655.7438673131691, 668.3156007273152, 643.1721338990229, 630.6004004848768, 655.7438673131691, 630.6004004848768, 618.0286670707306, 605.4569336565845, 592.8852002424384, 618.0286670707306, 630.6004004848768, 605.4569336565845, 630.6004004848768, 605.4569336565845, 630.6004004848768, 643.1721338990229, 655.7438673131691, 668.3156007273152, 680.8873341414613, 693.4590675556075, 706.0308009697536, 718.6025343838998, 731.1742677980459, 743.746001212192, 756.3177346263382, 768.8894680404843, 743.746001212192, 731.1742677980459, 718.6025343838998, 706.0308009697536, 731.1742677980459, 743.746001212192, 756.3177346263382, 731.1742677980459, 718.6025343838998, 706.0308009697536, 693.4590675556075, 680.8873341414613, 706.0308009697536, 718.6025343838998, 731.1742677980459, 743.746001212192, 756.3177346263382, 731.1742677980459, 718.6025343838998, 706.0308009697536, 693.4590675556075, 718.6025343838998, 731.1742677980459, 706.0308009697536, 693.4590675556075, 680.8873341414613, 668.3156007273152, 693.4590675556075, 706.0308009697536, 718.6025343838998, 731.1742677980459, 743.746001212192, 756.3177346263382, 768.8894680404843, 781.4612014546304, 794.0329348687766, 806.6046682829227, 781.4612014546304, 768.8894680404843, 756.3177346263382, 743.746001212192, 768.8894680404843, 781.4612014546304, 794.0329348687766, 806.6046682829227, 819.1764016970689, 831.748135111215, 806.6046682829227, 831.748135111215, 844.3198685253611, 819.1764016970689, 844.3198685253611, 856.8916019395073, 869.4633353536534, 882.0350687677995, 894.6068021819457, 907.1785355960918, 919.750269010238, 932.3220024243841, 944.8937358385302, 957.4654692526764, 970.0372026668225, 982.6089360809686, 957.4654692526764, 944.8937358385302, 932.3220024243841, 919.750269010238, 907.1785355960918, 932.3220024243841, 944.8937358385302, 957.4654692526764, 970.0372026668225, 944.8937358385302, 932.3220024243841, 919.750269010238, 907.1785355960918, 932.3220024243841, 944.8937358385302, 957.4654692526764, 970.0372026668225, 982.6089360809686, 995.1806694951148, 1007.7524029092609, 1020.3241363234071, 1032.8958697375533, 1045.4676031516994, 1020.3241363234072, 1007.752402909261, 1032.8958697375533, 1045.4676031516994, 1058.0393365658456, 1070.6110699799917, 1083.1828033941379, 1095.754536808284, 1108.3262702224301, 1120.8980036365763, 1133.4697370507224, 1146.0414704648686, 1158.6132038790147, 1171.1849372931608, 1146.0414704648686, 1133.4697370507224, 1120.8980036365763, 1108.3262702224301, 1095.754536808284, 1083.1828033941379, 1070.6110699799917, 1058.0393365658456, 1045.4676031516994, 1032.8958697375533, 1020.3241363234072, 1007.752402909261, 1032.8958697375533, 1045.4676031516994, 1058.0393365658456, 1070.6110699799917, 1083.1828033941379, 1095.754536808284, 1108.3262702224301, 1120.8980036365763, 1133.4697370507224, 1108.3262702224301, 1095.754536808284, 1083.1828033941379, 1070.6110699799917, 1095.754536808284, 1108.3262702224301, 1120.8980036365763, 1133.4697370507224, 1146.0414704648686, 1158.6132038790147, 1133.4697370507224, 1120.8980036365763, 1108.3262702224301, 1095.754536808284, 1083.1828033941379, 1070.6110699799917, 1058.0393365658456, 1045.4676031516994, 1032.8958697375533]\n", 216 | "Renko bar directions: [0, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1]\n", 217 | "Renko bar evaluation: {'balance': 71, 'sign_changes:': 36, 'price_ratio': 4.165745856353591, 'score': 1.5543312108777256}\n" 218 | ] 219 | }, 220 | { 221 | "data": { 222 | "image/png": "iVBORw0KGgoAAAANSUhEUgAABl8AAANYCAYAAABKFPuTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XuQZNldH/jv6WlQdo9hpN27Em6bC8hmq1M2rxqeoQVC\nqwVZgGXUhJcdnDYPszaY57BgrbFlhCwTGJuVF4R3ASEhOaX2WlBrxCNmvDwlAwYzAwGxpGrXrCBB\nDgkuEiMhdVpIc/ePzB7V1OSru29VZmV9PhEdk3XPyZvnnry/rJj7rXOztG0bAAAAAAAAunFh0wMA\nAAAAAADYJcIXAAAAAACADglfAAAAAAAAOiR8AQAAAAAA6JDwBQAAAAAAoEPCFwAAAAAAgA4JXwAA\nAAAAADokfAEAAAAAAOiQ8AUAAAAAAKBDwhcAAGCnlVI+opTyaCnlG7ZgLL9dSnn9pscBAACcLOEL\nAABwokopXzwLP27++5NSyu+VUl5ZSrmy6fGdsva0XqiU0i+lfEsppT6t1wQAAKYubnoAAADAudAm\neWGS307SS/KpSb40yTNLKX+xbdv3bnBsu+oZSb4lyc8kGW94LAAAcK4IXwAAgNPyQNu2D88ev6KU\n8odJ/m6S5yX5oc0Na7eUUp6U5L1JSk5xpQ0AAPABbjsGAABsyhszDQj+3PGGUspzSylvKKX8cSnl\nnaWUHyulPONYnx8spbyrlHKllPJvZo9/v5TyT0spZdWLl1K+r5QyKaX8lSPbPqqU8rpSyh+WUt5d\nSvnFUsrnrHtApZRBKeWXZs99eynl50opnzWn3zNn/W6UUn6rlPLXj7U/pZTyz0opvz47rkdKKT9R\nSvnYY/0+c3Yrty8spbyklPK7Sd6d5GuT/OtZt5+d9Xl/KeUz1j0WAADg9glfAACATfmo2X/fcXTj\nLIj4sSTvynRlzIuT9JO88dj3l7SZ/j/Ng0n+IMn/lORnk3xDkr+16EVLKRdKKa9KMkjy/LZtf2S2\n/alJfjHJZyV5WZJvTvKkJD96NKBZst9vSfLqTFedvDDJP8z0dl/POtb1o5O8Lsm/nY317UleWUrp\nH+nz9ExXBP1okvuTfEeSv5hpkPJhc17+hUmem+Sfzcb9YJLvmrW9ZHasfz3JaNVxAAAAd660rVXo\nAADAySmlfHGSVyT575L8ej7wnS//IsmfSvLRbdv+p1nfu5P8bpL/o23brzyyj/8qyf8z2/4Vs22v\nTPI3krywbdtvO9L3oSTvb9v2k2c/f0SSNyf5xiT/a5LXJPm8JH+lbdufOvK8l2a6YuS/adv2F4+M\n59eTpG3bJ6zQOfLcP5fkMMn/2bbtX13S781J6iSf3rbtL8y2VbNj/u62bf/ubNsHtW37J8eeW89e\n4yVt2/7j2bbPzPQ7XX4ryV84+t05pZQvyHT1y7Patn3DojEBAADds/IFAAA4DSXJT2W6QuV3M135\n8cdJnnczeJn5rCT3JPlXpZT/8ua/TFe5/FKeuIokSb732M9vzHTlyHEfnOl3y3xOkuceDV5mnpvk\nl28GL0nStu27k3xfko88ftuzY54/O8YXL+lz02/eDF5mr9FkGqo8/ci2x4KX2Uqd/yLJe2b99ufs\n8wePBi8AAMBmXdz0AAAAgHOhTfJ3kvy/mYYrX5bkMzK9RddRH51piPEzC/bxzmPbJm3b/uGxbe9I\n8pQ5z//mJHdnGry8cU77RyT593O2j460/+ac9mQanDya9W7rNZ6z7XFjnn1nzdcn+cpMb89216yp\nTdLMef5vr/G6AADAKRG+AAAAp+U/tG37cJKUUn4kyb9L8tpSyl7btu+Z9bmQacAwSPK2Oft437Gf\n338Lr/9Akr+U5AWllJ/teKVIuYW+i8Z8dB9/P9NVND+Q5B9k+r0wj2Z627R5dzC4cQuvDwAAnDDh\nCwAAcOratn20lPL3Ml3h8tWZfqF8Mv3ukpLkD9q2/emOX/bfJ/nfk/x4kteVUp7ftu2jR9p/J8ne\nnOf1j7Qv8h8zDUWekdl3xNyhL0jy023b/o9HN5ZSnpzprdvW4Qs+AQBgQ3znCwAAsBFt2/5ckl9O\n8vWllA+ebX4w01uLfXMp5Ql/LDb7cvo7ec2fTvKFmX6/y7881vwTST65lPIpR17v7iR/K8mb27Zd\ndMuxJPk3mYYd/3B2y7A79f4cW01TSvmrSf7MLezj3bN9PLmD8QAAALfAyhcAAOA0LAok/mmS1yX5\nkiTf17btu0opX5nk1UkeLqX8q0xXetRJPjfTW5V97Z0MpG3b15dSvjTJq0sp72rb9itmTd+e5L4k\nD5RSvivTW319Sabf9XJtxT5/q5TyjzO9RdgbSykHSf5zkk9K8pa2bf/+LQ7zx5K8sJTyiiS/kORj\nkvy1TFcGrevXMg1xXjBbMfOfk/xU27bzvjMGAADokPAFAAA4DYtugXWQ6S27vrGU8v3t1PVSyluS\n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\nJLckuaKqHrdG2Rcm+WySb03yy0l+tarOWdL/YJLXJvnmrq4XJrl42Rx7k7w+yb/pxt2V5ANJPp7k\nW5KcleTXk9gNAwAAm0zZtQ4AAGwmVXVpkrmMdnvsTrIno7DiX7XWPtiN+ddJfrq19k1Lzjs2o4Di\n+1prV3bzvCDJUw/drquq3pvkwdbaD3bHtyZ5c5KTu/d8UWttvuvb28338tbae7u23Um+kOTNrbU3\njqn/1iQ3tda+Z0nb/iT/oLX2kjHnvDTJO1prJ3bHr0jyP5M8vbV2Q9f2+CTDJGe31j653n9PAABg\n43nmCwAAsBn97ySvTvLYJBck+eqh4KXz9CSnVdU9y87bk+SpGd2mLEluXPaclL/OaNfIUhdmtMvk\nma21Lyxpf2pGn5muOtTQWnugqq5JMrNG/Z9e4fh1hw6q6p8m+ckkZyQ5vnufPVV1XGvtvm7Y/YeC\nl+6976qqdyX5g6r6w+4a39dau32NWgAAgA3mtmMAAMBm9JXW2q2tteszuu3Ws6vqh5f0PzbJnyb5\nxxkFMYdeT0vyniXjvrps3pZHfg76RJJjkvzAsvZacs7y9sO5hcCh3TffmOTDST6X5Nwks0nO78Z8\n3ZLx92WZ1tqrMrrd2Ke6eg9U1bMOoxYAAOAoEr4AAACbWrdz5Q1J/ktVTXXN1yU5LcmdrbW/XPZa\nvhtmLdck+a4kP1VVFy5pvyWj8Oa5hxq62449M8n8GnOetcLxzd3fZ5Psaq1d2Fq7prV2S5InrrfY\n1tqftdYubq09J8mNSX5wvecCAAAbQ/gCAABsBf8ro+e+HNoh8jsZPf/k96rquVX1jVV1dlX9alWd\n/Ggnb61dneS7k/xsVf37ru3eJO9IcklVvbiqvinJbyY5Lsk715jyOVV1YVWdVlXnJ/mXSd7S9d2S\nZHdV/XhVPbmqfijJj65VY3eNb6iqs6pquqq+M6MA6qZHe70AAMDRJXwBAAA2vdbag0neluQ/VdXe\n7rkoz0+ykOT9GQUQv5HRM1/ufjRTL3mPq5K8JMkvVtWPdc0/2c3/2xnd5uwpSb6ztXZwjTnfmNEO\nmc8m+akkF7TWruze58+T/Ickr09yfZLzuvdZy70ZPSPmsiQHkvz3JL/WWvv1dV0pAACwYerhz54E\nAAAAAADgSNj5AgAAAAAA0CPhCwAAAAAAQI+ELwAAAAAAAD0SvgAAAAAAAPRI+AIAAAAAANAj4QsA\nAAAAAECPhC8AAAAAAAA9Er4AAAAAAAD0SPgCAAAAAADQI+ELAAAAAABAj4QvAAAAAAAAPRK+AAAA\nAAAA9Oj/AxVo2H75XxbjAAAAAElFTkSuQmCC\n", 223 | "text/plain": [ 224 | "" 225 | ] 226 | }, 227 | "metadata": {}, 228 | "output_type": "display_data" 229 | } 230 | ], 231 | "source": [ 232 | "# Function for optimization\n", 233 | "def evaluate_renko(brick, history, column_name):\n", 234 | " renko_obj = pyrenko.renko()\n", 235 | " renko_obj.set_brick_size(brick_size = brick, auto = False)\n", 236 | " renko_obj.build_history(prices = history)\n", 237 | " return renko_obj.evaluate()[column_name]\n", 238 | "\n", 239 | "# Get ATR values (it needs to get boundaries)\n", 240 | "# Drop NaNs\n", 241 | "atr = talib.ATR(high = np.double(data.High),\n", 242 | " low = np.double(data.Low),\n", 243 | " close = np.double(data.Close),\n", 244 | " timeperiod = 14)\n", 245 | "atr = atr[np.isnan(atr) == False]\n", 246 | "\n", 247 | "# Get optimal brick size as maximum of score function by Brent's (or similar) method\n", 248 | "# First and Last ATR values are used as the boundaries\n", 249 | "optimal_brick_sfo = opt.fminbound(lambda x: -evaluate_renko(brick = x, \n", 250 | " history = data.Close, column_name = 'score'), \n", 251 | " np.min(atr), np.max(atr), disp=0)\n", 252 | "# Build Renko chart\n", 253 | "renko_obj_sfo = pyrenko.renko()\n", 254 | "print('Set brick size to optimal: ', renko_obj_sfo.set_brick_size(auto = False, brick_size = optimal_brick_sfo))\n", 255 | "renko_obj_sfo.build_history(prices = data.Close)\n", 256 | "print('Renko bar prices: ', renko_obj_sfo.get_renko_prices())\n", 257 | "print('Renko bar directions: ', renko_obj_sfo.get_renko_directions())\n", 258 | "print('Renko bar evaluation: ', renko_obj_sfo.evaluate())\n", 259 | "\n", 260 | "if len(renko_obj_sfo.get_renko_prices()) > 1:\n", 261 | " renko_obj_sfo.plot_renko()" 262 | ] 263 | }, 264 | { 265 | "cell_type": "markdown", 266 | "metadata": {}, 267 | "source": [ 268 | "Score value is not the same. This approach has greater score value than ATR." 269 | ] 270 | } 271 | ], 272 | "metadata": { 273 | "kernelspec": { 274 | "display_name": "Python 3", 275 | "language": "python", 276 | "name": "python3" 277 | }, 278 | "language_info": { 279 | "codemirror_mode": { 280 | "name": "ipython", 281 | "version": 3 282 | }, 283 | "file_extension": ".py", 284 | "mimetype": "text/x-python", 285 | "name": "python", 286 | "nbconvert_exporter": "python", 287 | "pygments_lexer": "ipython3", 288 | "version": "3.6.0" 289 | } 290 | }, 291 | "nbformat": 4, 292 | "nbformat_minor": 2 293 | } 294 | --------------------------------------------------------------------------------