Why is there such a drastic performance difference between "every tick" vs "open prices only"?

 

I have a few bots that only go up with "open prices only" but only go down with "every tick", and I do not understand why.

I would like the performance to be similar. I try to have it run on candles like so.

bool IsNewCandle() {
   static datetime lastCandleTime;
   if (Time[0] == lastCandleTime) return false;
   lastCandleTime = Time[0];
   return true;
}
void OnTick() {
   if (IsNewCandle()) {
      // rest of logic goes here
   }
}

I thought as long as you control it for candles like above, then the performance should be similar, but that has clearly not been the case. Can anyone clarify?