# Define function to create Plotly chart
def create_chart(timeframe):
# Resample data to selected timeframe and calculate OHLC data
resample_dict = {'1min': '1T', '5min': '5T', '15min': '15T', '30min': '30T', '1h': '60T', '4h': '240T', '1d': '375T'}
df_resampled = df.resample(resample_dict[timeframe]).agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume': 'sum'})
df_resampled = df_resampled.between_time('09:15','15:30')
df_resampled = df_resampled[df_resampled.index.weekday < 5]
df_resampled = df_resampled[df_resampled.index.date != pd.to_datetime('2023-01-26').date()]
# Calculate EMA and MACD and add to dataframe
ema_window_size = 5
df_resampled['EMA'] = calculate_ema(df_resampled, ema_window_size)
macd, signal, histogram = calculate_macd(df_resampled)
df_resampled['MACD'] = macd
df_resampled['Signal'] = signal
df_resampled['Histogram'] = histogram
df_resampled['RSI']= calculate_rsi(df_resampled,14)
df_resampled = df_resampled.interpolate()
# Create a date range for holidays to be masked
holidays = pd.date_range(start='2023-01-26', end='2023-01-26')
# Mask the data for holidays
df_resampled.loc[df_resampled.index.isin(holidays), ['Open', 'High', 'Low', 'Close', 'Volume', 'EMA', 'MACD', 'Signal', 'Histogram', 'RSI']] = np.nan
# Create figure with candlestick and EMA trace
fig = make_subplots(rows=4, cols=1, shared_xaxes=True, vertical_spacing=0.1, specs=[[{"rowspan": 2}], [{}], [{}], [{}]],)
fig.add_trace(go.Candlestick(x=df_resampled.index, open=df_resampled['Open'], high=df_resampled['High'], low=df_resampled['Low'], close=df_resampled['Close'], name='Candlestick'), row=1, col=1)
fig.add_trace(go.Scatter(x=df_resampled.index, y=df_resampled['EMA'], mode='lines', line=dict(width=2, color='blue'), name='EMA'), row=1, col=1)
# Add MACD trace to second subplot
fig.add_trace(go.Scatter(x=df_resampled.index, y=df_resampled['MACD'], mode='lines', line=dict(width=1, color='black'), name='MACD'), row=3, col=1)
fig.add_trace(go.Scatter(x=df_resampled.index, y=df_resampled['Signal'], mode='lines', line=dict(width=1, color='blue'), name='Signal'), row=3, col=1)
fig.add_trace(go.Bar(x=df_resampled.index, y=df_resampled['Histogram'], marker=dict(color='blue'), name='Histogram'), row=3, col=1)
#Add RSI
fig.add_trace(go.Scatter(x=df_resampled.index, y=df_resampled['RSI'], mode='lines', line=dict(width=1, color='black'), name='RSI'), row=4, col=1)
# Set figure layout and show plot
fig.update_xaxes(
rangeslider_visible=False,
rangebreaks=[
# NOTE: Below values are bound (not single values), ie. hide x to y
dict(bounds=["sat", "mon"]), # hide weekends, eg. hide sat to before mon
dict(bounds=[15.5, 9.25], pattern="hour"), # hide hours outside of 9.30am-4pm
#dict(values=["2023-01-26","2023-01-02"]) # hide holidays (Republic day)
]
)
fig.show()
i was expecting it to show continuous graphs and remove 26 jan
but it somehow messed up when i removed the hash from 26 jan code it would be great if you can help me to produce continuous graphs of indicator from it