R
Size: a a a
R
R
D
R
switchMap((orders: IOrder[]) => {
// TODO: check for stop loss
// TODO: shouldnt be sold in the same frame as bought
if (orders.length === 0) {
return of(void 0);
}
return from(orders)
.pipe(
mergeMap((order) => {
// продаем если выставленная цена ниже или равна локальному хаю
const isSelling = order.initialPrice <= row.high;
const isSameFrame = order.createdDate === row.date;
console.log(row.date, 'same frame', order.createdDate === row.date);
if (isSelling && !isSameFrame) {
return this.ordersStore.completeOrder(order.id, row.date, row.high);
}
return of(void 0);
}),
skip(orders.length - 1),
);
}),
R
M
RY
D
R
RY
RY
const filteredOrders = orders.filter(isSelling && !isSameFrame);
return this.service.completeOrders(filteredOrders, row.date, ...).pipe()
-- апи для массовых действий, принимающий массивconst filteredOrders = orders.filter(isSelling && !isSameFrame);
return forkJoin(filteredOrders.map(order => this.service.completeOrder(order))).pipe()
-- это вариант для бедныхR
AB
R
AB
R
RY
AB
OP
AB