Share a new discussioEMA crossover data points not matching with Tradingview, OHLC not matching

# region imports
from AlgorithmImports import *
# endregion

import numpy as np
import pandas as pd

class EmaCrossoverAlgorithm(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2023, 1, 1)
        self.SetEndDate(2023, 7, 29)
        self.SetCash(1000)
        self.AddEquity("SPY")
        self.resolution = Resolution.Minute

        # Create custom indicators for 20-period and 30-period EMAs
        self.ema_20 = self.EMA("SPY", 20, Resolution.Minute)
        self.ema_30 = self.EMA("SPY", 30, Resolution.Minute)
       # Variables to track previous crossover state
        self.prev_ema_crossover = 0
        # Schedule the event to check for crossovers
        self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.Every(TimeSpan.FromMinutes(3)), self.CheckForCrossovers)

    def OnData(self, slice):
        # Do whatever you need with the incoming data
        pass

    def CheckForCrossovers(self):
        if not self.ema_20.IsReady or not self.ema_30.IsReady:
            return

        ema_20_value = self.ema_20.Current.Value
        ema_30_value = self.ema_30.Current.Value

        # Check for the EMA crossover
        ema_crossover = 0
        if ema_20_value > ema_30_value:
            ema_crossover = 1
        elif ema_20_value < ema_30_value:
            ema_crossover = -1

        # Check for changes in the crossover state
        if ema_crossover != self.prev_ema_crossover:
            self.prev_ema_crossover = ema_crossover

            # Issue new signals only when the crossover direction changes
            if ema_20_value > ema_30_value:
                self.SetHoldings("SPY", 1)
                self.Debug(f"Buy: EMA(20) = {ema_20_value:.2f}, EMA(30) = {ema_30_value:.2f}")
            elif ema_20_value < ema_30_value:
                self.Liquidate()
                self.Debug(f"Sell: EMA(20) = {ema_20_value:.2f}, EMA(30) = {ema_30_value:.2f}")