@orderly.network/hooks 1.3.2 → 1.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/dataProvider.d.ts.map +1 -1
- package/esm/dataProvider.js +0 -2
- package/esm/dataProvider.js.map +1 -1
- package/esm/index.d.ts +4 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/orderly/orderlyHooks.d.ts +3 -2
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +3 -2
- package/esm/orderly/orderlyHooks.js.map +1 -1
- package/esm/orderly/useCollateral.js +2 -2
- package/esm/orderly/useCollateral.js.map +1 -1
- package/esm/orderly/useMarginRatio.js +1 -1
- package/esm/orderly/useMarginRatio.js.map +1 -1
- package/esm/orderly/useMaxQty.js +2 -2
- package/esm/orderly/useMaxQty.js.map +1 -1
- package/esm/orderly/useOrderEntry.d.ts.map +1 -1
- package/esm/orderly/useOrderEntry.js +15 -12
- package/esm/orderly/useOrderEntry.js.map +1 -1
- package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/esm/orderly/useOrderEntryNext/index.js +2 -0
- package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
- package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +91 -26
- package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/esm/orderly/usePositionStream/utils.d.ts +8 -0
- package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/esm/orderly/usePositionStream/utils.js +34 -0
- package/esm/orderly/usePositionStream/utils.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +30 -43
- package/esm/orderly/usePrivateDataObserver.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +211 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js +226 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
- package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/esm/services/orderCreator/baseCreator.d.ts +14 -0
- package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseCreator.js +92 -0
- package/esm/services/orderCreator/baseCreator.js.map +1 -0
- package/esm/services/orderCreator/factory.d.ts +7 -0
- package/esm/services/orderCreator/factory.d.ts.map +1 -0
- package/esm/services/orderCreator/factory.js +45 -0
- package/esm/services/orderCreator/factory.js.map +1 -0
- package/esm/services/orderCreator/fokCreator.d.ts +4 -0
- package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/fokCreator.js +5 -0
- package/esm/services/orderCreator/fokCreator.js.map +1 -0
- package/esm/services/orderCreator/generalCreator.d.ts +8 -0
- package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/generalCreator.js +15 -0
- package/esm/services/orderCreator/generalCreator.js.map +1 -0
- package/esm/services/orderCreator/interface.d.ts +23 -0
- package/esm/services/orderCreator/interface.d.ts.map +1 -0
- package/esm/services/orderCreator/interface.js +3 -0
- package/esm/services/orderCreator/interface.js.map +1 -0
- package/esm/services/orderCreator/iocCreator.d.ts +4 -0
- package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/iocCreator.js +5 -0
- package/esm/services/orderCreator/iocCreator.js.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.js +69 -0
- package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.js +18 -0
- package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.js +5 -0
- package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
- package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.js +160 -0
- package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/interface.d.ts +8 -0
- package/esm/services/orderMerge/interface.d.ts.map +1 -0
- package/esm/services/orderMerge/interface.js +3 -0
- package/esm/services/orderMerge/interface.js.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/esm/usePoster.d.ts +3 -0
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +3 -1
- package/esm/usePoster.js.map +1 -1
- package/esm/utils/createOrder.d.ts +0 -55
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +0 -334
- package/esm/utils/createOrder.js.map +1 -1
- package/esm/utils/fokCreator.d.ts +1 -0
- package/esm/utils/fokCreator.d.ts.map +1 -0
- package/esm/utils/fokCreator.js +2 -0
- package/esm/utils/fokCreator.js.map +1 -0
- package/esm/utils/index.d.ts +5 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +6 -0
- package/esm/utils/index.js.map +1 -0
- package/esm/utils/order.d.ts +2 -0
- package/esm/utils/order.d.ts.map +1 -0
- package/esm/utils/order.js +3 -0
- package/esm/utils/order.js.map +1 -0
- package/esm/utils/swr.d.ts +3 -1
- package/esm/utils/swr.d.ts.map +1 -1
- package/esm/utils/swr.js +123 -89
- package/esm/utils/swr.js.map +1 -1
- package/esm/utils/ws.d.ts +2 -0
- package/esm/utils/ws.d.ts.map +1 -0
- package/esm/utils/ws.js +9 -0
- package/esm/utils/ws.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/lib/dataProvider.d.ts.map +1 -1
- package/lib/dataProvider.js +0 -2
- package/lib/dataProvider.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -3
- package/lib/index.js.map +1 -1
- package/lib/orderly/orderlyHooks.d.ts +3 -2
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +6 -2
- package/lib/orderly/orderlyHooks.js.map +1 -1
- package/lib/orderly/useCollateral.js +2 -2
- package/lib/orderly/useCollateral.js.map +1 -1
- package/lib/orderly/useMarginRatio.js +1 -1
- package/lib/orderly/useMarginRatio.js.map +1 -1
- package/lib/orderly/useMaxQty.js +2 -2
- package/lib/orderly/useMaxQty.js.map +1 -1
- package/lib/orderly/useOrderEntry.d.ts.map +1 -1
- package/lib/orderly/useOrderEntry.js +14 -12
- package/lib/orderly/useOrderEntry.js.map +1 -1
- package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/lib/orderly/useOrderEntryNext/index.js +3 -0
- package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
- package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +89 -25
- package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/lib/orderly/usePositionStream/utils.d.ts +8 -0
- package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/lib/orderly/usePositionStream/utils.js +55 -0
- package/lib/orderly/usePositionStream/utils.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +28 -41
- package/lib/orderly/usePrivateDataObserver.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +218 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js +252 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
- package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/lib/services/orderCreator/baseCreator.d.ts +14 -0
- package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseCreator.js +102 -0
- package/lib/services/orderCreator/baseCreator.js.map +1 -0
- package/lib/services/orderCreator/factory.d.ts +7 -0
- package/lib/services/orderCreator/factory.d.ts.map +1 -0
- package/lib/services/orderCreator/factory.js +54 -0
- package/lib/services/orderCreator/factory.js.map +1 -0
- package/lib/services/orderCreator/fokCreator.d.ts +4 -0
- package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/fokCreator.js +15 -0
- package/lib/services/orderCreator/fokCreator.js.map +1 -0
- package/lib/services/orderCreator/generalCreator.d.ts +8 -0
- package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/generalCreator.js +25 -0
- package/lib/services/orderCreator/generalCreator.js.map +1 -0
- package/lib/services/orderCreator/interface.d.ts +23 -0
- package/lib/services/orderCreator/interface.d.ts.map +1 -0
- package/lib/services/orderCreator/interface.js +6 -0
- package/lib/services/orderCreator/interface.js.map +1 -0
- package/lib/services/orderCreator/iocCreator.d.ts +4 -0
- package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/iocCreator.js +15 -0
- package/lib/services/orderCreator/iocCreator.js.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.js +79 -0
- package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.js +28 -0
- package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.js +15 -0
- package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
- package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.js +170 -0
- package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/interface.d.ts +8 -0
- package/lib/services/orderMerge/interface.d.ts.map +1 -0
- package/lib/services/orderMerge/interface.js +6 -0
- package/lib/services/orderMerge/interface.js.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/lib/usePoster.d.ts +3 -0
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +3 -1
- package/lib/usePoster.js.map +1 -1
- package/lib/utils/createOrder.d.ts +0 -55
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +3 -375
- package/lib/utils/createOrder.js.map +1 -1
- package/lib/utils/fokCreator.d.ts +1 -0
- package/lib/utils/fokCreator.d.ts.map +1 -0
- package/lib/utils/fokCreator.js +3 -0
- package/lib/utils/fokCreator.js.map +1 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +36 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/order.d.ts +2 -0
- package/lib/utils/order.d.ts.map +1 -0
- package/lib/utils/order.js +6 -0
- package/lib/utils/order.js.map +1 -0
- package/lib/utils/swr.d.ts +3 -1
- package/lib/utils/swr.d.ts.map +1 -1
- package/lib/utils/swr.js +128 -89
- package/lib/utils/swr.js.map +1 -1
- package/lib/utils/ws.d.ts +2 -0
- package/lib/utils/ws.d.ts.map +1 -0
- package/lib/utils/ws.js +19 -0
- package/lib/utils/ws.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +9 -7
- package/esm/orderly/useOrderStream.d.ts.map +0 -1
- package/esm/orderly/useOrderStream.js.map +0 -1
- package/esm/orderly/usePositionStream.d.ts.map +0 -1
- package/esm/orderly/usePositionStream.js.map +0 -1
- package/lib/orderly/useOrderStream.d.ts.map +0 -1
- package/lib/orderly/useOrderStream.js.map +0 -1
- package/lib/orderly/usePositionStream.d.ts.map +0 -1
- package/lib/orderly/usePositionStream.js.map +0 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
calculateHelper: function() {
|
|
13
|
+
return calculateHelper;
|
|
14
|
+
},
|
|
15
|
+
offsetPercentageToPrice: function() {
|
|
16
|
+
return offsetPercentageToPrice;
|
|
17
|
+
},
|
|
18
|
+
offsetToPrice: function() {
|
|
19
|
+
return offsetToPrice;
|
|
20
|
+
},
|
|
21
|
+
pnlToPrice: function() {
|
|
22
|
+
return pnlToPrice;
|
|
23
|
+
},
|
|
24
|
+
priceToOffset: function() {
|
|
25
|
+
return priceToOffset;
|
|
26
|
+
},
|
|
27
|
+
priceToOffsetPercentage: function() {
|
|
28
|
+
return priceToOffsetPercentage;
|
|
29
|
+
},
|
|
30
|
+
priceToPnl: function() {
|
|
31
|
+
return priceToPnl;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const _types = require("@orderly.network/types");
|
|
35
|
+
const _utils = require("@orderly.network/utils");
|
|
36
|
+
function offsetToPrice(inputs) {
|
|
37
|
+
const { qty, offset, entryPrice, orderType, orderSide } = inputs;
|
|
38
|
+
if (!offset) return;
|
|
39
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
40
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
41
|
+
return new _utils.Decimal(entryPrice).add(new _utils.Decimal(offset)).toNumber();
|
|
42
|
+
}
|
|
43
|
+
return new _utils.Decimal(entryPrice).minus(new _utils.Decimal(offset)).toNumber();
|
|
44
|
+
}
|
|
45
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
46
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
47
|
+
return new _utils.Decimal(entryPrice).minus(new _utils.Decimal(offset)).toNumber();
|
|
48
|
+
}
|
|
49
|
+
return new _utils.Decimal(entryPrice).add(new _utils.Decimal(offset)).toNumber();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function priceToOffset(inputs, options = {}) {
|
|
53
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
54
|
+
const { symbol } = options;
|
|
55
|
+
let decimal;
|
|
56
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
57
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
58
|
+
decimal = new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice));
|
|
59
|
+
}
|
|
60
|
+
decimal = new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice));
|
|
61
|
+
}
|
|
62
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
63
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
64
|
+
decimal = new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice));
|
|
65
|
+
}
|
|
66
|
+
decimal = new _utils.Decimal(entryPrice).minus(new _utils.Decimal(price));
|
|
67
|
+
}
|
|
68
|
+
if (symbol) {
|
|
69
|
+
return decimal.abs().todp(symbol.quote_dp, 4).toNumber();
|
|
70
|
+
}
|
|
71
|
+
return decimal.abs().toNumber();
|
|
72
|
+
}
|
|
73
|
+
function offsetPercentageToPrice(inputs) {
|
|
74
|
+
const { qty, percentage, entryPrice, orderType, orderSide } = inputs;
|
|
75
|
+
if (!percentage) return;
|
|
76
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
77
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
78
|
+
return new _utils.Decimal(1).add(new _utils.Decimal(percentage)).mul(new _utils.Decimal(entryPrice)).toNumber();
|
|
79
|
+
}
|
|
80
|
+
return new _utils.Decimal(1).minus(new _utils.Decimal(percentage)).mul(new _utils.Decimal(entryPrice)).toNumber();
|
|
81
|
+
}
|
|
82
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
83
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
84
|
+
return new _utils.Decimal(1).minus(new _utils.Decimal(percentage)).mul(new _utils.Decimal(entryPrice)).toNumber();
|
|
85
|
+
}
|
|
86
|
+
return new _utils.Decimal(1).add(new _utils.Decimal(percentage)).mul(new _utils.Decimal(entryPrice)).toNumber();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function priceToOffsetPercentage(inputs) {
|
|
90
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
91
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
92
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
93
|
+
return new _utils.Decimal(price).div(new _utils.Decimal(entryPrice)).minus(1).toNumber();
|
|
94
|
+
}
|
|
95
|
+
return new _utils.Decimal(1).minus(new _utils.Decimal(price).div(new _utils.Decimal(entryPrice))).toNumber();
|
|
96
|
+
}
|
|
97
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
98
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
99
|
+
return new _utils.Decimal(1).minus(new _utils.Decimal(price).div(new _utils.Decimal(entryPrice))).toNumber();
|
|
100
|
+
}
|
|
101
|
+
return new _utils.Decimal(price).div(new _utils.Decimal(entryPrice)).minus(1).toNumber();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function pnlToPrice(inputs) {
|
|
105
|
+
const { qty, pnl, entryPrice, orderType, orderSide } = inputs;
|
|
106
|
+
;
|
|
107
|
+
if (!pnl) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
111
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
112
|
+
return new _utils.Decimal(entryPrice).plus(new _utils.Decimal(pnl).div(new _utils.Decimal(qty))).toNumber();
|
|
113
|
+
}
|
|
114
|
+
return new _utils.Decimal(entryPrice).add(new _utils.Decimal(pnl).div(new _utils.Decimal(qty))).toNumber();
|
|
115
|
+
}
|
|
116
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
117
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
118
|
+
return new _utils.Decimal(entryPrice).add(new _utils.Decimal(pnl).div(new _utils.Decimal(qty))).toNumber();
|
|
119
|
+
}
|
|
120
|
+
return new _utils.Decimal(entryPrice).add(new _utils.Decimal(pnl).div(new _utils.Decimal(qty))).toNumber();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function priceToPnl(inputs, options = {}) {
|
|
124
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
125
|
+
const { symbol } = options;
|
|
126
|
+
let decimal = _utils.zero;
|
|
127
|
+
if (orderSide === _types.OrderSide.BUY) {
|
|
128
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
129
|
+
decimal = new _utils.Decimal(qty).mul(new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice)));
|
|
130
|
+
}
|
|
131
|
+
decimal = new _utils.Decimal(qty).mul(new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice)));
|
|
132
|
+
}
|
|
133
|
+
if (orderSide === _types.OrderSide.SELL) {
|
|
134
|
+
if (orderType === _types.AlgoOrderType.TAKE_PROFIT) {
|
|
135
|
+
decimal = new _utils.Decimal(qty).mul(new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice)));
|
|
136
|
+
}
|
|
137
|
+
decimal = new _utils.Decimal(qty).mul(new _utils.Decimal(price).minus(new _utils.Decimal(entryPrice)));
|
|
138
|
+
}
|
|
139
|
+
if (symbol) {
|
|
140
|
+
return decimal.todp(symbol.quote_dp, 4).toNumber();
|
|
141
|
+
}
|
|
142
|
+
return decimal.toNumber();
|
|
143
|
+
}
|
|
144
|
+
function calculateHelper(key, inputs, options = {}) {
|
|
145
|
+
const { symbol } = options;
|
|
146
|
+
// if not need to be computed, return the value directly
|
|
147
|
+
if (key !== "quantity" && key !== "tp_trigger_price" && key !== "sl_trigger_price" && key !== "tp_pnl" && key !== "sl_pnl" && key !== "tp_offset" && key !== "sl_offset" && key !== "tp_offset_percentage" && key !== "sl_offset_percentage") {
|
|
148
|
+
return {
|
|
149
|
+
[key]: inputs.value
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const orderType = key.startsWith("tp_") ? _types.AlgoOrderType.TAKE_PROFIT : _types.AlgoOrderType.STOP_LOSS;
|
|
153
|
+
const keyPrefix = key.slice(0, 3);
|
|
154
|
+
let qty = Number(key === "quantity" ? inputs.value : inputs.qty);
|
|
155
|
+
if (qty === 0) return {
|
|
156
|
+
[`${keyPrefix}trigger_price`]: "",
|
|
157
|
+
// [`${keyPrefix}offset`]: "",
|
|
158
|
+
// [`${keyPrefix}offset_percentage`]: "",
|
|
159
|
+
[`${keyPrefix}pnl`]: "",
|
|
160
|
+
[key]: inputs.value
|
|
161
|
+
};
|
|
162
|
+
let trigger_price, offset, offset_percentage, pnl;
|
|
163
|
+
switch(key){
|
|
164
|
+
case "tp_trigger_price":
|
|
165
|
+
case "sl_trigger_price":
|
|
166
|
+
{
|
|
167
|
+
trigger_price = inputs.value;
|
|
168
|
+
// if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl
|
|
169
|
+
if (inputs.value === "") {
|
|
170
|
+
return {
|
|
171
|
+
[`${keyPrefix}trigger_price`]: trigger_price,
|
|
172
|
+
[`${keyPrefix}offset`]: "",
|
|
173
|
+
[`${keyPrefix}offset_percentage`]: "",
|
|
174
|
+
[`${keyPrefix}pnl`]: ""
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case "tp_pnl":
|
|
180
|
+
case "sl_pnl":
|
|
181
|
+
{
|
|
182
|
+
pnl = inputs.value;
|
|
183
|
+
trigger_price = pnlToPrice({
|
|
184
|
+
qty,
|
|
185
|
+
pnl: Number(inputs.value),
|
|
186
|
+
entryPrice: inputs.entryPrice,
|
|
187
|
+
orderSide: inputs.orderSide,
|
|
188
|
+
orderType
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
case "tp_offset":
|
|
193
|
+
case "sl_offset":
|
|
194
|
+
{
|
|
195
|
+
offset = inputs.value;
|
|
196
|
+
trigger_price = offsetToPrice({
|
|
197
|
+
qty,
|
|
198
|
+
offset: Number(inputs.value),
|
|
199
|
+
entryPrice: inputs.entryPrice,
|
|
200
|
+
orderSide: inputs.orderSide,
|
|
201
|
+
orderType: key === "tp_offset" ? _types.AlgoOrderType.TAKE_PROFIT : _types.AlgoOrderType.STOP_LOSS
|
|
202
|
+
});
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case "tp_offset_percentage":
|
|
206
|
+
case "sl_offset_percentage":
|
|
207
|
+
{
|
|
208
|
+
offset_percentage = inputs.value;
|
|
209
|
+
trigger_price = offsetPercentageToPrice({
|
|
210
|
+
qty,
|
|
211
|
+
percentage: Number(inputs.value),
|
|
212
|
+
entryPrice: inputs.entryPrice,
|
|
213
|
+
orderSide: inputs.orderSide,
|
|
214
|
+
orderType
|
|
215
|
+
});
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (!trigger_price) return {
|
|
220
|
+
[`${keyPrefix}trigger_price`]: "",
|
|
221
|
+
[`${keyPrefix}offset`]: "",
|
|
222
|
+
[`${keyPrefix}offset_percentage`]: "",
|
|
223
|
+
[`${keyPrefix}pnl`]: "",
|
|
224
|
+
[key]: inputs.value
|
|
225
|
+
};
|
|
226
|
+
return {
|
|
227
|
+
[`${keyPrefix}trigger_price`]: symbol ? new _utils.Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber() : trigger_price,
|
|
228
|
+
[`${keyPrefix}offset`]: offset ?? priceToOffset({
|
|
229
|
+
qty,
|
|
230
|
+
price: Number(trigger_price),
|
|
231
|
+
entryPrice: inputs.entryPrice,
|
|
232
|
+
orderSide: inputs.orderSide,
|
|
233
|
+
orderType
|
|
234
|
+
}, options),
|
|
235
|
+
[`${keyPrefix}offset_percentage`]: offset_percentage ?? priceToOffsetPercentage({
|
|
236
|
+
qty,
|
|
237
|
+
price: Number(trigger_price),
|
|
238
|
+
entryPrice: inputs.entryPrice,
|
|
239
|
+
orderSide: inputs.orderSide,
|
|
240
|
+
orderType
|
|
241
|
+
}),
|
|
242
|
+
[`${keyPrefix}pnl`]: pnl ?? priceToPnl({
|
|
243
|
+
qty,
|
|
244
|
+
price: Number(trigger_price),
|
|
245
|
+
entryPrice: inputs.entryPrice,
|
|
246
|
+
orderSide: inputs.orderSide,
|
|
247
|
+
orderType
|
|
248
|
+
}, options)
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"sourcesContent":["import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal.toNumber();\n}\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: symbol\n ? new Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber()\n : trigger_price,\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n"],"names":["calculateHelper","offsetPercentageToPrice","offsetToPrice","pnlToPrice","priceToOffset","priceToOffsetPercentage","priceToPnl","inputs","qty","offset","entryPrice","orderType","orderSide","OrderSide","BUY","AlgoOrderType","TAKE_PROFIT","Decimal","add","toNumber","minus","SELL","options","price","symbol","decimal","abs","todp","quote_dp","percentage","mul","div","pnl","plus","zero","key","value","startsWith","STOP_LOSS","keyPrefix","slice","Number","trigger_price","offset_percentage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitOrderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/limitOrderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/orderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopLimitOrderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/stopLimitOrderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopMarketOrderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/stopMarketOrderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tpslOrderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/tpslOrderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tpslPositionOrderCreator.test.d.ts","sourceRoot":"","sources":["../../../../src/services/orderCreator/__test__/tpslPositionOrderCreator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AlgoOrderEntity } from "@orderly.network/types";
|
|
2
|
+
import { OrderCreator, ValuesDepConfig } from "./interface";
|
|
3
|
+
import { AlgoOrderRootType } from "@orderly.network/types";
|
|
4
|
+
export type AlgoOrderUpdateEntity = {
|
|
5
|
+
trigger_price?: number;
|
|
6
|
+
order_id: number;
|
|
7
|
+
quantity?: number;
|
|
8
|
+
is_activated?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare abstract class BaseAlgoOrderCreator<T extends AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL>> implements OrderCreator<T> {
|
|
11
|
+
abstract create(values: T, config: ValuesDepConfig): T;
|
|
12
|
+
/**
|
|
13
|
+
* base validate
|
|
14
|
+
*/
|
|
15
|
+
validate(values: Partial<T>, config: ValuesDepConfig): Promise<{
|
|
16
|
+
[P in keyof T]?: {
|
|
17
|
+
type: string;
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=baseAlgoCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseAlgoCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/baseAlgoCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAa,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,YAAY,EAEZ,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,8BAAsB,oBAAoB,CACxC,CAAC,SAAS,eAAe,CACvB,iBAAiB,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAC7D,CACD,YAAW,YAAY,CAAC,CAAC,CAAC;IAE1B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,GAAG,CAAC;IAEtD;;OAEG;IACH,QAAQ,CACN,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC;SACR,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACf,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB;KACF,CAAC;CAsEH"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BaseAlgoOrderCreator", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BaseAlgoOrderCreator;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _types = require("@orderly.network/types");
|
|
12
|
+
class BaseAlgoOrderCreator {
|
|
13
|
+
/**
|
|
14
|
+
* base validate
|
|
15
|
+
*/ validate(values, config) {
|
|
16
|
+
const result = Object.create(null);
|
|
17
|
+
return Promise.resolve().then(()=>{
|
|
18
|
+
const { tp_trigger_price, sl_trigger_price, side } = values;
|
|
19
|
+
const qty = Number(values.quantity);
|
|
20
|
+
const maxQty = config.maxQty;
|
|
21
|
+
if (!isNaN(qty) && qty > maxQty) {
|
|
22
|
+
result.quantity = {
|
|
23
|
+
message: `Quantity must be less than ${config.maxQty}`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (Number(tp_trigger_price) < 0) {
|
|
27
|
+
result.tp_trigger_price = {
|
|
28
|
+
message: `TP Price must be greater than 0`
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (Number(sl_trigger_price) < 0) {
|
|
32
|
+
result.sl_trigger_price = {
|
|
33
|
+
message: `SL Price must be greater than 0`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// there need use position side to validate
|
|
37
|
+
// so if order's side is buy, then position's side is sell
|
|
38
|
+
if (side === _types.OrderSide.BUY) {
|
|
39
|
+
if (!!sl_trigger_price && Number(sl_trigger_price) >= config.markPrice) {
|
|
40
|
+
result.sl_trigger_price = {
|
|
41
|
+
message: `SL price must be less than ${config.markPrice}`
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!!tp_trigger_price && Number(tp_trigger_price) <= config.markPrice) {
|
|
45
|
+
result.tp_trigger_price = {
|
|
46
|
+
message: `TP price must be greater than ${config.markPrice}`
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (side === _types.OrderSide.SELL) {
|
|
51
|
+
if (!!sl_trigger_price && Number(sl_trigger_price) <= config.markPrice) {
|
|
52
|
+
result.sl_trigger_price = {
|
|
53
|
+
message: `SL price must be greater than ${config.markPrice}`
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (!!tp_trigger_price && Number(tp_trigger_price) >= config.markPrice) {
|
|
57
|
+
result.tp_trigger_price = {
|
|
58
|
+
message: `TP price must be less than ${config.markPrice}`
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=baseAlgoCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/baseAlgoCreator.ts"],"sourcesContent":["import { AlgoOrderEntity, OrderSide } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nexport type AlgoOrderUpdateEntity = {\n trigger_price?: number;\n order_id: number;\n quantity?: number;\n is_activated?: boolean;\n};\n\nexport abstract class BaseAlgoOrderCreator<\n T extends AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n> implements OrderCreator<T>\n{\n abstract create(values: T, config: ValuesDepConfig): T;\n\n /**\n * base validate\n */\n validate(\n values: Partial<T>,\n config: ValuesDepConfig\n ): Promise<{\n [P in keyof T]?: {\n type: string;\n message: string;\n };\n }> {\n const result = Object.create(null);\n return Promise.resolve().then(() => {\n const { tp_trigger_price, sl_trigger_price, side } = values;\n\n const qty = Number(values.quantity);\n const maxQty = config.maxQty;\n if (!isNaN(qty) && qty > maxQty) {\n result.quantity = {\n message: `Quantity must be less than ${config.maxQty}`,\n };\n }\n\n if (Number(tp_trigger_price) < 0) {\n result.tp_trigger_price = {\n message: `TP Price must be greater than 0`,\n };\n }\n\n if (Number(sl_trigger_price) < 0) {\n result.sl_trigger_price = {\n message: `SL Price must be greater than 0`,\n };\n }\n\n // there need use position side to validate\n // so if order's side is buy, then position's side is sell\n if (side === OrderSide.BUY) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) >= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be less than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) <= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be greater than ${config.markPrice}`,\n };\n }\n }\n\n if (side === OrderSide.SELL) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) <= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be greater than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) >= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be less than ${config.markPrice}`,\n };\n }\n }\n\n return Object.keys(result).length > 0 ? result : null;\n });\n }\n}\n"],"names":["BaseAlgoOrderCreator","validate","values","config","result","Object","create","Promise","resolve","then","tp_trigger_price","sl_trigger_price","side","qty","Number","quantity","maxQty","isNaN","message","OrderSide","BUY","markPrice","SELL","keys","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAgBsBA;;;eAAAA;;;uBAhBqB;AAgBpC,MAAeA;IAQpB;;GAEC,GACDC,SACEC,MAAkB,EAClBC,MAAuB,EAMtB;QACD,MAAMC,SAASC,OAAOC,MAAM,CAAC;QAC7B,OAAOC,QAAQC,OAAO,GAAGC,IAAI,CAAC;YAC5B,MAAM,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,EAAE,GAAGV;YAErD,MAAMW,MAAMC,OAAOZ,OAAOa,QAAQ;YAClC,MAAMC,SAASb,OAAOa,MAAM;YAC5B,IAAI,CAACC,MAAMJ,QAAQA,MAAMG,QAAQ;gBAC/BZ,OAAOW,QAAQ,GAAG;oBAChBG,SAAS,CAAC,2BAA2B,EAAEf,OAAOa,MAAM,CAAC,CAAC;gBACxD;YACF;YAEA,IAAIF,OAAOJ,oBAAoB,GAAG;gBAChCN,OAAOM,gBAAgB,GAAG;oBACxBQ,SAAS,CAAC,+BAA+B,CAAC;gBAC5C;YACF;YAEA,IAAIJ,OAAOH,oBAAoB,GAAG;gBAChCP,OAAOO,gBAAgB,GAAG;oBACxBO,SAAS,CAAC,+BAA+B,CAAC;gBAC5C;YACF;YAEA,2CAA2C;YAC3C,0DAA0D;YAC1D,IAAIN,SAASO,gBAAS,CAACC,GAAG,EAAE;gBAC1B,IACE,CAAC,CAACT,oBACFG,OAAOH,qBAAqBR,OAAOkB,SAAS,EAC5C;oBACAjB,OAAOO,gBAAgB,GAAG;wBACxBO,SAAS,CAAC,2BAA2B,EAAEf,OAAOkB,SAAS,CAAC,CAAC;oBAC3D;gBACF;gBAEA,IACE,CAAC,CAACX,oBACFI,OAAOJ,qBAAqBP,OAAOkB,SAAS,EAC5C;oBACAjB,OAAOM,gBAAgB,GAAG;wBACxBQ,SAAS,CAAC,8BAA8B,EAAEf,OAAOkB,SAAS,CAAC,CAAC;oBAC9D;gBACF;YACF;YAEA,IAAIT,SAASO,gBAAS,CAACG,IAAI,EAAE;gBAC3B,IACE,CAAC,CAACX,oBACFG,OAAOH,qBAAqBR,OAAOkB,SAAS,EAC5C;oBACAjB,OAAOO,gBAAgB,GAAG;wBACxBO,SAAS,CAAC,8BAA8B,EAAEf,OAAOkB,SAAS,CAAC,CAAC;oBAC9D;gBACF;gBAEA,IACE,CAAC,CAACX,oBACFI,OAAOJ,qBAAqBP,OAAOkB,SAAS,EAC5C;oBACAjB,OAAOM,gBAAgB,GAAG;wBACxBQ,SAAS,CAAC,2BAA2B,EAAEf,OAAOkB,SAAS,CAAC,CAAC;oBAC3D;gBACF;YACF;YAEA,OAAOhB,OAAOkB,IAAI,CAACnB,QAAQoB,MAAM,GAAG,IAAIpB,SAAS;QACnD;IACF;AACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OrderEntity } from "@orderly.network/types";
|
|
2
|
+
import { OrderCreator, OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
3
|
+
export declare abstract class BaseOrderCreator<T> implements OrderCreator<T> {
|
|
4
|
+
abstract create(values: T, config?: ValuesDepConfig): T;
|
|
5
|
+
abstract validate(values: T, config: ValuesDepConfig): Promise<VerifyResult>;
|
|
6
|
+
baseOrder(data: OrderEntity): OrderEntity;
|
|
7
|
+
baseValidate(values: OrderFormEntity, configs: ValuesDepConfig): Promise<VerifyResult>;
|
|
8
|
+
totalToQuantity(order: {
|
|
9
|
+
order_quantity?: number | string;
|
|
10
|
+
total?: string | number;
|
|
11
|
+
order_price?: string | number;
|
|
12
|
+
}, config: ValuesDepConfig): OrderEntity;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=baseCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/baseCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AAIrB,8BAAsB,gBAAgB,CAAC,CAAC,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC;IAEvD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAE5E,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IA+BzC,YAAY,CACV,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC;IAoFxB,eAAe,CACb,KAAK,EAAE;QACL,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC/B,EACD,MAAM,EAAE,eAAe,GACtB,WAAW;CAaf"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BaseOrderCreator", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BaseOrderCreator;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _types = require("@orderly.network/types");
|
|
12
|
+
const _utils = require("@orderly.network/utils");
|
|
13
|
+
const _createOrder = require("../../utils/createOrder");
|
|
14
|
+
class BaseOrderCreator {
|
|
15
|
+
baseOrder(data) {
|
|
16
|
+
const order = {
|
|
17
|
+
symbol: data.symbol,
|
|
18
|
+
order_type: data.order_type === _types.OrderType.LIMIT ? !!data.order_type_ext ? data.order_type_ext : data.order_type : data.order_type,
|
|
19
|
+
side: data.side,
|
|
20
|
+
reduce_only: data.reduce_only,
|
|
21
|
+
order_quantity: data.order_quantity,
|
|
22
|
+
total: data.total
|
|
23
|
+
};
|
|
24
|
+
if (data.visible_quantity === 0) {
|
|
25
|
+
order.visible_quantity = data.visible_quantity;
|
|
26
|
+
}
|
|
27
|
+
return order;
|
|
28
|
+
}
|
|
29
|
+
baseValidate(values, configs) {
|
|
30
|
+
const errors = {};
|
|
31
|
+
const { maxQty, symbol } = configs;
|
|
32
|
+
let { order_quantity, total, order_price, reduce_only } = values;
|
|
33
|
+
const { min_notional } = symbol;
|
|
34
|
+
if (!order_quantity) {
|
|
35
|
+
// calculate order_quantity from total
|
|
36
|
+
if (total && order_price) {
|
|
37
|
+
const { quote_dp } = configs.symbol;
|
|
38
|
+
const totalNumber = new _utils.Decimal(total);
|
|
39
|
+
const qty = totalNumber.dividedBy(order_price).toFixed(quote_dp);
|
|
40
|
+
order_quantity = qty;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!order_quantity) {
|
|
44
|
+
errors.order_quantity = {
|
|
45
|
+
type: "required",
|
|
46
|
+
message: "quantity is required"
|
|
47
|
+
};
|
|
48
|
+
} else {
|
|
49
|
+
// need to use MaxQty+base_max, base_min to compare
|
|
50
|
+
const { base_min, quote_dp, base_dp } = configs.symbol;
|
|
51
|
+
const qty = new _utils.Decimal(order_quantity);
|
|
52
|
+
if (qty.lt(base_min)) {
|
|
53
|
+
errors.order_quantity = {
|
|
54
|
+
type: "min",
|
|
55
|
+
message: `quantity must be greater than ${new _utils.Decimal(base_min).todp(base_dp)}`
|
|
56
|
+
};
|
|
57
|
+
// errors.order_quantity = `quantity must be greater than ${base_min}`;
|
|
58
|
+
} else if (qty.gt(maxQty)) {
|
|
59
|
+
errors.order_quantity = {
|
|
60
|
+
type: "max",
|
|
61
|
+
message: `quantity must be less than ${new _utils.Decimal(maxQty).todp(base_dp)}`
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!!total) {
|
|
66
|
+
const { quote_max, quote_min, quote_dp } = configs.symbol;
|
|
67
|
+
const totalNumber = new _utils.Decimal(total);
|
|
68
|
+
if (totalNumber.lt(quote_min)) {
|
|
69
|
+
errors.total = {
|
|
70
|
+
type: "min",
|
|
71
|
+
message: `Quantity must be at least ${new _utils.Decimal(quote_min).todp(quote_dp)}`
|
|
72
|
+
};
|
|
73
|
+
} else if (totalNumber.gt(quote_max)) {
|
|
74
|
+
errors.total = {
|
|
75
|
+
type: "max",
|
|
76
|
+
message: `Quantity should be less or equal than ${new _utils.Decimal(quote_max).todp(quote_dp)}`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const notionalHintStr = (0, _createOrder.checkNotional)(order_price, order_quantity, min_notional);
|
|
81
|
+
if (notionalHintStr !== undefined && reduce_only !== true) {
|
|
82
|
+
errors.total = {
|
|
83
|
+
type: "min",
|
|
84
|
+
message: notionalHintStr
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return Promise.resolve(errors);
|
|
88
|
+
}
|
|
89
|
+
totalToQuantity(order, config) {
|
|
90
|
+
// if order_quantity is not set but total is set, calculate order_quantity from total
|
|
91
|
+
if (!order.order_quantity && order.total && order.order_price) {
|
|
92
|
+
const { base_dp } = config.symbol;
|
|
93
|
+
const totalNumber = new _utils.Decimal(order.total);
|
|
94
|
+
const qty = totalNumber.div(order.order_price).toDecimalPlaces(base_dp);
|
|
95
|
+
order.order_quantity = qty.toNumber();
|
|
96
|
+
delete order.total;
|
|
97
|
+
}
|
|
98
|
+
return order;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=baseCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/baseCreator.ts"],"sourcesContent":["import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { checkNotional } from \"../../utils/createOrder\";\n\nexport abstract class BaseOrderCreator<T> implements OrderCreator<T> {\n abstract create(values: T, config?: ValuesDepConfig): T;\n\n abstract validate(values: T, config: ValuesDepConfig): Promise<VerifyResult>;\n\n baseOrder(data: OrderEntity): OrderEntity {\n const order: Pick<\n OrderEntity,\n | \"symbol\"\n | \"order_type\"\n | \"side\"\n | \"reduce_only\"\n | \"order_quantity\"\n | \"total\"\n | \"visible_quantity\"\n > = {\n symbol: data.symbol!,\n order_type:\n data.order_type === OrderType.LIMIT\n ? !!data.order_type_ext\n ? data.order_type_ext\n : data.order_type\n : data.order_type,\n side: data.side,\n reduce_only: data.reduce_only!,\n order_quantity: data.order_quantity!,\n total: data.total,\n };\n\n if (data.visible_quantity === 0) {\n order.visible_quantity = data.visible_quantity;\n }\n\n return order as OrderEntity;\n }\n\n baseValidate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n const errors: {\n [P in keyof OrderEntity]?: { type: string; message: string };\n } = {};\n\n const { maxQty, symbol } = configs;\n\n let { order_quantity, total, order_price, reduce_only } = values;\n\n const { min_notional } = symbol;\n\n if (!order_quantity) {\n // calculate order_quantity from total\n if (total && order_price) {\n const { quote_dp } = configs.symbol;\n const totalNumber = new Decimal(total);\n const qty = totalNumber.dividedBy(order_price).toFixed(quote_dp);\n order_quantity = qty;\n }\n }\n\n if (!order_quantity) {\n errors.order_quantity = {\n type: \"required\",\n message: \"quantity is required\",\n };\n } else {\n // need to use MaxQty+base_max, base_min to compare\n const { base_min, quote_dp, base_dp } = configs.symbol;\n const qty = new Decimal(order_quantity);\n if (qty.lt(base_min)) {\n errors.order_quantity = {\n type: \"min\",\n message: `quantity must be greater than ${new Decimal(base_min).todp(\n base_dp\n )}`,\n };\n // errors.order_quantity = `quantity must be greater than ${base_min}`;\n } else if (qty.gt(maxQty)) {\n errors.order_quantity = {\n type: \"max\",\n message: `quantity must be less than ${new Decimal(maxQty).todp(\n base_dp\n )}`,\n };\n }\n }\n\n if (!!total) {\n const { quote_max, quote_min, quote_dp } = configs.symbol;\n const totalNumber = new Decimal(total);\n if (totalNumber.lt(quote_min)) {\n errors.total = {\n type: \"min\",\n message: `Quantity must be at least ${new Decimal(quote_min).todp(\n quote_dp\n )}`,\n };\n } else if (totalNumber.gt(quote_max)) {\n errors.total = {\n type: \"max\",\n message: `Quantity should be less or equal than ${new Decimal(\n quote_max\n ).todp(quote_dp)}`,\n };\n }\n }\n\n const notionalHintStr = checkNotional(\n order_price,\n order_quantity,\n min_notional\n );\n\n if (notionalHintStr !== undefined && reduce_only !== true) {\n errors.total = {\n type: \"min\",\n message: notionalHintStr,\n };\n }\n\n return Promise.resolve(errors);\n }\n\n totalToQuantity(\n order: {\n order_quantity?: number | string;\n total?: string | number;\n order_price?: string | number;\n },\n config: ValuesDepConfig\n ): OrderEntity {\n // if order_quantity is not set but total is set, calculate order_quantity from total\n if (!order.order_quantity && order.total && order.order_price) {\n const { base_dp } = config.symbol;\n const totalNumber = new Decimal(order.total);\n const qty = totalNumber.div(order.order_price).toDecimalPlaces(base_dp);\n order.order_quantity = qty.toNumber();\n\n delete order.total;\n }\n\n return order as OrderEntity;\n }\n}\n"],"names":["BaseOrderCreator","baseOrder","data","order","symbol","order_type","OrderType","LIMIT","order_type_ext","side","reduce_only","order_quantity","total","visible_quantity","baseValidate","values","configs","errors","maxQty","order_price","min_notional","quote_dp","totalNumber","Decimal","qty","dividedBy","toFixed","type","message","base_min","base_dp","lt","todp","gt","quote_max","quote_min","notionalHintStr","checkNotional","undefined","Promise","resolve","totalToQuantity","config","div","toDecimalPlaces","toNumber"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { OrderType } from "@orderly.network/types";
|
|
2
|
+
import { OrderCreator } from "./interface";
|
|
3
|
+
import { AlgoOrderRootType } from "@orderly.network/types";
|
|
4
|
+
export declare class OrderFactory {
|
|
5
|
+
static create(type: OrderType | AlgoOrderRootType): OrderCreator<any>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,qBAAa,YAAY;IACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC;CAgCtE"}
|