Показать сообщение отдельно
  #15 (permalink)  
Старый 24.06.2022, 23:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Redline,
Сообщение от Redline
Нужно научить код присваивать уникальный идентификатор к каждому объекту правильно понимаю?
условия известны только вам, формализовать их и максимально учесть все нюансы ваша задача.

<body>
    <script>
        let json = [{
                "symbol": "ORANGE",
                "id": 479640841,
                "side": "SELL",
                "price": "10",
                "qty": "2",
                "time": 1633371930706
            },
            {
                "symbol": "ORANGE",
                "id": 479640941,
                "side": "SELL",
                "price": "10",
                "qty": "1",
                "time": 1633371930899
            },
            {
                "symbol": "ORANGE",
                "id": 479640952,
                "side": "BUY",
                "price": "20",
                "qty": "3",
                "time": 1633371940488
            },
            {
                "symbol": "APPLE",
                "id": 193964871,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956055821
            },
            {
                "symbol": "APPLE",
                "id": 193964907,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956058086
            },
            {
                "symbol": "APPLE",
                "id": 193964908,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956058086
            },
            {
                "symbol": "APPLE",
                "id": 193965481,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956074364
            },
            {
                "symbol": "APPLE",
                "id": 193967061,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956209504
            },
            {
                "symbol": "APPLE",
                "id": 193967211,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956222593
            },
            {
                "symbol": "APPLE",
                "id": 193968864,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956403438
            },
            {
                "symbol": "APPLE",
                "id": 193969405,
                "side": "SELL",
                "price": "20",
                "qty": "70",
                "time": 1633956450685
            },
            {
                "symbol": "APPLE",
                "id": 193968888,
                "side": "BUY",
                "price": "15",
                "qty": "10",
                "time": 1633956403438
            },
            {
                "symbol": "APPLE",
                "id": 193969444,
                "side": "SELL",
                "price": "20",
                "qty": "10",
                "time": 1633956450685
            }
        ];

        let arr = json.reduce((ar, {
            symbol,
            id,
            side,
            price,
            qty,
            time
        }) => {
            side = side === "BUY" ? "LONG" : "SHORT";
            let e = ar.at(-1);
            if(!e || !e.open) {
            e = {
                symbol,
                id,
                side,
                open: 0,
                profit: 0,
                volume: 0,
                openTime: time
            };
            ar.push(e);
            };

            e.closedTime = time;

            let period = e.side;
            price *= qty;
            if (period === side) {
                e.open += +qty;
                e.volume += +qty;
                e.profit += price;
            } else {
                if (side === "LONG") e.profit -= price;
                else e.profit = price - e.profit;
                e.open -= qty;
            }

            return ar

        }, []);

        document.write(`<pre>${JSON.stringify(arr,'',1)}</pre>`, )
    </script>
</body>
Ответить с цитированием