首页 > 解决方案 > 我的累积移动平均函数不会根据参数而改变

问题描述

我正在使用流线型,我想让用户在绘图图表上添加哪个累积移动平均线。我创建了该函数,它返回一个跟踪,但即使更改参数,跟踪也始终相同。这里的代码:

import streamlit as st
import pandas as pd
import plotly.graph_objects as go

def concatenate_2_lists_diff_sizes(list1, list2):
   return [x + str(y) for x in list1 for y in list2]

indi_ma = ['SMA', 'EMA', 'CMA']
range_indi_ma = [20,30,40,50,100,150,200]
indicators_ma = concatenate_2_lists_diff_sizes(indi_ma, range_indi_ma)

others_indi =[ 'RSI with SMA','RSI with EMA', 'MACD', 'OBV']

final_lists_of_indicators = indicators_ma + others_indi

def cumulative_moving_average(df, range_indi):
   df_close = df[['close']]
   df_close[f'CMA{range_indi}'] = df.close.expanding(min_periods=range_indi).mean()
   return df_close[f'CMA{range_indi}']

def display(value, timeframes, indicators):
   st.write(f"""
   # {value}
   Price *chart*""")
   df = pd.read_csv(f'data/{timeframes}/{value}-{timeframes}-data.csv')


   trace_price = go.Candlestick(x = df['timestamp'],
                             open = df['open'],
                             high = df['high'],
                             low = df['low'],
                             close = df['close'])
   fig = go.Figure(data = trace_price)  

   for indi in indicators:
       if indi.startswith('CMA'): 
        cma_trace = go.Scatter( x=df.timestamp, y=cumulative_moving_average(df,int(indi[3:])) , line=dict(color='blue', width=1))
        fig.add_trace(cma_trace)

   price = st.plotly_chart(fig)
   return price
display(value, timeframes, indicators)

我的累积移动平均函数有问题还是其他地方有问题?谢谢您的帮助 !

标签: pythonplotlystreamlit

解决方案


推荐阅读