25 Feb 2025, 02:26
//| Fonction pour calculer le prix moyen pondéré par le volume       |
//+------------------------------------------------------------------+
double CalculateVolumeWeightedPrice()
{
    double totalVolume = 0.0;      // Volume total des transactions
    double totalValue = 0.0;       // Valeur totale pondérée par le volume

    // Parcourir toutes les transactions de la position actuelle
    for (int i = 0; i < PositionsTotal(); i++)
    {
        // Sélectionner la position
        if (PositionGetTicket(i))
        {
            double volume = PositionGetDouble(POSITION_VOLUME); // Volume de la transaction
            double price = PositionGetDouble(POSITION_PRICE_OPEN); // Prix d'ouverture de la transaction

            // Ajouter au volume total et à la valeur totale
            totalVolume += volume;
            totalValue += volume * price;
        }
    }

    // Éviter une division par zéro
    if (totalVolume == 0.0)
    {
      
        return 0.0;
    }

    // Calculer le prix moyen pondéré par le volume
    double volumeWeightedPrice = totalValue / totalVolume;
    return volumeWeightedPrice;
}