Revert "feat(trading): show total value of the valume traded in last 24hrs"
This reverts commit be38813a33
.
This commit is contained in:
parent
be38813a33
commit
3a8b40d7a5
@ -19,7 +19,6 @@ import {
|
|||||||
useFundingRate,
|
useFundingRate,
|
||||||
useMarketTradingMode,
|
useMarketTradingMode,
|
||||||
useExternalTwap,
|
useExternalTwap,
|
||||||
getQuoteName,
|
|
||||||
} from '@vegaprotocol/markets';
|
} from '@vegaprotocol/markets';
|
||||||
import { MarketState as State } from '@vegaprotocol/types';
|
import { MarketState as State } from '@vegaprotocol/types';
|
||||||
import { HeaderStat } from '../../components/header';
|
import { HeaderStat } from '../../components/header';
|
||||||
@ -42,7 +41,6 @@ export const MarketHeaderStats = ({ market }: MarketHeaderStatsProps) => {
|
|||||||
const { open: openAssetDetailsDialog } = useAssetDetailsDialogStore();
|
const { open: openAssetDetailsDialog } = useAssetDetailsDialogStore();
|
||||||
|
|
||||||
const asset = getAsset(market);
|
const asset = getAsset(market);
|
||||||
const quoteUnit = getQuoteName(market);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -62,8 +60,6 @@ export const MarketHeaderStats = ({ market }: MarketHeaderStatsProps) => {
|
|||||||
<Last24hVolume
|
<Last24hVolume
|
||||||
marketId={market.id}
|
marketId={market.id}
|
||||||
positionDecimalPlaces={market.positionDecimalPlaces}
|
positionDecimalPlaces={market.positionDecimalPlaces}
|
||||||
marketDecimals={market.decimalPlaces}
|
|
||||||
quoteUnit={quoteUnit}
|
|
||||||
/>
|
/>
|
||||||
</HeaderStat>
|
</HeaderStat>
|
||||||
<HeaderStatMarketTradingMode
|
<HeaderStatMarketTradingMode
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
useDataGridEvents,
|
useDataGridEvents,
|
||||||
} from '@vegaprotocol/datagrid';
|
} from '@vegaprotocol/datagrid';
|
||||||
import type { MarketMaybeWithData } from '@vegaprotocol/markets';
|
import type { MarketMaybeWithData } from '@vegaprotocol/markets';
|
||||||
import { useMarketsColumnDefs } from './use-column-defs';
|
import { useColumnDefs } from './use-column-defs';
|
||||||
import type { DataGridStore } from '../../stores/datagrid-store-slice';
|
import type { DataGridStore } from '../../stores/datagrid-store-slice';
|
||||||
import { type StateCreator, create } from 'zustand';
|
import { type StateCreator, create } from 'zustand';
|
||||||
import { persist } from 'zustand/middleware';
|
import { persist } from 'zustand/middleware';
|
||||||
@ -50,7 +50,7 @@ export const useMarketsStore = create<DataGridSlice>()(
|
|||||||
);
|
);
|
||||||
|
|
||||||
export const MarketListTable = (props: Props) => {
|
export const MarketListTable = (props: Props) => {
|
||||||
const columnDefs = useMarketsColumnDefs();
|
const columnDefs = useColumnDefs();
|
||||||
const gridStore = useMarketsStore((store) => store.gridStore);
|
const gridStore = useMarketsStore((store) => store.gridStore);
|
||||||
const updateGridStore = useMarketsStore((store) => store.updateGridStore);
|
const updateGridStore = useMarketsStore((store) => store.updateGridStore);
|
||||||
|
|
||||||
|
@ -7,31 +7,21 @@ import type {
|
|||||||
} from '@vegaprotocol/datagrid';
|
} from '@vegaprotocol/datagrid';
|
||||||
import { COL_DEFS, SetFilter } from '@vegaprotocol/datagrid';
|
import { COL_DEFS, SetFilter } from '@vegaprotocol/datagrid';
|
||||||
import * as Schema from '@vegaprotocol/types';
|
import * as Schema from '@vegaprotocol/types';
|
||||||
import {
|
import { addDecimalsFormatNumber, toBigNum } from '@vegaprotocol/utils';
|
||||||
addDecimalsFormatNumber,
|
|
||||||
formatNumber,
|
|
||||||
toBigNum,
|
|
||||||
} from '@vegaprotocol/utils';
|
|
||||||
import { ButtonLink, Tooltip } from '@vegaprotocol/ui-toolkit';
|
import { ButtonLink, Tooltip } from '@vegaprotocol/ui-toolkit';
|
||||||
import { useAssetDetailsDialogStore } from '@vegaprotocol/assets';
|
import { useAssetDetailsDialogStore } from '@vegaprotocol/assets';
|
||||||
import type {
|
import type {
|
||||||
MarketFieldsFragment,
|
|
||||||
MarketMaybeWithData,
|
MarketMaybeWithData,
|
||||||
MarketMaybeWithDataAndCandles,
|
MarketMaybeWithDataAndCandles,
|
||||||
} from '@vegaprotocol/markets';
|
} from '@vegaprotocol/markets';
|
||||||
import { MarketActionsDropdown } from './market-table-actions';
|
import { MarketActionsDropdown } from './market-table-actions';
|
||||||
import {
|
import { calcCandleVolume, getAsset } from '@vegaprotocol/markets';
|
||||||
calcCandleVolume,
|
|
||||||
calcCandleVolumePrice,
|
|
||||||
getAsset,
|
|
||||||
getQuoteName,
|
|
||||||
} from '@vegaprotocol/markets';
|
|
||||||
import { MarketCodeCell } from './market-code-cell';
|
import { MarketCodeCell } from './market-code-cell';
|
||||||
import { useT } from '../../lib/use-t';
|
import { useT } from '../../lib/use-t';
|
||||||
|
|
||||||
const { MarketTradingMode, AuctionTrigger } = Schema;
|
const { MarketTradingMode, AuctionTrigger } = Schema;
|
||||||
|
|
||||||
export const useMarketsColumnDefs = () => {
|
export const useColumnDefs = () => {
|
||||||
const t = useT();
|
const t = useT();
|
||||||
const { open: openAssetDetailsDialog } = useAssetDetailsDialogStore();
|
const { open: openAssetDetailsDialog } = useAssetDetailsDialogStore();
|
||||||
return useMemo<ColDef[]>(
|
return useMemo<ColDef[]>(
|
||||||
@ -168,25 +158,11 @@ export const useMarketsColumnDefs = () => {
|
|||||||
}: ValueFormatterParams<MarketMaybeWithDataAndCandles, 'candles'>) => {
|
}: ValueFormatterParams<MarketMaybeWithDataAndCandles, 'candles'>) => {
|
||||||
const candles = data?.candles;
|
const candles = data?.candles;
|
||||||
const vol = candles ? calcCandleVolume(candles) : '0';
|
const vol = candles ? calcCandleVolume(candles) : '0';
|
||||||
const quoteName = getQuoteName(data as MarketFieldsFragment);
|
|
||||||
const volPrice =
|
|
||||||
candles &&
|
|
||||||
calcCandleVolumePrice(
|
|
||||||
candles,
|
|
||||||
data.decimalPlaces,
|
|
||||||
data.positionDecimalPlaces
|
|
||||||
);
|
|
||||||
|
|
||||||
const volume =
|
const volume =
|
||||||
data && vol && vol !== '0'
|
data && vol && vol !== '0'
|
||||||
? addDecimalsFormatNumber(vol, data.positionDecimalPlaces)
|
? addDecimalsFormatNumber(vol, data.positionDecimalPlaces)
|
||||||
: '0.00';
|
: '0.00';
|
||||||
const volumePrice =
|
return volume;
|
||||||
volPrice && formatNumber(volPrice, data?.decimalPlaces);
|
|
||||||
|
|
||||||
return volumePrice
|
|
||||||
? `${volume} (${volumePrice} ${quoteName})`
|
|
||||||
: volume;
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
import { calcCandleVolume, calcCandleVolumePrice } from '../../market-utils';
|
import { calcCandleVolume } from '../../market-utils';
|
||||||
import {
|
import { addDecimalsFormatNumber, isNumeric } from '@vegaprotocol/utils';
|
||||||
addDecimalsFormatNumber,
|
|
||||||
formatNumber,
|
|
||||||
isNumeric,
|
|
||||||
} from '@vegaprotocol/utils';
|
|
||||||
import { Tooltip } from '@vegaprotocol/ui-toolkit';
|
import { Tooltip } from '@vegaprotocol/ui-toolkit';
|
||||||
import { useCandles } from '../../hooks';
|
import { useCandles } from '../../hooks';
|
||||||
import { useT } from '../../use-t';
|
import { useT } from '../../use-t';
|
||||||
@ -13,17 +9,13 @@ interface Props {
|
|||||||
positionDecimalPlaces?: number;
|
positionDecimalPlaces?: number;
|
||||||
formatDecimals?: number;
|
formatDecimals?: number;
|
||||||
initialValue?: string;
|
initialValue?: string;
|
||||||
marketDecimals?: number;
|
|
||||||
quoteUnit?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Last24hVolume = ({
|
export const Last24hVolume = ({
|
||||||
marketId,
|
marketId,
|
||||||
marketDecimals,
|
|
||||||
positionDecimalPlaces,
|
positionDecimalPlaces,
|
||||||
formatDecimals,
|
formatDecimals,
|
||||||
initialValue,
|
initialValue,
|
||||||
quoteUnit,
|
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const t = useT();
|
const t = useT();
|
||||||
const { oneDayCandles, fiveDaysCandles } = useCandles({
|
const { oneDayCandles, fiveDaysCandles } = useCandles({
|
||||||
@ -36,11 +28,6 @@ export const Last24hVolume = ({
|
|||||||
(!oneDayCandles || oneDayCandles?.length === 0)
|
(!oneDayCandles || oneDayCandles?.length === 0)
|
||||||
) {
|
) {
|
||||||
const candleVolume = calcCandleVolume(fiveDaysCandles);
|
const candleVolume = calcCandleVolume(fiveDaysCandles);
|
||||||
const candleVolumePrice = calcCandleVolumePrice(
|
|
||||||
fiveDaysCandles,
|
|
||||||
marketDecimals,
|
|
||||||
positionDecimalPlaces
|
|
||||||
);
|
|
||||||
const candleVolumeValue =
|
const candleVolumeValue =
|
||||||
candleVolume && isNumeric(positionDecimalPlaces)
|
candleVolume && isNumeric(positionDecimalPlaces)
|
||||||
? addDecimalsFormatNumber(
|
? addDecimalsFormatNumber(
|
||||||
@ -55,8 +42,8 @@ export const Last24hVolume = ({
|
|||||||
<div>
|
<div>
|
||||||
<span className="flex flex-col">
|
<span className="flex flex-col">
|
||||||
{t(
|
{t(
|
||||||
'24 hour change is unavailable at this time. The volume change in the last 120 hours is {{candleVolumeValue}} ({{candleVolumePrice}} {{quoteUnit}})',
|
'24 hour change is unavailable at this time. The volume change in the last 120 hours is {{candleVolumeValue}}',
|
||||||
{ candleVolumeValue, candleVolumePrice, quoteUnit }
|
{ candleVolumeValue }
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -70,18 +57,10 @@ export const Last24hVolume = ({
|
|||||||
? calcCandleVolume(oneDayCandles)
|
? calcCandleVolume(oneDayCandles)
|
||||||
: initialValue;
|
: initialValue;
|
||||||
|
|
||||||
const candleVolumePrice = oneDayCandles
|
|
||||||
? calcCandleVolumePrice(
|
|
||||||
oneDayCandles,
|
|
||||||
marketDecimals,
|
|
||||||
positionDecimalPlaces
|
|
||||||
)
|
|
||||||
: initialValue;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
description={t(
|
description={t(
|
||||||
'The total number of contracts traded in the last 24 hours. (Total value of contracts traded in the last 24 hours)'
|
'The total number of contracts traded in the last 24 hours.'
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
@ -91,12 +70,7 @@ export const Last24hVolume = ({
|
|||||||
positionDecimalPlaces,
|
positionDecimalPlaces,
|
||||||
formatDecimals
|
formatDecimals
|
||||||
)
|
)
|
||||||
: '-'}{' '}
|
: '-'}
|
||||||
(
|
|
||||||
{candleVolumePrice && isNumeric(positionDecimalPlaces)
|
|
||||||
? formatNumber(candleVolumePrice, formatDecimals)
|
|
||||||
: '-'}{' '}
|
|
||||||
{quoteUnit})
|
|
||||||
</span>
|
</span>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
);
|
);
|
||||||
|
@ -155,7 +155,6 @@ export const MarketVolumeInfoPanel = ({ market }: MarketInfoProps) => {
|
|||||||
<Last24hVolume
|
<Last24hVolume
|
||||||
marketId={market.id}
|
marketId={market.id}
|
||||||
positionDecimalPlaces={market.positionDecimalPlaces}
|
positionDecimalPlaces={market.positionDecimalPlaces}
|
||||||
marketDecimals={market.decimalPlaces}
|
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
openInterest: dash(data?.openInterest),
|
openInterest: dash(data?.openInterest),
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import * as Schema from '@vegaprotocol/types';
|
import * as Schema from '@vegaprotocol/types';
|
||||||
import type { Market, MarketMaybeWithDataAndCandles } from './markets-provider';
|
import type { Market, MarketMaybeWithDataAndCandles } from './markets-provider';
|
||||||
import {
|
import {
|
||||||
calcCandleVolumePrice,
|
|
||||||
calcTradedFactor,
|
calcTradedFactor,
|
||||||
filterAndSortMarkets,
|
filterAndSortMarkets,
|
||||||
sumFeesFactors,
|
sumFeesFactors,
|
||||||
@ -146,31 +145,3 @@ describe('sumFeesFactors', () => {
|
|||||||
).toEqual(0.6);
|
).toEqual(0.6);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('calcCandleVolumePrice', () => {
|
|
||||||
it('calculates the volume price', () => {
|
|
||||||
const candles = [
|
|
||||||
{
|
|
||||||
volume: '1000',
|
|
||||||
high: '100',
|
|
||||||
low: '10',
|
|
||||||
open: '15',
|
|
||||||
close: '90',
|
|
||||||
periodStart: '2022-05-18T13:08:27.693537312Z',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
volume: '1000',
|
|
||||||
high: '100',
|
|
||||||
low: '10',
|
|
||||||
open: '15',
|
|
||||||
close: '90',
|
|
||||||
periodStart: '2022-05-18T14:08:27.693537312Z',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
const marketDecimals = 3;
|
|
||||||
const positionDecimalPlaces = 2;
|
|
||||||
expect(
|
|
||||||
calcCandleVolumePrice(candles, marketDecimals, positionDecimalPlaces)
|
|
||||||
).toEqual('2');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
import {
|
import { formatNumberPercentage, toBigNum } from '@vegaprotocol/utils';
|
||||||
addDecimal,
|
|
||||||
formatNumberPercentage,
|
|
||||||
toBigNum,
|
|
||||||
} from '@vegaprotocol/utils';
|
|
||||||
import { MarketState, MarketTradingMode } from '@vegaprotocol/types';
|
import { MarketState, MarketTradingMode } from '@vegaprotocol/types';
|
||||||
import BigNumber from 'bignumber.js';
|
import BigNumber from 'bignumber.js';
|
||||||
import orderBy from 'lodash/orderBy';
|
import orderBy from 'lodash/orderBy';
|
||||||
@ -151,51 +147,10 @@ export const calcCandleHigh = (candles: Candle[]): string | undefined => {
|
|||||||
.toString();
|
.toString();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* The total number of contracts traded in the last 24 hours.
|
|
||||||
*
|
|
||||||
* @param candles
|
|
||||||
* @returns the volume of a given set of candles
|
|
||||||
*/
|
|
||||||
export const calcCandleVolume = (candles: Candle[]): string | undefined =>
|
export const calcCandleVolume = (candles: Candle[]): string | undefined =>
|
||||||
candles &&
|
candles &&
|
||||||
candles.reduce((acc, c) => new BigNumber(acc).plus(c.volume).toString(), '0');
|
candles.reduce((acc, c) => new BigNumber(acc).plus(c.volume).toString(), '0');
|
||||||
|
|
||||||
/**
|
|
||||||
* The total number of contracts traded in the last 24 hours. (Total value of contracts traded in the last 24 hours)
|
|
||||||
* The volume is calculated as the sum of the product of the volume and the high price of each candle.
|
|
||||||
* The result is formatted using positionDecimalPlaces to account for the position size.
|
|
||||||
* The result is formatted using marketDecimals to account for the market precision.
|
|
||||||
*
|
|
||||||
* @param candles
|
|
||||||
* @param marketDecimals
|
|
||||||
* @param positionDecimalPlaces
|
|
||||||
* @returns the volume (in quote price) of a given set of candles
|
|
||||||
*/
|
|
||||||
export const calcCandleVolumePrice = (
|
|
||||||
candles: Candle[],
|
|
||||||
marketDecimals: number = 1,
|
|
||||||
positionDecimalPlaces: number = 1
|
|
||||||
): string | undefined =>
|
|
||||||
candles &&
|
|
||||||
candles.reduce(
|
|
||||||
(acc, c) =>
|
|
||||||
new BigNumber(acc)
|
|
||||||
.plus(
|
|
||||||
BigNumber(addDecimal(c.volume, positionDecimalPlaces)).times(
|
|
||||||
addDecimal(c.high, marketDecimals)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.toString(),
|
|
||||||
'0'
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculates the traded factor of a given market.
|
|
||||||
*
|
|
||||||
* @param m
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export const calcTradedFactor = (m: MarketMaybeWithDataAndCandles) => {
|
export const calcTradedFactor = (m: MarketMaybeWithDataAndCandles) => {
|
||||||
const volume = Number(calcCandleVolume(m.candles || []) || 0);
|
const volume = Number(calcCandleVolume(m.candles || []) || 0);
|
||||||
const price = m.data?.markPrice ? Number(m.data.markPrice) : 0;
|
const price = m.data?.markPrice ? Number(m.data.markPrice) : 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user