@Luca_Pamparana to implement a custom metric is simple: you need to override ignite.metrics.Metric class and reimplement 3 methods: reset, update and compute:
from ignite.metrics import Metric


class MyMetric(Metric):

    def __init__(self, output_transform=lambda x: x):
        self._var1 = None
        self._var2 = None
        super(MyMetric, self).__init__(output_transform=output_transform)

    def reset(self):
        self._var1 = 0
        self._var2 = 0

    def update(self, output):
        y_pred, y = output
        # ... your custom implementation to update internal state on after a single iteration
        # e.g. self._var2 += y.shape[0]
              
    def compute(self):
        # compute the metric using the internal variables
        # res = self._var1 / self._var2
        res = 0
        return res

For other examples, take a look at the source code :
MSE: https://github.com/pytorch/ignite/blob/master/ignite/metrics/mean_squared_error.py 85
etc
HTH