text: Title: Pandas 2.1.0 and mfi indicator 
  Body: **Which version are you running? The lastest version is on Github. Pip is for major releases.**
  pandas-ta 0.3.14b
  python 3.12
  pandas 2.1.0
  **Do you have _TA Lib_ also installed in your environment?**
  No
  
  **Have you tried the _development_ version? Did it resolve the issue?**
  no, because is not compatible with python 3.12
  
  **Describe the bug**
  [A clear and concise description of what the bug is.](futurewarning: setting an item of incompatible dtype is deprecated and will raise in a future error of pandas)
  
  **To Reproduce**
  ```python
  df["MFI"] = ta.mfi(high=df["High"], low=df["Low"], close=df["Close"], volume=df["Volume"], length=14, talib=False)
  ```
  
  **Expected behavior**
  pandas 2.0.3 doesn't give that warning
  
  **Screenshots**
  [Reason is updated pandas behaviour](https://pandas.pydata.org/pdeps/0006-ban-upcasting.html)
  
  **Additional context**
  I find a function from: https://gist.github.com/quantra-go-algo/d3ced509e55ceb15eb0a6bd283e6853f#file-ti_mfi-py 
  and fine tuned with chatgpt to execute faster than original code and pandas-ta:
  I couldn't correct the pandas-ta bug, so I embedded below code to my python program
  
  ```python
  def mfi(high, low, close, volume, n):
      typical_price = (high + low + close) / 3
      money_flow = typical_price * volume
      mf_sign = np.where(typical_price > typical_price.shift(1), 1, -1)
      signed_mf = money_flow * mf_sign
  
      # Calculate gain and loss using vectorized operations
      positive_mf = np.where(signed_mf > 0, signed_mf, 0)
      negative_mf = np.where(signed_mf < 0, -signed_mf, 0)
  
      mf_avg_gain = pd.Series(positive_mf).rolling(n, min_periods=1).sum()
      mf_avg_loss = pd.Series(negative_mf).rolling(n, min_periods=1).sum()
  
      return (100 - 100 / (1 + mf_avg_gain / mf_avg_loss)).to_numpy()
  ```
    
  Thanks for using Pandas TA!
  