Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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))