• 21-03-2023, 12:28:02
    #1
    Basit bir araç yapıyorum bir form yaptım tarih, gram ve fiyat bilgisi alıyorum birde seçim yaptırıyorum alış veya satış seçeneklerinden birine göre localstorage'a ayrı objelerde bu verileri kaydediyorum. Amacım alış ve satışlar girildikten sonra güncel kur bilgisinide hesaba katarak ne kadar kar var ne kadar zarar var bunu göstermek. Ama farklı zamanlarda farklı alımlar ve satımlar olacağı için algoritmayı kafamda kuramadım.

    Elimde altınların ne zaman alındığı, kaç gram olarak alındığı, kaçtan alındığı ve ne zaman satıldığı, kaç gram satıldığı ve kaçtan satıldığı bilgisi var. Birde bir değişkene sabit bir güncel kur değeri atadım, buna sonra API ile dinamik bir veri bağlarım.

    Bu hesaplamayı nasıl yapabilirim?

    Aşağıya yazdığım kadarını ekliyorum ama buradan tam istediğim sonucu alamadım ve hata nerede onuda anlayamadım.

            let altinKur = 400;
    
            // Toplam alınan ve satılan gramı hesapla
            let toplamAlinanGram = altinAlimlar.reduce((acc, curr) => acc + curr.gram, 0);
            let toplamSatilanGram = altinSatislar.reduce((acc, curr) => acc + curr.gram, 0);
    
            // Toplam alınan ve satılan tutarı hesapla
            let toplamAlinanTutar = altinAlimlar.reduce((acc, curr) => acc + curr.gram * curr.fiyat, 0);
            let toplamSatilanTutar = altinSatislar.reduce((acc, curr) => acc + curr.gram * curr.fiyat, 0);
    
            // yardımcı fonksiyonlar
            function toplaVeSayi(dizi) {
                let toplam = 0;
                let sayi = 0;
                for (let i = 0; i < dizi.length; i++) {
                    toplam += dizi[i].fiyat * dizi[i].gram;
                    sayi += dizi[i].gram;
                }
                return { toplam, sayi };
            }
    
            function ortalamaFiyat(dizi) {
                const { toplam, sayi } = toplaVeSayi(dizi);
                return toplam / sayi;
            }
    
            // Ortalama alış ve satış fiyatlarını hesapla
            let ortalamaAlisFiyati = ortalamaFiyat(altinAlimlar);
            let ortalamaSatisFiyati = ortalamaFiyat(altinSatislar);
    
            // Portföy hesaplamalar
            let kalanGram =  toplamAlinanGram - toplamSatilanGram;
            let grKurDeger = kalanGram * altinKur;
            let karZarar =  toplamSatilanTutar - toplamAlinanTutar;
            let netKarZarar = grKurDeger - toplamAlinanTutar;
  • 21-03-2023, 12:32:14
    #2
    Hocam toplam alış işlemlerindeki miktarı ve ortalama fiyatı hesaplayıp, aynı şekilde satıştaki toplam miktar ve ortalama fiyatı bulup kârı hesaplayabilirsiniz.
    Örnek olarak 100 liradan 10 gram, 200 liradan 20 gram alındıysa toplamda 5 bin tl harcanıp 30 gram alınmış oluyor. Ortalaması 5000/30 dan 166.66TL geliyor.
  • 21-03-2023, 12:38:18
    #3
    nuriodaci adlı üyeden alıntı: mesajı görüntüle
    Hocam toplam alış işlemlerindeki miktarı ve ortalama fiyatı hesaplayıp, aynı şekilde satıştaki toplam miktar ve ortalama fiyatı bulup kârı hesaplayabilirsiniz.
    Örnek olarak 100 liradan 10 gram, 200 liradan 20 gram alındıysa toplamda 5 bin tl harcanıp 30 gram alınmış oluyor. Ortalaması 5000/30 dan 166.66TL geliyor.
    Yanıtınız için teşekkürler.

    O zaman koda göre toplamAlinanTutar / toplamAlinanGram yapıp ortalamasını alacağım, satış için toplamSatilanTutar / toplamSatilanGram bununda ortalamasını alacağım ve bunları bir değişkene atayıp birbirinden çıkaracağım ve fark kar/zarar'ı gösterecek. Doğru mu anlıyorum hocam?

    Edit;

    Bunları zaten aşağıdaki gibi hesaplamıştım aslında tam burada kalıyorum. Devamında tam olarak ne yapacağımı bulamadım.

    // Ortalama alış ve satış fiyatlarını hesapla
    let ortalamaAlisFiyati = ortalamaFiyat(altinAlimlar);
    let ortalamaSatisFiyati = ortalamaFiyat(altinSatislar);

    Bu veriler elimde mevcut. 5000/30 örneğindeki girişleri yaptığımda ortalamaAlisFiyatı 166.66 veriyor.