Trading Strategies

Please contact support@aquanow.io to enable additional strategies.

RFQ

RFQ orders allow users to make a request for a quote, then decide if they wish to execute that quote.

Get an RFQ quote

GET https://api.aquanow.io/trades/v1/getQuote

getQuote endpoint allows users to get an RFQ quote from Aquanow, and receive quoteId and price that is valid during the lifetime of the RFQ.

This endpoint is not executable and can only be used as a means of pricing your order.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Query Parameters

Name
Type
Description

ticker*

String

e.g., BTC-USD

Currency pair

accountId*

String

Identifier for account of the quote.

tradeSide*

String

"buy" or "sell"

deliverQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency delivered by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.

receiveQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency received by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

32c92460f65cbb78d0eaf9a4361fb6b0a2bb8bb4c40f531e9974a0afc12d9a328b5ff621a544d242ee9ba1dfa799c85a

Signature created using your API secret

x-nonce*

Number

1657731573930

Timestamp in millisecond

Returns an ExecutionsObject.

{
    "type": "rfqGetQuoteAck",
    "payload": {
        "accountId": "CA1000051R",
        "quoteId": "15082973-f40d-4ecc-aec6-f2920d879c5f",
        "quoteTime": 1712855598454,
        "expireTime": 1712855628454,
        "symbol": "BTC-USD",
        "side": "buy",
        "receiveCurrency": "BTC",
        "receiveQuantity": 0.0000142415,
        "deliverCurrency": "USD",
        "deliverQuantity": 1,
        "price": 70217.36
    }
}

Create an RFQ quote

POST https://api.aquanow.io/trades/v1/createQuote

createQuote endpoint allows user to initiate an RFQ request to Aquanow and receive a quoteId and price that is valid during the lifetime of the RFQ.

NOTE: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.

If order is not filled, request returns a 200 response with receiveQuantity and deliverQuantity set to 0.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

32c92460f65cbb78d0eaf9a4361fb6b0a2bb8bb4c40f531e9974a0afc12d9a328b5ff621a544d242ee9ba1dfa799c85a

Signature created using your API secret

x-nonce*

Number

1657731573930

Timestamp in millisecond

Request Body

Name
Type
Description

ticker*

String

e.g., BTC-USD

Currency pair

accountId*

String

Identifier for account of the quote.

tradeSide*

String

"buy" or "sell"

deliverQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency delivered by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.

receiveQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency received by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.

usernameRef

String

A new reference string for sub-accounts. Must be less than 64 characters, cannot contain special characters.

Returns an ExecutionsObject.

{
    "type": "rfqCreateQuoteAck",
    "payload": {
        "accountId": "CA1000051R",
        "quoteId": "e9622cd8-0c52-48b7-ae4a-77d2cbd6a6e6",
        "quoteTime": 1712855803893,
        "expireTime": 1712855833893,
        "symbol": "ETH-CAD",
        "side": "buy",
        "receiveCurrency": "ETH",
        "receiveQuantity": 2,
        "deliverCurrency": "CAD",
        "deliverQuantity": 9618.84,
        "price": 4809.42
    }
}

Execute an RFQ Quote

POST https://api.aquanow.io/trades/v1/executeQuote

executeQuote endpoint allows users to execute a trade with a specified quoteId with the symbol, trade side and size within the time to live (TTL) of the request associated with the quoteId.

NOTE: The quote must be executed BEFORE the time expired. The TTL of a quote is 8 seconds by default. If you wish to increase the expiry time, please contact Aquanow for support.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Request Body

Name
Type
Description

quoteId*

String

quoteId to be executed

Returns an ExecutionsObject.

{
    "type": "rfqExecuteQuoteAck",
    "payload": {
        "accountId": "CA1000051R",
        "quoteId": "4690329c-70c7-4b5e-9c78-35bb40186938"
    }
}

Expire an RFQ Quote

PUT https://api.aquanow.io/trades/v1/expireQuote

expireQuote endpoint allows users to expire a quote with a specified quoteId within the time to live (TTL) of the request associated with the quoteId.

NOTE: The quote must be executed BEFORE the time expired. The TTL of a quote is 8 seconds by default. If you wish to increase the expiry time, please contact Aquanow for support.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1657731573930

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

quoteId*

String

quoteId to be expired

Returns an ExecutionsObject.

{
  "type": "rfqExpireQuoteAck",
  "payload": {
    "quoteId": "6d187635-27df-4175-8b23-f1f0ec84907e"
  }
}

Market

Aquanow's Market execution strategy is utilized to perform instant executions.

Create a market order

POST https://api.aquanow.io/trades/v1/market

Note: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.

If order is not filled, the request will return a 200 response, with receiveQuantity and deliverQuantity set to 0.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

ticker*

String

e.g., BTC-USD

Pair to be traded

tradeSide*

String

"buy" or "sell" order

accountId*

String

Identifier for account the order will be applied to.

deliverQuantity*

Number

NOTE: Specify either deliverQuantity or receiveQuantity.

Quantity of currency delivered by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, then the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.

receiveQuantity*

Number

NOTE: Specify either deliverQuantity or receiveQuantity.

Quantity of currency received by user based on the ticker and tradeSide. For example, if ticker is BTC-USD and tradeSide is buy, then the received currency is BTC. If tradeSide is sell, the received currency is USD.

usernameRef

String

A new reference string for sub-accounts.

Must be less than 64 characters, cannot contain special characters.

Returns an ExecutionsObject.

{
    "type": "marketOrderSubmitAck",
    "payload": {
        "accountId": "CA1000051R",
        "orderId": "3585e626-c8e9-4fc8-849a-fd48f67cd513",
        "receiveCurrency": "USD",
        "receiveQuantity": 3517.525,
        "deliverCurrency": "BTC",
        "deliverQuantity": 0.05,
        "fee": 0
    }
}

TWAP

Aquanow's execution algorithm.

TWAP

Time-Weighted Average Price (TWAP) is used when buying or selling large amounts of digital assets over time, with the ability to choose the amount being sold and its time period.

Create an order

POST https://api.aquanow.io/trades/v1/order

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

String

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

strategy*

String

Trading strategy to be executed

NOTE: Currently, we only support TWAP strategies.

accountId*

String

NOTE: required for accounts under the new account system.

Identifier for account the order will be applied to.

ticker*

String

Strategy pair to be traded (e.g., BTC-USD)

tradeSide*

String

"buy" or "sell" order

tradePrice*

Number

Price of the coin on purchase

tradeSize*

Number

Size or quantity of order

tradeDuration*

Number

NOTE: only required if strategy is TWAP.

Duration is in number of seconds. Minimum duration is 300 seconds.

usernameRef

String

A new reference string for subaccounts. Must be less than 64 characters and cannot contain special characters.

Returns an ExecutionsObject.

{
    "type": "parentOrderSubmitAck",
    "payload": {
        "accountId": "CA1000051R",
        "orderId": "3b46c57e-1039-4aa4-886c-4a06ddbf38cf"
    }
}

Cancel a pre-existing TWAP order.

DELETE https://api.aquanow.io/trades/v1/order

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Query Parameters

Name
Type
Description

orderId*

String

orderId to be canceled

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Returns an ExecutionsObject.

{
  "type": "parentOrderCancelAck",
  "payload": {
    "orderId": "7b323a75-5457-450f-9bf0-46fa6f20ff4e"
  }
}

FOK

Fill or Kill order strategy will execute the entire order immediately at the market or specified price, otherwise it will cancelled if not filled.

Endpoint to initiate a FOK request to Aquanow.

POST https://api.aquanow.io/trades/v1/order

NOTE: Either deliverQuantity, receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.

If order is not filled, the request will return a 200 response with a Cancelled message.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

strategy*

String

"FOK"

accountId*

String

Identifier for account the order will be applied to.

ticker*

String

e.g., BTC-CAD

Currency pair

tradeSide*

String

"buy" or "sell"

receiveQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency received by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the received currency is BTC. If tradeSide is sell, the received currency is USD.

deliverQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency delivered by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.

tradePrice*

Number

Trade price of ticker symbol

usernameRef

String

A new reference string for sub-accounts.

Must be less than 64 characters, cannot contain special characters.

Returns an ExecutionsObject.

{
    "type": "parentOrderSubmitAck",
    "payload": {
        "accountId": "CA1000051R",
        "orderId": "29b7ab4b-14d1-445b-bca2-6fffc2cbfcd3",
        "receiveCurrency": "BTC",
        "receiveQuantity": 0.009,
        "deliverCurrency": "USD",
        "deliverQuantity": 632.21202,
        "fee": 0,
        "tradeTime": 1712856785161,
        "symbol": "BTC-USD",
        "tradeStatus": "COMPLETE",
        "price": 70245.78
    }
}

LIMIT/GTC/GTD

Aquanow's duration order algorithms with a price limit.

Orders can be completed immediately depending on the specified priceLimit, quantity and the market. Incomplete pre-existing orders expire depending on the strategy.

Duration Order Algorithms

LIMIT

LIMIT orders create a pre-existing order, available for up to 24 hours.

GTC

Good Till Cancel (GTC) orders create a pre-existing order, available for up to 90 days.

GTD

Good Till Date (GTD) orders create a pre-existing order, available until a specified expirationTime date (max. 90 days).

Endpoint to initiate an LIMIT/GTC/GTD request to Aquanow.

POST https://api.aquanow.io/trades/v1/order

NOTE: Either deliverQuantity or receiveQuantity must be specified. If both are specified, receiveQuantity will be considered for sell orders, and deliverQuantity will be considered for buy orders.

If order is not filled, the request will return a 200 response with receiveQuantity and deliverQuantity set to 0.

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

strategy*

String

"LIMIT", "GTC" or "GTD"

accountId*

String

Identifier for account the order will be applied to.

ticker*

String

e.g., BTC-CAD

Currency pair

tradeSide*

String

"buy" or "sell"

priceLimit*

Number

Limit price of a ticker symbol, determined by tradeSide and deliverQuantity/receiveQuantity

deliverQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency delivered by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, then the delivered currency is USD. If tradeSide is sell, the delivered currency is BTC.

receiveQuantity*

Number

NOTE: specify either deliverQuantity or receiveQuantity.

Quantity of currency received by user based on the ticker and tradeSide.

For example, if ticker is BTC-USD and tradeSide is buy, then the received currency is BTC. If tradeSide is sell, the received currency is USD.

expirationTime*

Number

NOTE: only required for GTD orders.

e.g., 1669972404350

Expiration time in milliseconds of when the pre-existing order will expire. Expiration time must be within 90 days of order creation.

usernameRef

String

A new reference string for sub-accounts. Must be less than 64 characters, cannot contain special characters.

Returns an ExecutionsObject.

{
    "type": "limitOrderAck",
    "payload": {
        "accountId": "CA1000051R",
        "quoteId": "0013bf70-75f7-4775-a25e-59c994079504",
        "quoteTime": 1712857066378,
        "expireTime": 1712943466378,
        "ticker": "BTC-USD",
        "tradeSide": "sell",
        "receiveCurrency": "USD",
        "receiveQuantity": 100,
        "deliverCurrency": "BTC",
        "deliverQuantity": 0.0014128285,
        "price": 70780
    }
}

Cancel a pre-existing LIMIT/GTC/GTD order.

DELETE https://api.aquanow.io/trades/v1/order

To view example requests for this endpoint, visit Aquanow's Postman documentation.

Headers

Name
Type
Description

x-api-key*

String

{{x-api-key}}

API Auth Key

x-signature*

String

49c6260c194f4d7ed5cb917dc70b9821673246b2abc1cf28f05df6a75fd24181e00f8e57b321d15ae45db58b3bffe27a

Signature created using your API secret

x-nonce*

Number

1618307861949

Timestamp in millisecond

Content-Type*

String

application/json

Request Body

Name
Type
Description

orderId*

String

orderId to be canceled

Returns an ExecutionsObject.

{
    "type": "parentOrderCancelAck",
    "payload": { 
        "orderId": "7b323a75-5457-450f-9bf0-46fa6f20ff4e"
    }
}

Last updated