Using for loop in tabs but loading data don't update

I want to create an app to monitor the crypto&stock price. I want separate each crypto with tabs.`

import streamlit as st
import binance_data

selected_pair = col1.multiselect(
    'Choose a pair in Binance',
    sorted_pair_names,
    "BTCUSDT",
    )

past_day = col1.slider(
    "When do you start?",
    1,180,30)

selected_interval = col1.selectbox('Select interval', ('1h', '4h', '1d'))
price_tabs = st.tabs(selected_pair)

for i in range(len(selected_pair)):
    with price_tabs[i]:
        _cur_name = selected_pair[i]
        df_coins = binance_data.get_historical_ohlc_data(_cur_name,past_day,selected_interval)
        st.header(f"Price Data of {_cur_name}")
        fig = go.Figure()
        fig.add_trace...
        

The problem is that when I update the seleted_pair the _cur_name can be updated as expected but df_coins cannot.
I’ve add @st_cache_data in front of get_historical_ohlc_data but when this for loop refresh I will see same chart (BTCUSDT) in each tab but as I say, the _cur_name can update well.

For clearer guidance on crafting an effective post, I recommend visiting the Streamlit forum thread titled Using Streamlit: How to Post a Question Effectively. This resource offers valuable tips to ensure your queries are well-understood and addressed promptly.