def APMMonthly(data):
    """Requires the open, high, and low values to exist in the provided dataframe >>>'data'. 
    For plotting, fill functions can be used inbetween the adrlow10+adrlow5 and the adrhigh10+adrhigh5.
    
    Parameters
    ----------
    data : dataframe
        A dataframe with the requirement being open, high, and low values.
        
    Returns
    -------
    DataFrame
        Appends the ADRHIGH10, ADRLOW10, ADRHIGH5, and ADRLOW5 to the dataframe"""
    data['dayrange'] = data['m_high'] - data['m_low']
    data['r1']=data['dayrange'].tail(20)[0]
    data['r2']=data['dayrange'].tail(40)[0]
    data['r3']=data['dayrange'].tail(60)[0]
    data['r4']=data['dayrange'].tail(80)[0]
    data['r5']=data['dayrange'].tail(100)[0]
    data['r6']=data['dayrange'].tail(120)[0]
    data['r7']=data['dayrange'].tail(140)[0]
    data['r8']=data['dayrange'].tail(160)[0]
    data['r9']=data['dayrange'].tail(180)[0]
    data['r10']=data['dayrange'].tail(200)[0]
    data['adr_5'] = (data['r1'] + data['r2'] + data['r3'] + data['r4'] + data['r5']) / 5
    data['adr_10'] = (data['r1'] + data['r2'] + data['r3'] + data['r4'] + data['r5'] + data['r6'] + data['r7'] + data['r8'] + data['r9'] + data['r10']) / 10
    data['m_ADRHIGH10'] = data['m_open']+(data['adr_10']/2)
    data['m_ADRHIGH5']  = data['m_open']+(data['adr_5']/2)
    data['m_ADRLOW10']  = data['m_open']-(data['adr_10']/2)
    data['m_ADRLOW5']   = data['m_open']-(data['adr_5']/2)
    data.drop(columns=['r1','r2','r3','r4','r5','r6','r7','r8','r9','r10','adr_5','adr_10','dayrange'],inplace=True)
        
    return data