0
# 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

Derek O
  • 16,770
  • 4
  • 24
  • 43

0 Answers0