def renko_DF(DF): "function to convert ohlc data into renko bricks" df = DF.copy() df.reset_index(inplace=True) df = df.iloc[:, [0, 1, 2, 3, 4, 5]] df.columns = ["date", "open", "high", "low", "close", "volume"] df2 = Renko(df) df2.brick_size = max(0.5, round(ATR(DF, 120)["ATR"][-1], 0)) df2.chart_type = Renko.PERIOD_CLOSE renko_df = df2.get_ohlc_data() renko_df["bar_num"] = np.where( renko_df["uptrend"] == True, 1, np.where(renko_df["uptrend"] == False, -1, 0) ) #Add a column where put 1 and -1 instead of the True/False we had in the uptrend column for i in range( 1, len(renko_df["bar_num"]) ): #Counts the amount of blocks generated in a trend Ex.: If we have 1,1,1,1,-1,-1,1,1... --> 1,2,3,4,-1,-2,1,2... if renko_df["bar_num"][i] > 0 and renko_df["bar_num"][i - 1] > 0: renko_df["bar_num"][i] += renko_df["bar_num"][i - 1] elif renko_df["bar_num"][i] < 0 and renko_df["bar_num"][i - 1] < 0: renko_df["bar_num"][i] += renko_df["bar_num"][i - 1] renko_df.drop_duplicates( subset="date", keep="last", inplace=True ) #Some of the indexes are repeated (for example if there is a spike in a 5 min period and 2 ranko blocks are generated). Drop the duplicate indexes (same 5 min period), but keep the last return renko_df
def renko_DF(DF): "function to convert ohlc data into renko bricks" df = DF.copy() df.reset_index(inplace=True) df = df.iloc[:, [0, 1, 2, 3, 6, 5]] df.columns = ["date", "open", "high", "low", "close", "volume"] df2 = Renko(df) df2.brick_size = round( ATR(DF, 120)["ATR"][-1], 0 ) #We just want the last number of the column. We use ATR as the brick size in here but it can also be fix. df2.chart_type = Renko.PERIOD_CLOSE #Renko box calcuation based on periodic close #df2.chart_type = Renko.PRICE_MOVEMENT #Renko box calcuation based on price movement renko_df = df2.get_ohlc_data( ) #Adds a column to df called "uptrend" with boolean values depending on whether the ranko chart goes up or down return renko_df
def renko_DF(DF): "function to convert ohlc data into renko bricks" df = DF.copy() df.reset_index(inplace=True) df = df.iloc[:,[0,1,2,3,4,5]] df.columns = ["date","open","high","low","close","volume"] df2 = Renko(df) df2.brick_size = max(0.5,round(ATR(DF,120)["ATR"][-1],0)) df2.chart_type = Renko.PERIOD_CLOSE renko_df = df2.get_ohlc_data() renko_df["bar_num"] = np.where(renko_df["uptrend"]==True,1,np.where(renko_df["uptrend"]==False,-1,0)) for i in range(1,len(renko_df["bar_num"])): if renko_df["bar_num"][i]>0 and renko_df["bar_num"][i-1]>0: renko_df["bar_num"][i]+=renko_df["bar_num"][i-1] elif renko_df["bar_num"][i]<0 and renko_df["bar_num"][i-1]<0: renko_df["bar_num"][i]+=renko_df["bar_num"][i-1] renko_df.drop_duplicates(subset="date",keep="last",inplace=True) return renko_df
def ATR(DF,n=20): temp = DF.copy() temp["H-L"] = abs(temp["High"] - temp["Low"]) temp["H-PC"] = abs(temp["High"] - temp["Adj Close"].shift(1)) # high - previous day close temp["L-PC"] = abs(temp["Low"] - temp["Adj Close"].shift(1)) temp["TR"] = temp[["H-L", "H-PC", "L-PC"]].max(axis=1, skipna = False) temp["ATR"] = temp["TR"].rolling(n).mean() return_val = temp.drop(["H-L","H-PC","L-PC"], axis=1) return return_val df.reset_index(inplace = True) df = df.drop(["Close"], axis=1) df.columns = ["date", "high", "low", "open", "volume", "close"] renko_df = Renko(df) renko_df.brick_size = 10 renko_df.chart_type = Renko.PERIOD_CLOSE df2 = renko_df.get_ohlc_data() df2.set_index("date", inplace = True) def renko_DF(DF): df = DF.copy() df.reset_index(inplace=True) df = df.iloc[:,[0,1,2,3,4,5]] df.columns = ["date", "low", "high", "open", "close", "volume"] df2 = Renko(df) df2.brick_size = max(0.5, round(ATR(DF,120)["ATR"][-1],0))