@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,226 @@
|
|
|
1
|
+
import { OrderSide } from "@orderly.network/types";
|
|
2
|
+
import { AlgoOrderType } from "@orderly.network/types";
|
|
3
|
+
import { Decimal, zero } from "@orderly.network/utils";
|
|
4
|
+
/**
|
|
5
|
+
* offset -> TP/SL price
|
|
6
|
+
*/ export function offsetToPrice(inputs) {
|
|
7
|
+
const { qty, offset, entryPrice, orderType, orderSide } = inputs;
|
|
8
|
+
if (!offset) return;
|
|
9
|
+
if (orderSide === OrderSide.BUY) {
|
|
10
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
11
|
+
return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();
|
|
12
|
+
}
|
|
13
|
+
return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();
|
|
14
|
+
}
|
|
15
|
+
if (orderSide === OrderSide.SELL) {
|
|
16
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
17
|
+
return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();
|
|
18
|
+
}
|
|
19
|
+
return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function priceToOffset(inputs, options = {}) {
|
|
23
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
24
|
+
const { symbol } = options;
|
|
25
|
+
let decimal;
|
|
26
|
+
if (orderSide === OrderSide.BUY) {
|
|
27
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
28
|
+
decimal = new Decimal(price).minus(new Decimal(entryPrice));
|
|
29
|
+
}
|
|
30
|
+
decimal = new Decimal(price).minus(new Decimal(entryPrice));
|
|
31
|
+
}
|
|
32
|
+
if (orderSide === OrderSide.SELL) {
|
|
33
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
34
|
+
decimal = new Decimal(price).minus(new Decimal(entryPrice));
|
|
35
|
+
}
|
|
36
|
+
decimal = new Decimal(entryPrice).minus(new Decimal(price));
|
|
37
|
+
}
|
|
38
|
+
if (symbol) {
|
|
39
|
+
return decimal.abs().todp(symbol.quote_dp, 4).toNumber();
|
|
40
|
+
}
|
|
41
|
+
return decimal.abs().toNumber();
|
|
42
|
+
}
|
|
43
|
+
export function offsetPercentageToPrice(inputs) {
|
|
44
|
+
const { qty, percentage, entryPrice, orderType, orderSide } = inputs;
|
|
45
|
+
if (!percentage) return;
|
|
46
|
+
if (orderSide === OrderSide.BUY) {
|
|
47
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
48
|
+
return new Decimal(1).add(new Decimal(percentage)).mul(new Decimal(entryPrice)).toNumber();
|
|
49
|
+
}
|
|
50
|
+
return new Decimal(1).minus(new Decimal(percentage)).mul(new Decimal(entryPrice)).toNumber();
|
|
51
|
+
}
|
|
52
|
+
if (orderSide === OrderSide.SELL) {
|
|
53
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
54
|
+
return new Decimal(1).minus(new Decimal(percentage)).mul(new Decimal(entryPrice)).toNumber();
|
|
55
|
+
}
|
|
56
|
+
return new Decimal(1).add(new Decimal(percentage)).mul(new Decimal(entryPrice)).toNumber();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function priceToOffsetPercentage(inputs) {
|
|
60
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
61
|
+
if (orderSide === OrderSide.BUY) {
|
|
62
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
63
|
+
return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();
|
|
64
|
+
}
|
|
65
|
+
return new Decimal(1).minus(new Decimal(price).div(new Decimal(entryPrice))).toNumber();
|
|
66
|
+
}
|
|
67
|
+
if (orderSide === OrderSide.SELL) {
|
|
68
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
69
|
+
return new Decimal(1).minus(new Decimal(price).div(new Decimal(entryPrice))).toNumber();
|
|
70
|
+
}
|
|
71
|
+
return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* pnl -> TP/SL price
|
|
76
|
+
*/ export function pnlToPrice(inputs) {
|
|
77
|
+
const { qty, pnl, entryPrice, orderType, orderSide } = inputs;
|
|
78
|
+
;
|
|
79
|
+
if (!pnl) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (orderSide === OrderSide.BUY) {
|
|
83
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
84
|
+
return new Decimal(entryPrice).plus(new Decimal(pnl).div(new Decimal(qty))).toNumber();
|
|
85
|
+
}
|
|
86
|
+
return new Decimal(entryPrice).add(new Decimal(pnl).div(new Decimal(qty))).toNumber();
|
|
87
|
+
}
|
|
88
|
+
if (orderSide === OrderSide.SELL) {
|
|
89
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
90
|
+
return new Decimal(entryPrice).add(new Decimal(pnl).div(new Decimal(qty))).toNumber();
|
|
91
|
+
}
|
|
92
|
+
return new Decimal(entryPrice).add(new Decimal(pnl).div(new Decimal(qty))).toNumber();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* TP/SL price -> pnl
|
|
97
|
+
*/ export function priceToPnl(inputs, options = {}) {
|
|
98
|
+
const { qty, price, entryPrice, orderType, orderSide } = inputs;
|
|
99
|
+
const { symbol } = options;
|
|
100
|
+
let decimal = zero;
|
|
101
|
+
if (orderSide === OrderSide.BUY) {
|
|
102
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
103
|
+
decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
|
|
104
|
+
}
|
|
105
|
+
decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
|
|
106
|
+
}
|
|
107
|
+
if (orderSide === OrderSide.SELL) {
|
|
108
|
+
if (orderType === AlgoOrderType.TAKE_PROFIT) {
|
|
109
|
+
decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
|
|
110
|
+
}
|
|
111
|
+
decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
|
|
112
|
+
}
|
|
113
|
+
if (symbol) {
|
|
114
|
+
return decimal.todp(symbol.quote_dp, 4).toNumber();
|
|
115
|
+
}
|
|
116
|
+
return decimal.toNumber();
|
|
117
|
+
}
|
|
118
|
+
export function calculateHelper(key, inputs, options = {}) {
|
|
119
|
+
const { symbol } = options;
|
|
120
|
+
// if not need to be computed, return the value directly
|
|
121
|
+
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") {
|
|
122
|
+
return {
|
|
123
|
+
[key]: inputs.value
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const orderType = key.startsWith("tp_") ? AlgoOrderType.TAKE_PROFIT : AlgoOrderType.STOP_LOSS;
|
|
127
|
+
const keyPrefix = key.slice(0, 3);
|
|
128
|
+
let qty = Number(key === "quantity" ? inputs.value : inputs.qty);
|
|
129
|
+
if (qty === 0) return {
|
|
130
|
+
[`${keyPrefix}trigger_price`]: "",
|
|
131
|
+
// [`${keyPrefix}offset`]: "",
|
|
132
|
+
// [`${keyPrefix}offset_percentage`]: "",
|
|
133
|
+
[`${keyPrefix}pnl`]: "",
|
|
134
|
+
[key]: inputs.value
|
|
135
|
+
};
|
|
136
|
+
let trigger_price, offset, offset_percentage, pnl;
|
|
137
|
+
switch(key){
|
|
138
|
+
case "tp_trigger_price":
|
|
139
|
+
case "sl_trigger_price":
|
|
140
|
+
{
|
|
141
|
+
trigger_price = inputs.value;
|
|
142
|
+
// if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl
|
|
143
|
+
if (inputs.value === "") {
|
|
144
|
+
return {
|
|
145
|
+
[`${keyPrefix}trigger_price`]: trigger_price,
|
|
146
|
+
[`${keyPrefix}offset`]: "",
|
|
147
|
+
[`${keyPrefix}offset_percentage`]: "",
|
|
148
|
+
[`${keyPrefix}pnl`]: ""
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case "tp_pnl":
|
|
154
|
+
case "sl_pnl":
|
|
155
|
+
{
|
|
156
|
+
pnl = inputs.value;
|
|
157
|
+
trigger_price = pnlToPrice({
|
|
158
|
+
qty,
|
|
159
|
+
pnl: Number(inputs.value),
|
|
160
|
+
entryPrice: inputs.entryPrice,
|
|
161
|
+
orderSide: inputs.orderSide,
|
|
162
|
+
orderType
|
|
163
|
+
});
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case "tp_offset":
|
|
167
|
+
case "sl_offset":
|
|
168
|
+
{
|
|
169
|
+
offset = inputs.value;
|
|
170
|
+
trigger_price = offsetToPrice({
|
|
171
|
+
qty,
|
|
172
|
+
offset: Number(inputs.value),
|
|
173
|
+
entryPrice: inputs.entryPrice,
|
|
174
|
+
orderSide: inputs.orderSide,
|
|
175
|
+
orderType: key === "tp_offset" ? AlgoOrderType.TAKE_PROFIT : AlgoOrderType.STOP_LOSS
|
|
176
|
+
});
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case "tp_offset_percentage":
|
|
180
|
+
case "sl_offset_percentage":
|
|
181
|
+
{
|
|
182
|
+
offset_percentage = inputs.value;
|
|
183
|
+
trigger_price = offsetPercentageToPrice({
|
|
184
|
+
qty,
|
|
185
|
+
percentage: Number(inputs.value),
|
|
186
|
+
entryPrice: inputs.entryPrice,
|
|
187
|
+
orderSide: inputs.orderSide,
|
|
188
|
+
orderType
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (!trigger_price) return {
|
|
194
|
+
[`${keyPrefix}trigger_price`]: "",
|
|
195
|
+
[`${keyPrefix}offset`]: "",
|
|
196
|
+
[`${keyPrefix}offset_percentage`]: "",
|
|
197
|
+
[`${keyPrefix}pnl`]: "",
|
|
198
|
+
[key]: inputs.value
|
|
199
|
+
};
|
|
200
|
+
return {
|
|
201
|
+
[`${keyPrefix}trigger_price`]: symbol ? new Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber() : trigger_price,
|
|
202
|
+
[`${keyPrefix}offset`]: offset ?? priceToOffset({
|
|
203
|
+
qty,
|
|
204
|
+
price: Number(trigger_price),
|
|
205
|
+
entryPrice: inputs.entryPrice,
|
|
206
|
+
orderSide: inputs.orderSide,
|
|
207
|
+
orderType
|
|
208
|
+
}, options),
|
|
209
|
+
[`${keyPrefix}offset_percentage`]: offset_percentage ?? priceToOffsetPercentage({
|
|
210
|
+
qty,
|
|
211
|
+
price: Number(trigger_price),
|
|
212
|
+
entryPrice: inputs.entryPrice,
|
|
213
|
+
orderSide: inputs.orderSide,
|
|
214
|
+
orderType
|
|
215
|
+
}),
|
|
216
|
+
[`${keyPrefix}pnl`]: pnl ?? priceToPnl({
|
|
217
|
+
qty,
|
|
218
|
+
price: Number(trigger_price),
|
|
219
|
+
entryPrice: inputs.entryPrice,
|
|
220
|
+
orderSide: inputs.orderSide,
|
|
221
|
+
orderType
|
|
222
|
+
}, options)
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
//# 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":["OrderSide","AlgoOrderType","Decimal","zero","offsetToPrice","inputs","qty","offset","entryPrice","orderType","orderSide","BUY","TAKE_PROFIT","add","toNumber","minus","SELL","priceToOffset","options","price","symbol","decimal","abs","todp","quote_dp","offsetPercentageToPrice","percentage","mul","priceToOffsetPercentage","div","pnlToPrice","pnl","plus","priceToPnl","calculateHelper","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,57 @@
|
|
|
1
|
+
import { OrderSide } from "@orderly.network/types";
|
|
2
|
+
export class BaseAlgoOrderCreator {
|
|
3
|
+
/**
|
|
4
|
+
* base validate
|
|
5
|
+
*/ validate(values, config) {
|
|
6
|
+
const result = Object.create(null);
|
|
7
|
+
return Promise.resolve().then(()=>{
|
|
8
|
+
const { tp_trigger_price, sl_trigger_price, side } = values;
|
|
9
|
+
const qty = Number(values.quantity);
|
|
10
|
+
const maxQty = config.maxQty;
|
|
11
|
+
if (!isNaN(qty) && qty > maxQty) {
|
|
12
|
+
result.quantity = {
|
|
13
|
+
message: `Quantity must be less than ${config.maxQty}`
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (Number(tp_trigger_price) < 0) {
|
|
17
|
+
result.tp_trigger_price = {
|
|
18
|
+
message: `TP Price must be greater than 0`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (Number(sl_trigger_price) < 0) {
|
|
22
|
+
result.sl_trigger_price = {
|
|
23
|
+
message: `SL Price must be greater than 0`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// there need use position side to validate
|
|
27
|
+
// so if order's side is buy, then position's side is sell
|
|
28
|
+
if (side === OrderSide.BUY) {
|
|
29
|
+
if (!!sl_trigger_price && Number(sl_trigger_price) >= config.markPrice) {
|
|
30
|
+
result.sl_trigger_price = {
|
|
31
|
+
message: `SL price must be less than ${config.markPrice}`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (!!tp_trigger_price && Number(tp_trigger_price) <= config.markPrice) {
|
|
35
|
+
result.tp_trigger_price = {
|
|
36
|
+
message: `TP price must be greater than ${config.markPrice}`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (side === OrderSide.SELL) {
|
|
41
|
+
if (!!sl_trigger_price && Number(sl_trigger_price) <= config.markPrice) {
|
|
42
|
+
result.sl_trigger_price = {
|
|
43
|
+
message: `SL price must be greater than ${config.markPrice}`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (!!tp_trigger_price && Number(tp_trigger_price) >= config.markPrice) {
|
|
47
|
+
result.tp_trigger_price = {
|
|
48
|
+
message: `TP price must be less than ${config.markPrice}`
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# 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":["OrderSide","BaseAlgoOrderCreator","validate","values","config","result","Object","create","Promise","resolve","then","tp_trigger_price","sl_trigger_price","side","qty","Number","quantity","maxQty","isNaN","message","BUY","markPrice","SELL","keys","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA0BA,SAAS,QAAQ,yBAAyB;AAgBpE,OAAO,MAAeC;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,SAASb,UAAUoB,GAAG,EAAE;gBAC1B,IACE,CAAC,CAACR,oBACFG,OAAOH,qBAAqBR,OAAOiB,SAAS,EAC5C;oBACAhB,OAAOO,gBAAgB,GAAG;wBACxBO,SAAS,CAAC,2BAA2B,EAAEf,OAAOiB,SAAS,CAAC,CAAC;oBAC3D;gBACF;gBAEA,IACE,CAAC,CAACV,oBACFI,OAAOJ,qBAAqBP,OAAOiB,SAAS,EAC5C;oBACAhB,OAAOM,gBAAgB,GAAG;wBACxBQ,SAAS,CAAC,8BAA8B,EAAEf,OAAOiB,SAAS,CAAC,CAAC;oBAC9D;gBACF;YACF;YAEA,IAAIR,SAASb,UAAUsB,IAAI,EAAE;gBAC3B,IACE,CAAC,CAACV,oBACFG,OAAOH,qBAAqBR,OAAOiB,SAAS,EAC5C;oBACAhB,OAAOO,gBAAgB,GAAG;wBACxBO,SAAS,CAAC,8BAA8B,EAAEf,OAAOiB,SAAS,CAAC,CAAC;oBAC9D;gBACF;gBAEA,IACE,CAAC,CAACV,oBACFI,OAAOJ,qBAAqBP,OAAOiB,SAAS,EAC5C;oBACAhB,OAAOM,gBAAgB,GAAG;wBACxBQ,SAAS,CAAC,2BAA2B,EAAEf,OAAOiB,SAAS,CAAC,CAAC;oBAC3D;gBACF;YACF;YAEA,OAAOf,OAAOiB,IAAI,CAAClB,QAAQmB,MAAM,GAAG,IAAInB,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,92 @@
|
|
|
1
|
+
import { OrderType } from "@orderly.network/types";
|
|
2
|
+
import { Decimal } from "@orderly.network/utils";
|
|
3
|
+
import { checkNotional } from "../../utils/createOrder";
|
|
4
|
+
export class BaseOrderCreator {
|
|
5
|
+
baseOrder(data) {
|
|
6
|
+
const order = {
|
|
7
|
+
symbol: data.symbol,
|
|
8
|
+
order_type: data.order_type === OrderType.LIMIT ? !!data.order_type_ext ? data.order_type_ext : data.order_type : data.order_type,
|
|
9
|
+
side: data.side,
|
|
10
|
+
reduce_only: data.reduce_only,
|
|
11
|
+
order_quantity: data.order_quantity,
|
|
12
|
+
total: data.total
|
|
13
|
+
};
|
|
14
|
+
if (data.visible_quantity === 0) {
|
|
15
|
+
order.visible_quantity = data.visible_quantity;
|
|
16
|
+
}
|
|
17
|
+
return order;
|
|
18
|
+
}
|
|
19
|
+
baseValidate(values, configs) {
|
|
20
|
+
const errors = {};
|
|
21
|
+
const { maxQty, symbol } = configs;
|
|
22
|
+
let { order_quantity, total, order_price, reduce_only } = values;
|
|
23
|
+
const { min_notional } = symbol;
|
|
24
|
+
if (!order_quantity) {
|
|
25
|
+
// calculate order_quantity from total
|
|
26
|
+
if (total && order_price) {
|
|
27
|
+
const { quote_dp } = configs.symbol;
|
|
28
|
+
const totalNumber = new Decimal(total);
|
|
29
|
+
const qty = totalNumber.dividedBy(order_price).toFixed(quote_dp);
|
|
30
|
+
order_quantity = qty;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!order_quantity) {
|
|
34
|
+
errors.order_quantity = {
|
|
35
|
+
type: "required",
|
|
36
|
+
message: "quantity is required"
|
|
37
|
+
};
|
|
38
|
+
} else {
|
|
39
|
+
// need to use MaxQty+base_max, base_min to compare
|
|
40
|
+
const { base_min, quote_dp, base_dp } = configs.symbol;
|
|
41
|
+
const qty = new Decimal(order_quantity);
|
|
42
|
+
if (qty.lt(base_min)) {
|
|
43
|
+
errors.order_quantity = {
|
|
44
|
+
type: "min",
|
|
45
|
+
message: `quantity must be greater than ${new Decimal(base_min).todp(base_dp)}`
|
|
46
|
+
};
|
|
47
|
+
// errors.order_quantity = `quantity must be greater than ${base_min}`;
|
|
48
|
+
} else if (qty.gt(maxQty)) {
|
|
49
|
+
errors.order_quantity = {
|
|
50
|
+
type: "max",
|
|
51
|
+
message: `quantity must be less than ${new Decimal(maxQty).todp(base_dp)}`
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (!!total) {
|
|
56
|
+
const { quote_max, quote_min, quote_dp } = configs.symbol;
|
|
57
|
+
const totalNumber = new Decimal(total);
|
|
58
|
+
if (totalNumber.lt(quote_min)) {
|
|
59
|
+
errors.total = {
|
|
60
|
+
type: "min",
|
|
61
|
+
message: `Quantity must be at least ${new Decimal(quote_min).todp(quote_dp)}`
|
|
62
|
+
};
|
|
63
|
+
} else if (totalNumber.gt(quote_max)) {
|
|
64
|
+
errors.total = {
|
|
65
|
+
type: "max",
|
|
66
|
+
message: `Quantity should be less or equal than ${new Decimal(quote_max).todp(quote_dp)}`
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const notionalHintStr = checkNotional(order_price, order_quantity, min_notional);
|
|
71
|
+
if (notionalHintStr !== undefined && reduce_only !== true) {
|
|
72
|
+
errors.total = {
|
|
73
|
+
type: "min",
|
|
74
|
+
message: notionalHintStr
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return Promise.resolve(errors);
|
|
78
|
+
}
|
|
79
|
+
totalToQuantity(order, config) {
|
|
80
|
+
// if order_quantity is not set but total is set, calculate order_quantity from total
|
|
81
|
+
if (!order.order_quantity && order.total && order.order_price) {
|
|
82
|
+
const { base_dp } = config.symbol;
|
|
83
|
+
const totalNumber = new Decimal(order.total);
|
|
84
|
+
const qty = totalNumber.div(order.order_price).toDecimalPlaces(base_dp);
|
|
85
|
+
order.order_quantity = qty.toNumber();
|
|
86
|
+
delete order.total;
|
|
87
|
+
}
|
|
88
|
+
return order;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//# 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":["OrderType","Decimal","checkNotional","BaseOrderCreator","baseOrder","data","order","symbol","order_type","LIMIT","order_type_ext","side","reduce_only","order_quantity","total","visible_quantity","baseValidate","values","configs","errors","maxQty","order_price","min_notional","quote_dp","totalNumber","qty","dividedBy","toFixed","type","message","base_min","base_dp","lt","todp","gt","quote_max","quote_min","notionalHintStr","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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { OrderType } from "@orderly.network/types";
|
|
2
|
+
import { MarketOrderCreator } from "./marketOrderCreator";
|
|
3
|
+
import { LimitOrderCreator } from "./limitOrderCreator";
|
|
4
|
+
import { StopLimitOrderCreator } from "./stopLimitOrderCreator";
|
|
5
|
+
import { GeneralOrderCreator } from "./generalCreator";
|
|
6
|
+
import { StopMarketOrderCreator } from "./stopMarketOrderCreator";
|
|
7
|
+
import { PostOnlyOrderCreator } from "./postOnlyCreator";
|
|
8
|
+
import { FOKOrderCreator } from "./fokCreator";
|
|
9
|
+
import { IOCOrderCreator } from "./iocCreator";
|
|
10
|
+
import { AlgoOrderRootType } from "@orderly.network/types";
|
|
11
|
+
import { TPSLOrderCreator } from "./tpslOrderCreator";
|
|
12
|
+
import { TPSLPositionOrderCreator } from "./tpslPositionOrderCreator";
|
|
13
|
+
export class OrderFactory {
|
|
14
|
+
static create(type) {
|
|
15
|
+
switch(type){
|
|
16
|
+
case OrderType.LIMIT:
|
|
17
|
+
return new LimitOrderCreator();
|
|
18
|
+
case OrderType.MARKET:
|
|
19
|
+
return new MarketOrderCreator();
|
|
20
|
+
// case OrderType.ASK:
|
|
21
|
+
// return new AskOrderCreator();
|
|
22
|
+
// case OrderType.BID:
|
|
23
|
+
// return new BidOrderCreator();
|
|
24
|
+
case OrderType.IOC:
|
|
25
|
+
return new IOCOrderCreator();
|
|
26
|
+
case OrderType.FOK:
|
|
27
|
+
return new FOKOrderCreator();
|
|
28
|
+
case OrderType.POST_ONLY:
|
|
29
|
+
return new PostOnlyOrderCreator();
|
|
30
|
+
case OrderType.STOP_LIMIT:
|
|
31
|
+
return new StopLimitOrderCreator();
|
|
32
|
+
case OrderType.STOP_MARKET:
|
|
33
|
+
return new StopMarketOrderCreator();
|
|
34
|
+
// algo order
|
|
35
|
+
case AlgoOrderRootType.TP_SL:
|
|
36
|
+
return new TPSLOrderCreator();
|
|
37
|
+
case AlgoOrderRootType.POSITIONAL_TP_SL:
|
|
38
|
+
return new TPSLPositionOrderCreator();
|
|
39
|
+
default:
|
|
40
|
+
return new GeneralOrderCreator();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/factory.ts"],"sourcesContent":["import { OrderType } from \"@orderly.network/types\";\nimport { MarketOrderCreator } from \"./marketOrderCreator\";\nimport { LimitOrderCreator } from \"./limitOrderCreator\";\nimport { StopLimitOrderCreator } from \"./stopLimitOrderCreator\";\nimport { OrderCreator } from \"./interface\";\nimport { GeneralOrderCreator } from \"./generalCreator\";\nimport { StopMarketOrderCreator } from \"./stopMarketOrderCreator\";\nimport { PostOnlyOrderCreator } from \"./postOnlyCreator\";\nimport { FOKOrderCreator } from \"./fokCreator\";\nimport { IOCOrderCreator } from \"./iocCreator\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nimport { TPSLOrderCreator } from \"./tpslOrderCreator\";\nimport { TPSLPositionOrderCreator } from \"./tpslPositionOrderCreator\";\n\nexport class OrderFactory {\n static create(type: OrderType | AlgoOrderRootType): OrderCreator<any> {\n switch (type) {\n case OrderType.LIMIT:\n return new LimitOrderCreator();\n case OrderType.MARKET:\n return new MarketOrderCreator();\n // case OrderType.ASK:\n // return new AskOrderCreator();\n // case OrderType.BID:\n // return new BidOrderCreator();\n case OrderType.IOC:\n return new IOCOrderCreator();\n case OrderType.FOK:\n return new FOKOrderCreator();\n case OrderType.POST_ONLY:\n return new PostOnlyOrderCreator();\n\n case OrderType.STOP_LIMIT:\n return new StopLimitOrderCreator();\n case OrderType.STOP_MARKET:\n return new StopMarketOrderCreator();\n\n // algo order\n case AlgoOrderRootType.TP_SL:\n return new TPSLOrderCreator();\n case AlgoOrderRootType.POSITIONAL_TP_SL:\n return new TPSLPositionOrderCreator();\n\n default:\n return new GeneralOrderCreator();\n }\n }\n}\n"],"names":["OrderType","MarketOrderCreator","LimitOrderCreator","StopLimitOrderCreator","GeneralOrderCreator","StopMarketOrderCreator","PostOnlyOrderCreator","FOKOrderCreator","IOCOrderCreator","AlgoOrderRootType","TPSLOrderCreator","TPSLPositionOrderCreator","OrderFactory","create","type","LIMIT","MARKET","IOC","FOK","POST_ONLY","STOP_LIMIT","STOP_MARKET","TP_SL","POSITIONAL_TP_SL"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,yBAAyB;AACnD,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,qBAAqB,QAAQ,0BAA0B;AAEhE,SAASC,mBAAmB,QAAQ,mBAAmB;AACvD,SAASC,sBAAsB,QAAQ,2BAA2B;AAClE,SAASC,oBAAoB,QAAQ,oBAAoB;AACzD,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,wBAAwB,QAAQ,6BAA6B;AAEtE,OAAO,MAAMC;IACX,OAAOC,OAAOC,IAAmC,EAAqB;QACpE,OAAQA;YACN,KAAKd,UAAUe,KAAK;gBAClB,OAAO,IAAIb;YACb,KAAKF,UAAUgB,MAAM;gBACnB,OAAO,IAAIf;YACb,wBAAwB;YACxB,oCAAoC;YACpC,wBAAwB;YACxB,oCAAoC;YACpC,KAAKD,UAAUiB,GAAG;gBAChB,OAAO,IAAIT;YACb,KAAKR,UAAUkB,GAAG;gBAChB,OAAO,IAAIX;YACb,KAAKP,UAAUmB,SAAS;gBACtB,OAAO,IAAIb;YAEb,KAAKN,UAAUoB,UAAU;gBACvB,OAAO,IAAIjB;YACb,KAAKH,UAAUqB,WAAW;gBACxB,OAAO,IAAIhB;YAEb,aAAa;YACb,KAAKI,kBAAkBa,KAAK;gBAC1B,OAAO,IAAIZ;YACb,KAAKD,kBAAkBc,gBAAgB;gBACrC,OAAO,IAAIZ;YAEb;gBACE,OAAO,IAAIP;QACf;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fokCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/fokCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,eAAgB,SAAQ,iBAAiB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/fokCreator.ts"],"sourcesContent":["import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class FOKOrderCreator extends LimitOrderCreator {}\n"],"names":["LimitOrderCreator","FOKOrderCreator"],"rangeMappings":";;","mappings":"AAAA,SAASA,iBAAiB,QAAQ,sBAAsB;AAExD,OAAO,MAAMC,wBAAwBD;AAAmB"}
|