Return timeframes relevant to just-elapsed time period (financial/trading context)
I think you should separate the computation in three different functions, one for minutes, one for hours, and one for days. And generalize each of these functions, so they can be used for other time frames if you ever decide to change them.

Minutes

You can specify an extra parameter in range(), the step: how much is added every iteration. With this the method to check a minute time frame is quite simple:

def minute_timeframe(minutes, timestamp, timeframes):
    for x in range(0, 60, minutes):
        if timestamp.minute == x:
            timeframes.append(f"{minutes}m")


Since your tags say you use Python 3, I used formatted string literals.

Hours

Be careful! You are using the &amp; operator, which in Python is the binary and operation. Since what you want is probably the logical and (i.e. this is true and the other is true), use the and keyword (same for or and not).

By looking at your implementation of hour timeframes, it's pretty easy to generalize:

def hour_timeframe(hours, timestamp, timeframes):
    if timestamp.minute == 0 and timestamp.hour % hours == 0:
        timeframes.append(f"{hours}h")


Days

The same happens for generalizing days. I must comment though, that your original does not seem to follow the PEP 8 Style for the indentations on that part of the code. You also do not need the parenthesis surrounding the if condition.

def day_timeframe(days, timestamp, timeframes):
    if timestamp.minute == 0 and timestamp.hour == 0 and timestamp.day % days == 0:
          timeframes.append(f"{days}d")


Final result

Now that our functions are generalized, in my opinion what would be best is to store a list of the different timeframes you want to use, that way adding new ones or changing them is simple. This is the final function:

# Constants go in ALL_CAPS
MINUTE_TIMEFRAMES = [3, 5, 15, 30]
HOUR_TIMEFRAMES = [1, 2, 3, 4, 6, 8]
DAY_TIMEFRAMES = [1, 2, 3]

def get_timeframes(self):
    timestamp = datetime.datetime.utcnow()
    timeframes = ["1m"]

    for x in MINUTE_TIMEFRAMES:
        minute_timeframe(x, timestamp, timeframes)

    for x in HOUR_TIMEFRAMES:
        hour_timeframe(x, timestamp, timeframes)

    for x in DAY_TIMEFRAMES:
        day_timeframe(x, timestamp, timeframes)

    # Format it correctly and use 'and'
    if (timestamp.minute == 0 and timestamp.hour == 0 and
        calendar.day_name[date.today().weekday()] == "Monday"):
        timeframes.append("1w")