Signal Parameters
Guide for Fund Managers: New signal parameters, now available with Profit-Sharing version 2.0.
Gerardo Bello avatar
Written by Gerardo Bello
Updated over a week ago

Below is an Index of all available types of signals and specific parameters that can be used.

To link your TradingView account to Zignaly you need to use the NEW Webhook URL option in your TradingView alert box. Trading View Integration.

Check the option and enter our signal endpoint:

Here is a good resource recommended by the community to check
your JSON format: https://jsonformatter.curiousconcept.com/

In this article:

      • takeProfitAmountPercentage1

      • takeProfitPercentage1

      • takeProfitPrice1

      • takeProfitPriority

      • skipExitingAfterTP

      • DCAAmountPercentage1

      • DCAFromBeginning and DCAPlaceAll

      • DCAPriority

      • DCATargetPercentage1

      • DCATargetPrice1

      • stopLossFollowsTakeProfit

      • stopLossForce

      • stopLossPercentage

      • stopLossPrice

      • stopLossPriority

      • stopLossToBreakEven

      • trailingStopDistancePercentage

      • trailingStopTriggerPercentage

      • trailingStopTriggerPrice

      • trailingStopTriggerPriority

      • amount

      • positionSize

      • positionSizePercentageFromAccountAvailable

      • positionSizePercentageFromAccountTotal

      • positionSizePercentageFromQuoteAvailable

      • positionSizePercentageFromQuoteTotal

      • increasePSOrderType

      • increasePSStopPrice

      • increasePSPrice

      • increasePSPricePercentageFromAverageEntry

      • increasePSPricePercentageFromOriginalEntry

      • increasePSAmount

      • increasePSCost

      • increasePSCostPercentageFromRemaining

      • increasePSCostPercentageFromTotal

      • increasePSPercentageFromTotalAccountBalance

      • reduceAvailablePercentage

      • reduceOrderType

      • reducePersistent

      • reduceRecurring

      • reduceTargetAmount

      • reduceTargetPercentage

      • reduceTargetPrice

      • reducePostOnly

      • reduceTargetPriority

      • removeAllReduceOrders

      • removeDCAs

      • removeReduceOrder

      • removeReduceRecurringPersistent

      • removeTakeProfits

    • buyTTL

    • exitByTTLAt

    • cancelBuyAt

    • forceExitByTTL

    • hedgeMode

    • ignoreOpenContractCheck

    • MDXXXXXX

    • multiplyByLeverage

    • postOnly

    • sellTTL


GLOSSARY

buyStopPrice

Signals Type: entry

This field is mandatory if the orderType is equal to stop-limit in a buy signal. It will be the price at which, once reached, a limit order will be placed.

exchange

Signals Type: All of them.

This field is mandatory, and it's used to specify for which exchange your signals are.

key

Signals Type: All of them.

A mandatory parameter that is used to identify your provider.


You should not share your key. Never post it in a public place. Anyone with this key could send signals to your provider. You can get your key from your provider edit tab.

leverage

Signals Type: entry.


Enter your leverage amount, if not using enter 1.

Examples for an entry, long position:

We want to buy 100 USDT in ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long",
"leverage":"123",
"signalId":"YOURSIGNALID"}

limitPrice

Signals Type: entry, exit.

Is the limit price at which an order will be sent.

orderType

Signals Type: entry, exit

For buy signals, you can choose between limit, market, stop-limit, or 'multi' for Futures signals. The stop-limit order waits until the price in the "buyStopPrice" parameter has been reached and then places a buy limit order for the price specified in the limitPrice parameter.

Default is limit.

Examples:

*Syntax for Spot:

Market:
{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

Limit:
{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

Stop-limit:
{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"stop-limit",
"buyStopPrice":"YOURPRICE",
"limitPrice":"yourprice",
"pair":"adausdt",
"positionSize":"100",
"signalId":"YOURSIGNALID"}


*Syntax for Futures:

Include the parameters.

"side":"long/short",
"leverage":"123",

For sell signals, they can be market or limit. Limit orders remove the current unachieved take profits targets from the user and place a new one, for the remaining amount at the suggested price in the signal.

orderType = multi

Signals Type: entry

In a Futures Exchange, this will open a position with two orders, one long and one short.


The first side to fill will be used, any additional parameters (take profits/DCAs/reduce/stop loss/trailing stop) will be adapted to the winning side.

Example explanation:
In this example we are going to continue with the logic of the previous one, we are going to program 2 DCAs and a TP. But this time we are going to prioritize the price in the DCAs.


To note:

entry side needs to be long: "side":"long".

orderType_long/orderType_short, cannot be "market".

If then the "short" wins, the position will be flipped but by default, and handled as a long one. For copy trading, once the order is filled, a limit order will be created with limitPrice from the winning order.


Example:

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"multi",
"pair":"adausdt",
"positionSize":"100",
"side":"long",
"leverage":"123",
"orderType_long":"limit",
"limitPrice_long":"yourprice",
"orderType_short":"limit",
"limitPrice_short":"yourprice",
"takeProfitPercentage1":"10",
"takeProfitAmountPercentage1":"50",
"takeProfitPercentage2":"20",
"takeProfitAmountPercentage2":"50",
"stopLossPercentage":"3",
"DCATargetPercentage1":"5",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"7",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}

price

Signals Type: entry, exit.

Your suggested base price for calculating the limit price. If you don't use any price, the system will use the current market price (when the signal arrived).

side

Signals Type: entry, exit.


You must use this field to identify a Long or Short position.

signalId

Signals Type: entry, exit, update.

An ID that you can use to identify the positions that have been opened from a specific buy signal. Later, if you want to act against those positions (selling, rebuying), you need to use the same ID. The ideal scenario is to use unique IDs that you will store in your database, but when using services like TradivingView or tools like MT5, you can't keep track of the IDs. In this case, you can use the market symbol as ID.

Also, if you need to re-use the IDs, you won't be able to have more than one position per market concurrently.

type

Signals Type: All of them.


The type of signal that you are sending, the options are entry, update, exit, cancelEntry, reverse.


Type of signals:

entry / update

exit

cancelEntry

reverse

entry/update:

type=entry/update.

Mandatory parameters:

For Spot:

key

type

exchange

pair

amount / *positionSize

signalId

For Futures:

key

type

exchange

pair

amount / *positionSize

side

leverage

signalId

*positionSize can be:

  • positionSize

  • positionSizePercentageFromQuoteAvailable

  • positionSizePercentageFromQuoteTotal

  • positionSizePercentageFromAccountAvailable

  • positionSizePercentageFromAccountTotal

Entry signals allow you to send signals for opening positions. This will open the position on Zignaly, and also, will send the buy order to the exchange. Buy orders can be limit, market, or stop-limit, based on the orderType parameter.

In this example, we are sending an "Entry" signal. For this type of signal, the "signalID" is not mandatory if we send our TP, SL, or other parameters included in this Syntax.

On the other hand, if we plan to send "Update" or "Exit" signals, it is extremely important that we indicate a "signalID" in order for the next signal to identify which position & apply these instructions to the position.

In the event that we decide to send signals to the futures market, it is important that we indicate the direction of the trade if we want it to be in a long or a short position and also the leverage.

Example:

*Syntax for Spot:
We want to buy 100 USDT in ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:
We want to buy 100 USDT in ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long",
"leverage":"123",
"signalId":"YOURSIGNALID"}

Now, suppose we have an open trade in our dashboard in Zignlay, but we want to modify our Stop Loss. Here if it is important to place the "signalID" so that it identifies the position we are looking to update.

Examples:

*Syntax for Spot:
We bought buy 100 USDT in ADA coins at the market price with this syntax.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

The position is still open and we want to set a Stop Loss for example.

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"stopLossPercentage":"-4"
"signalId":"YOURSIGNALID"}


*Syntax for Futures:
We bought buy 100 USDT in ADA coins at the market price with this syntax.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long",
"leverage":"123",
"signalId":"YOURSIGNALID"}

The position is still open and we want to set a Stop Loss for example.

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"stopLossPercentage":"-4"
"signalId":"YOURSIGNALID"}

The parameters that can be updated are:

  • reBuyTargets: You can add as many DCAAmountPercentageX, DCATargetPercentageX (or DCATargetPriceX instead of percentage) as you want. Remember that an already done target can't be updated (even if it has failed).

  • removeDCAs: removes any current pending DCA targets (removeDCAs=true)

  • removeTakeProfits: removes any current pending Take Profit targets (removeTakeProfits=true)

  • stopLossPrice (with stopLossPriority)

  • stopLossPercentage: Attention, you need to send it as a negative value (example: -5), if not, it will place a positive stop loss value, meaning that if the current price is below it, the position will be sold.
    If you want to place a positive value, then no symbol is needed.

  • trailingStopTriggerPercentage

  • trailingStopDistancePercentage

  • takeProfitTargets: You can add as many takeProfitAmountPercentageX, takeProfitPercentageX (or takeProfitPriceX) as you want. *when you send an update signal adding new TP targets, it will remove the previous ones.

  • For position size:

    increasePSOrderType

    increasePSStopPrice

    increasePSPrice

    increasePSPricePercentageFromAverageEntry

    increasePSPricePercentageFromOriginalEntry

    increasePSAmount

    increasePSCost

    increasePSCostPercentageFromRemaining

    increasePSCostPercentageFromTotal

    reduceTargetAmount


exit:

type=exit.

Mandatory parameters:

For Spot:

key

type

exchange

*orderType (opcional)

pair

signalId

For Futures:

key

type

exchange

*orderType (opcional)

pair

signalId

*orderType can be:

  • orderType = market

  • orderType = limit

If it is "limit" add then you must add this other parameter:

"limitPrice":"yourprice"

In this example, we are sending an "exit" signal to a position that we have open in our Zignaly exchange. As you have to find the current position that is open and close it, it is extremely important that the position has "signalID" and we put that ID in our signal in the "signalID" field.

In the following example, we've indicated to exit this position by Market order, adding "orderType": "market", this is not a mandatory field, so it is optional.

Example:

*Syntax for Spot and Futures:
We want to close the position at the market price.

{"key":"YOURKEY",
"type":"exit",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"signalId":"YOURSIGNALID"}


cancelEntry:

type=cancelEntry.

Mandatory parameters:

For Spot and Futures:

key

type

exchange

pair

signalId

It is very important to check the "signalId" of the order you want to cancel.

Suppose we send an entry limit signal, and for some reason, we see that it will not complete because the price moved away from the zone we established. We can send a signal to cancel that entry.

cancelEntry type will remove an entry signal that has not been filled yet.

For example, if your entry was using a limit order, it will be removed from the Exchange.

Example:

*Syntax for Spot and Futures:

{"key":"YOURKEY",
"type":"cancelEntry",
"exchange":"zignaly",
"pair":"adausdt",
"signalId":"YOURSIGNALID"}


reverse:

type=reverse.

Mandatory parameters:

Only for Futures:

key

type

exchange

pair

signalId

The signal works as an exit and an entry signal.


It will exit the given position, then once it is done and the accounting is performed, it will open a new position.

You can use any parameters in this signal that is available for either exit or entry, but if you want to use the same parameter for the exit and the entry, but with different values, add the prefix "exit" or "entry" to the parameter. For example, if I want to exit with "market" but I want to enter with "limit", then I need to use exitOrderType=market and entryOrderType=limit

exitOrderType

entryOrderType

You could also apply any other parameter that is allowed in an Entry signal. The same applies to the exit signal:

exit***

entry***

NOTE: In case you use only 1 signalId for both Exit and Entry, you only need to put 'signalId' parameter. In case you use 2 different signalId, one for the new entry and one for the exit signal, you should specify:

entrySignalId: the signal ID for the new entry signal.

signalId: the ID for the current open position to exit

The accounting process is what will trigger the buy, so, if there is an open position, it will wait until it is closed and accounted for, then send the entry signal. If there isn't an open position for exiting, it will open a new one, creating an entry signal immediately.

Example explanation:

Suppose we want that if the trend reverses, we can close the trade that we have opened and immediately open one in a new direction. For that, we have to use a reverse signal and configure the parameters so that it leaves a position and opens the opposite operation.

This is a complex syntax, and we have to configure entry and exit parameters at the same time. That is why we use “exitSide":"long" and "entrySide":"short", for this example.

Example:

*Syntax for Futures:
Suppose you open a position with this signal:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"50",
"side":"long",
"leverage":"123",
"signalId":"YOURSIGNALID"}

Now, if we send the "reverse" signal, it will close the old one and open the new one:

{"key":"YOURKEY",
"type":"reverse",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"exitSide":"long",
"entrySide":"short",
"exitOrderType":"market",
"entryOrderType":"market",
"entryLeverage":"123",
"positionSize":"50",
"entrySignalId":"YOURNEWSIGNALID",
"signalId":"YOURSIGNALID"}

REVIEW: The signalID doesn't change when the "reverse" signal is sent, remains the same "yoursignalid" instead of "yournewsignalid".

Common Signal Parameters:


TAKE-PROFIT:


takeProfitPercentage1

Signals Type: entry, update.


You can send as many targets as you want, increasing by one the final number for each new target. This parameter is the percentage that we would apply to the buying price to determine your target price.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPercentage1":"3",
"takeProfitAmountPercentage1":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPercentage1":"3",
"takeProfitAmountPercentage1":"100",
"signalId":"YOURSIGNALID"}


takeProfitAmountPercentage1

Signals Type: entry, update.


You can send as many targets as you want, increasing by one the final number for each new target. The % of units (coins) bought. If this parameter is missing, the system will divide 100% by all the targets. If you send three targets, it will be 100/3 per target. The total takeProfitAmountPercentage from all your targets must equal to 100.

If you split your targets:

You can add as many targets as you wish but each target quantity has to be above or equal to the minimum amount required by the invested coin.

If you ignore this, all Take Profit will be canceled except for the last one, which will take the information of the total amount of coins in the position and sell them at the agreed price, even if it visually appears in the position, which will sell only a part of them.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPercentage1":"3",
"takeProfitAmountPercentage1":"50",
"takeProfitPercentage2":"5",
"takeProfitAmountPercentage2":"50",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPercentage1":"3",
"takeProfitAmountPercentage1":"50",
"takeProfitPercentage2":"5",
"takeProfitAmountPercentage2":"50",
"signalId":"YOURSIGNALID"}


takeProfitPriority

Signals Type: entry.


percentageprice (default percentage)

The system works in percentage, (as default) meaning when you use the above parameter 'takeProfitPrice1' the system calculates this price value in percentage from the buying price value.

When you apply takeProfitPriority as (takeProfitPriority = Price) it will now set your take profit as an exact price instead of using the default percentage value.

You can indicate your price including the 'takeProfitPrice1' parameter.
*The priority parameter will affect all the takeProfit targets.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"25",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"75",
"takeProfitPrice2":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"25",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"75",
"takeProfitPrice2":"yourprice",
"signalId":"YOURSIGNALID"}


takeProfitPrice1

Signals Type: entry, update.


You can send as many targets as you want, increasing by one the final number for each new target. The price target at which the amount for this target will be sold. The take-profits orders are placed in the exchange as soon as the buying order has been filled.

Even when you send the price directly instead of the percentage, the system still works with the percentage and will get it from this price value, and the suggested.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"50",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"50",
"takeProfitPrice2":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"50",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"50",
"takeProfitPrice2":"yourprice",
"signalId":"YOURSIGNALID"}


skipExitingAfterTP

Signals Type: entry, update.


Example: "skipExitingAfterTP":"true".

By default, the value is "skipExitingAfterTP":"false".


Currently, if you create a position with one or more take profits and don't cover 100% of the position size, the remaining amount will be sold at the current market price as soon as the last take profit is filled.

If we send: "skipExitingAfterTP":"true" with the entry or update signal, the remaining amount will stay open. Let's see how it works.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"40",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"30",
"takeProfitPrice2":"yourprice",
"skipExitingAfterTP":"true",
"signalId":"YOURSIGNALID"}

The two TPs cover 70% of the total position, the other 30% will remain in the
open position until you close it manually or with a signal.

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPriority":"price",
"takeProfitAmountPercentage1":"40",
"takeProfitPrice1":"yourprice",
"takeProfitAmountPercentage2":"30",
"takeProfitPrice2":"yourprice",
"skipExitingAfterTP":"true",
"signalId":"YOURSIGNALID"}

The two TPs cover 70% of the total position, the other 30% will remain in the
open position until you close it manually or with a signal.


DCA's:


DCAAmountPercentage1

Signals Type: entry, update.


You can send as many targets as you want, increasing by one the final number for each new target. The % of units (coins) to re-buy. Always from the remaining amount.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}


DCATargetPercentage1

Signals Type: entry, update.


You can send as many targets as you want, increasing by one the final number for each new target. Once the price drops this percentage from the average buying price, a limit buy order will be sent to the exchange.

Example explanation:
In this example, we are going to open a position with two DCAs configured to buy back 100% of the position upon reaching the values of 3% and 5%. We also add a TP in the syntax.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}


DCAPriority

Signals Type: entry, update.

percentage|price (default percentage)

The system works in percentage, (as default) meaning when you use the above parameter 'DCATargetPrice1' the system calculates this price value in percentage from the entry price value.

When you apply DCAPriority as (DCAPriority = Price) it will now set your DCA orders as an exact price instead of using the default percentage value.

You can indicate your price including the 'DCATargetPrice1' parameter.
*The priority parameter will affect all the DCA targets.

Example explanation:
In this example we are going to continue with the logic of the previous one, we are going to program 2 DCAs and a TP. But this time we are going to prioritize the price in the DCAs.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"DCAPriority":"price",
"DCAAmountPercentage1":"100",
"DCATargetPrice1":"yourprice",
"DCAAmountPercentage2":"100",
"DCATargetPrice2":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"DCAPriority":"price",
"DCAAmountPercentage1":"100",
"DCATargetPrice1":"youprice",
"DCAAmountPercentage2":"100",
"DCATargetPrice2":"yourprice",
"signalId":"YOURSIGNALID"}


DCATargetPrice1

Signals Type: entry, update.

You can send as many targets as you want, increasing by one the final number for each new target. Even when you send the price directly instead of the percentage, the system still works with the percentage and will get it from this price value and the average entry price value.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"DCAPriority":"price",
"DCAAmountPercentage1":"100",
"DCATargetPrice1":"yourprice",
"DCAAmountPercentage2":"100",
"DCATargetPrice2":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"DCAPriority":"price",
"DCAAmountPercentage1":"100",
"DCATargetPrice1":"youprice",
"DCAAmountPercentage2":"100",
"DCATargetPrice2":"yourprice",
"signalId":"YOURSIGNALID"}


DCAFromBeginning": "true" and "DCAPlaceAll": "true"

Signals Type: entry, update.

These two parameters are used together, and what they allow is that all the DCA are placed from the beginning, at the moment the position is opened, all of them will be placed in the exchange.

This parameter will take the "DCATargetPercentage" and the "DCAAmountPercentage" from the Av entry price at the moment the position is opened, and will not be modified. This means that traders must make a different calculation when calculating the size and distance of the DCA since everything will be taken from the values that the position has at the moment of opening.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"DCAFromBeginning":"true",
"DCAPlaceAll":"true",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"DCAFromBeginning":"true",
"DCAPlaceAll":"true",
"DCATargetPercentage1":"-3",
"DCAAmountPercentage1":"100",
"DCATargetPercentage2":"-5",
"DCAAmountPercentage2":"100",
"signalId":"YOURSIGNALID"}


STOP-LOSS:


stopLossPercentage

Signals Type: entry, update.


The stop-loss price will be calculated from the buying price plus this percentage. You can use stopLossPrice directly.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"stopLossPercentage":"-3",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"stopLossPercentage":"-3",
"signalId":"YOURSIGNALID"}


stopLossFollowsTakeProfit

Signals Type: entry, update.


When a take profit order is completed, the stop loss will be updated to the previous take profit setting, if it was the first take profit, then it is updated to the entry point of the position.


Example:
stop-loss -10%
take profit 1: +10%
take profit 2: +20%
take profit 3: +30%


When the first take profit is completed, the stop loss is moved to the entry price plus 0.3% (allowing room for fees)
When the second take profit is completed, then the stop loss is moved to the first take profit target example: +10%, and so on until the position is closed,
It always updates to the previous take profit value.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"stopLossFollowsTakeProfit":"true",
"stopLossPercentage":"-10",
"takeProfitPercentage1":"10",
"takeProfitAmountPercentage1":"25",
"takeProfitPercentage2":"20",
"takeProfitAmountPercentage2":"25",
"takeProfitPercentage3":"30",
"takeProfitAmountPercentage3":"50",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"stopLossFollowsTakeProfit":"true",
"stopLossPercentage":"-10",
"takeProfitPercentage1":"10",
"takeProfitAmountPercentage1":"25",
"takeProfitPercentage2":"20",
"takeProfitAmountPercentage2":"25",
"takeProfitPercentage3":"30",
"takeProfitAmountPercentage3":"50",
"signalId":"YOURSIGNALID"}


stopLossForce

Signals Type: update.

What this function does is place the SL from the beginning and ignore all the subsequent DCA's (the ones that are not executed), then close the position.

This parameter should be used in combination with "stopLossPriority": "price", and "stopLossPrice": "yourprice".

Warning: For use by advanced users only, who are sure of its function.

Examples:

*Syntax for Spot:

Assuming we have an open position with DCA's executed or not.

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"stopLossForce":"true",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

Assuming we have an open position with DCA's executed or not.

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"stopLossForce":"true",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}


stopLossPrice

Signals Type: entry, update.


The stop-loss price is used for closing your position if the price falls below this value. Take into consideration that even when you send a price, the system still works with percentage, getting this percentage from this value and the suggested buying price.

If you want to use the Price option, you must add stopLossPriority to the signal, otherwise, it will automatically take the percentage.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}


stopLossPriority

Signals Type: entry.


percentageprice (default percentage)

The system works in percentage, (as default) meaning when you use the above parameter 'stopLossPrice' the percentage from the entry price (or market price if any) is calculated and then it applies that percentage to the real entry price.

When you apply stopLossPriorty as (stopLossPriority = Price) it will now set your stoploss as an exact price instead of using the default percentage value.

You can indicate your price including the 'stopLossPrice' parameter


Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"stopLossPriority":"price",
"stopLossPrice":"yourprice",
"signalId":"YOURSIGNALID"}


stopLossToBreakEven

Signals Type: entry, update.


Whenever a take profit is completed the stop loss is updated to the entry price of the position, plus 0.3% (allowing room for fees).

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"stopLossToBreakEven":"true",
"stopLossPercentage":"-8",
"takeProfitPercentage1":"2",
"takeProfitAmountPercentage1":"25",
"takeProfitPercentage2":"4",
"takeProfitAmountPercentage2":"25",
"takeProfitPercentage3":"6",
"takeProfitAmountPercentage3":"50",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"stopLossToBreakEven":"true",
"stopLossPercentage":"-8",
"takeProfitPercentage1":"2",
"takeProfitAmountPercentage1":"25",
"takeProfitPercentage2":"4",
"takeProfitAmountPercentage2":"25",
"takeProfitPercentage3":"6",
"takeProfitAmountPercentage3":"50",
"signalId":"YOURSIGNALID"}


TRAILING STOP-LOSS:


trailingStopDistancePercentage

Signals Type: entry, update.


The percentage from the higher price at which the position will be closed if the price falls below it. In order for this to work, remember to add "trailingStopTriggerPercentage'.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPercentage":"yourpercentage",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPercentage":"yourpercentage",
"signalId":"YOURSIGNALID"}


trailingStopTriggerPercentage

Signals Type: entry, update.


The stop loss trigger price will be calculated from the buying price plus this percentage. You can use trailingStopTriggerPrice directly.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPercentage":"yourpercentage",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPercentage":"yourpercentage",
"signalId":"YOURSIGNALID"}


trailingStopTriggerPrice

Signals Type: entry, update.


At this price, the trailing stop will be activated, meaning, the price will be watched, and if it falls below the trailingStopDistancePercentage, the position will be closed selling at the current market price. Even if you send this parameter instead of the trailingStopTriggerPercentage, the system still will work with percentage, getting it from this value and the suggested buying price.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"trailingStopTriggerPriority":"price",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPrice":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"trailingStopTriggerPriority":"price",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPrice":"yourprice",
"signalId":"YOURSIGNALID"}


trailingStopTriggerPriority

Signals Type: entry.


percentageprice (default percentage)

The system works in percentage, (as default) meaning when you use the above parameter 'trailingStopTriggerPrice' the system calculates this price value in percentage from the buying price value.

When you apply trailingStopTriggerPriority as (trailingStopTriggerPriority = Price) it will now set your trailing stop loss to be triggered at an exact price instead of using the default percentage value.

You can indicate your price including the 'trailingStopTriggerPrice' parameter,

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"trailingStopTriggerPriority":"price",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPrice":"yourprice",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"trailingStopTriggerPriority":"price",
"trailingStopDistancePercentage":"yourpercentage",
"trailingStopTriggerPrice":"yourprice",
"signalId":"YOURSIGNALID"}


AMOUNT/POSITION SIZE:


amount

Signals Type: entry.

Position Size is based on the amount of Base currency you want to buy instead of the Quote currency. For example, if we send a syntax with "amount": "100" and the syntax "pair" is "ADAUSDT", the base currency of the pair is "ADA" so the position will have 100 units of ADA (Cardano), regardless of the leverage we use.

This parameter has priority, so it will override any other positionSize parameter added in the syntax.

Examples:

*Syntax for Spot:
We want to buy 100 ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"amount":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:
We want to buy 100 ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"amount":"100",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}


positionSize

Signals Type: entry.

It allows us to indicate how much Quote coin we want to use for the Invested position.

If the syntax is sent with this parameter, "positionSize": "100", and our Quote coin of the pair is USDT, it will open a position with Invested of 100 USDT no matter how much the total balance of the service is.

Examples:

*Syntax for Spot:
We want to buy 100 USDT in ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:
We want to buy 100 USDT in ADA coins at the market price.

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}


positionSizePercentageFromAccountAvailable

Signals Type: entry.

This parameter calculates a percentage on the value of the available account, which means that it will not take into account the capital that has been used in orders, it only takes the available balance.

Examples:

*Syntax for Spot:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromAccountAvailable":"5",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromAccountAvailable" of 5%, a 5% position of
800 USDT will be opened (position size: 40 USDT).

*Syntax for Futures:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromAccountAvailable":"5",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromAccountAvailable" of 5%, a 5% position of
800 USDT will be opened (position size: 40 USDT).


positionSizePercentageFromAccountTotal

Signals Type: entry.

This parameter values the account at the time of sending the alert using a percentage of that total, regardless of whether it is available or occupied in orders or positions.

Examples:

*Syntax for Spot:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromAccountTotal":"5",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromAccountTotal" of 5%, a 5% position of 1000 USDT
will be opened (position size: 50 USDT).

*Syntax for Futures:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromAccountTotal":"5",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromAccountTotal" of 5%, a 5% position of 1000 USDT
will be opened (position size: 50 USDT).


positionSizePercentageFromQuoteAvailable

Signals Type: entry.

This parameter calculates a percentage of the available Quote coin value, which means that it will not take into account the capital that has been used in orders, only the available balance of the Quote coin that we indicate in our "pair".

Examples:

*Syntax for Spot:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromQuoteAvailable":"5",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromQuoteAvailable" of 5%, a 5% position of 800 USDT
will be opened (position size: 40 USDT).

*Syntax for Futures:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromQuoteAvailable":"5",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromQuoteAvailable" of 5%, a 5% position of 800 USDT
will be opened (position size: 40 USDT).


positionSizePercentageFromQuoteTotal

Signals Type: entry.

This parameter calculates the total of the Quote Coin that we have indicated in our "pair", either because it is available or it is being used in some order or position and opens the position according to the percentage that we have indicated in our syntax.

Examples:

*Syntax for Spot:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromQuoteTotal":"5",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromQuoteTotal" of 5%, a 5% position of 1000 USDT
will be opened (position size: 50 USDT).

*Syntax for Futures:
Assume you have an allocated of 1000 USDT.
You have open positions worth 20% of the allocated (200 USDT).

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSizePercentageFromQuoteTotal":"5",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}

With the "positionSizePercentageFromQuoteTotal" of 5%, a 5% position of 1000 USDT
will be opened (position size: 50 USDT).


Things to consider in the Amount and PositionSize parameters:

  • Parameters that are based on percentages perform additional calculations and will have more latency to execute the orders. For normal strategies, it does not affect, but for high-frequency Scalping or low timeframes, it is advisable to use parameters such as "amount" or "positionSize" which are immediate.

  • Now the Quote is taken directly from the pair that we send in the syntax, not from the service. So even if a service is created with Quote USDT, if I have BUSD available, I can send a syntax to use those coins and open any pair that uses it as Quote.

  • positionSizePercentageFromAccountTotal and positionSizePercentageFromAccountAvailable only work for BTC and USD paired coins (specifically these: ['USDT', 'USDC', 'BUSD', 'DAI’]), including Futures.

  • In case multiple of these parameters are sent in the same syntax, only 1 of them will be taken into account, based on this priority scale:

    1. amount

    2. positionSize

    3. positionSizePercentageFromQuoteAvailable

    4. positionSizePercentageFromQuoteTotal

    5. positionSizePercentageFromAccountAvailable

    6. positionSizePercentageFromAccountTotal


INCREASE:


increasePSOrderType

Signals Type: update.

Indicate the type of order you want to use, "limit", "market" or "stop-limit".

Examples:

*Syntax for Spot/Futures:

Let's assume that we buy 100 USDT in ADA coins at the market price.

Now if we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"stop-limit",
"increasePSStopPrice":"yourprice",
"increasePSPricePercentageFromAverageEntry":"yourpercentage",
"increasePSCost":"yoursize",
"signalId":"YOURSIGNALID"}


increasePSStopPrice

Signals Type: update.

If we use "increasePSOrderType": "stop-limit", then we must set the stop price.

Examples:

*Syntax for Spot/Futures:

Let's assume that we buy 100 USDT in ADA coins at the market price.

Now if we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"stop-limit",
"increasePSStopPrice":"yourprice",
"increasePSPricePercentageFromAverageEntry":"yourpercentage",
"increasePSCost":"yoursize",
"signalId":"YOURSIGNALID"}


increasePSPrice

Signals Type: update.

If we use "increasePSOrderType" with "limit" or "stop-limit", we must indicate the limit price of the order.

Examples:

*Syntax for Spot/Futures:

Let's assume that we buy 100 USDT in ADA coins at the market price.

Now if we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"limit",
"increasePSPrice":"yourprice",
"increasePSPricePercentageFromAverageEntry":"yourpercentage",
"increasePSCost":"yoursize",
"signalId":"YOURSIGNALID"}


increasePSPricePercentageFromAverageEntry

Signals Type: update.

Indicates the percentage of distance at which the order will be placed, in this parameter the distance is calculated from the Average Entry Price. That is to say that it will be the average of all the DCA that we have used.

Examples:

*Syntax for Spot/Futures:

Let's assume that we buy 100 USDT in ADA coins at the market price.

Now if we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"limit",
"increasePSPrice":"yourprice",
"increasePSPricePercentageFromAverageEntry":"yourpercentage",
"increasePSCost":"yoursize",
"signalId":"YOURSIGNALID"}


increasePSPricePercentageFromOriginalEntry

Signals Type: update.

Indicates the distance percentage at which the order will be placed, in this parameter the distance is calculated based on the Orignial Entry. This means that only the entry price of the first order will be taken into account, no matter how many DCAs have been used in between.

Examples:

*Syntax for Spot/Futures:

Let's assume that we buy 100 USDT in ADA coins at the market price.

Now if we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"limit",
"increasePSPrice":"yourprice",
"increasePSPricePercentageFromOriginalEntry":"yourpercentage",
"increasePSCost":"yoursize",
"signalId":"YOURSIGNALID"}


increasePSCost

Signals Type: update.

Indicates the size of the Increase Position based on the amount of Quote Coin we want to increase. For example if we use "increasePSCost": "100" in our syntax, and our Quote is USDT, the order size will be 100 USDT.

Examples:

*Syntax for Spot/Futures:

If we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"market",
"increasePSPricePercentageFromOriginalEntry":"yourpercentage",
"increasePSCost":"100",
"signalId":"YOURSIGNALID"}


increasePSAmount

Signals Type: update.

Indicates the size of Increase Position based on the amount of Base Coin we want to increase. For example, if we use "increasePSAmount": "100" in our syntax, and our "pair" is "adausdt", then the size of the Increase Position command will be 100 ADA units.

Examples:

*Syntax for Spot/Futures:

If we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"market",
"increasePSPricePercentageFromOriginalEntry":"yourpercentage",
"increasePSAmount":"100",
"signalId":"YOURSIGNALID"}


increasePSCostPercentageFromRemaining

Signals Type: update.

Indicates the Increase Position order size based on a percentage of the position's Remaining Coins (quote coin). For example, if originally our position had 100 USDT, and we reduce it to 50 USDT with a TP but then the price goes against us, and we want to make a buyback using this parameter. It will take the percentage we indicate based on the remaining 50 USDT.

Examples:

*Syntax for Spot/Futures:

If we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"limit",
"increasePSPrice":"youprice",
"increasePSCostPercentageFromRemaining":"yourpercentage",
"signalId":"YOURSIGNALID"}


increasePSCostPercentageFromTotal

Signals Type: update.

Indicates the Increase Position order size based on a percentage of the position's Total Coins (quote coin). For example, if originally our position had 100 USDT, and we reduce 50 USDT with a TP but then the price goes against us, and we want to make a repurchase using this parameter. It will take the percentage we indicate based on the total 100 USDT.

Examples:

*Syntax for Spot/Futures:


If we want to increase the size of the position we send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"limit",
"increasePSPrice":"youprice",
"increasePSCostPercentageFromTotal":"yourpercentage",
"signalId":"YOURSIGNALID"}


increasePSPercentageFromTotalAccountBalance

Signals Type: update.

Indicates the Increase Position order size based on a percentage of the total balance in your service (USDT, BUSD, or BTC). For example, if our position originally had 100 USDT, we want to make a repurchase using this parameter. It will take the percentage we indicate based on the total balance of the service; it doesn't matter if you have open orders; if the total amount is 10,000 USDT, that's the amount the parameter will take.

Examples:

*Syntax for Futures:

Let's assume that we have 10.000 USDT of total balance in our service.

We open a position with 100 USDT:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"signalId":"YOURSIGNALID"}

If we want to increase the size of the position by 20 USDT.

We must use 0.2% of the total balance allocated (10,000 USDT*0.2% = 20 USDT) and send this update:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"increasePSOrderType":"market",
"increasePSPercentageFromTotalAccountBalance":"0.2",
"multiplyByLeverage":"true",
"leverage":"123",
"signalId":"YOURSIGNALID"}

The new position size will be 120 USDT.

*Remember to use same signalId.
The "leverage" parameter should be the same as the entry one.
"multiplyByLeverage":"true" is necessary if you use it in your signals.


REDUCE:


reduceOrderType

Signals Type: update.

Options for orderType: limit (default), market

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetPercentage":"yourpercentage",
"reduceTargetAmount":"yoursize",
"signalId":"YOURSIGNALID"}


reduceTargetPrice

Signals Type: update.

If you want to use this option, you must add "reduceTargetPriority":"price" to the signal, otherwise, it will automatically take the percentage.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetPercentage":"yourpercentage",
"reduceTargetAmount":"yoursize",
"signalId":"YOURSIGNALID"}


reduceTargetPercentage

Signals Type: update.

This is the target price for the limit order, the target price is calculated from the average entry price.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetPercentage":"yourpercentage",
"reduceTargetAmount":"yoursize",
"signalId":"YOURSIGNALID"}


reduceTargetAmount

Signals Type: update.

Indicates the size of Reduce Position based on the amount of Base Coin we want to reduce. For example, if we use "reduceTargetAmount": "100" in our syntax, and our "pair" is "adausdt", then the size of the Reduce Position order will be 100 ADA units.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetPercentage":"yourpercentage",
"reduceTargetAmount":"yoursize",
"signalId":"YOURSIGNALID"}


reduceTargetPriority

Signals Type: update.

The system works in percentage (as default), meaning when you use the above parameter "reduceTargetPrice" the system calculates this price value in percentage from the buying price value.

When you apply reduceTargetPriority as (reduceTargetPriority = Price) it will now set your reduce target as an exact price instead of using the default percentage value.

You must indicate your price including the "reduceTargetPrice" parameter.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetAmount":"yousize",
"signalId":"YOURSIGNALID"}


reduceAvailablePercentage

Signals Type: update.


Example: "reduceAvailablePercentage":"xx"
This is the amount that will be reduced from the available amount inside the position.

Examples:

*Syntax for Spot with limit order:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"reduceOrderType":"limit",
"pair":"adausdt",
"reduceTargetpercentage":"3",
"reduceAvailablePercentage":"50",
"signalId":"YOURSIGNALID"}

*Syntax for Futures with market order:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"reduceOrderType":"market",
"pair":"adausdt",
"reduceAvailablePercentage":"50",
"signalId":"YOURSIGNALID"}

Troubleshooting with failed Reduce orders:

  • The order amount is below the Binance trading rules. (because of the original positionsize or because a percentage of your positionsize is blocked for other orders).

  • The Limit price exceeds the Binance limitation.

Thus, you can modify the price and the percentage in order to make it works.


reduceRecurring

Signals Type: update.


Example: "reduceRecurring";"true"


A new reduce order will be placed in the exchange as soon as a new DCA is filled.


reducePersistent

Signals Type: update.

Example: "reducePersistent":"true"


It won't close the position if there is any pending DCA, even if everything has been exited.


reducePostOnly

Signals Type: update.

Example: "reducePostOnly":"true"

All the "reduce" orders will be sent to the Exchange as post-only, which means that it will ensure a Maker rebate. If for any reason the order would be executed against any resting order, it will be canceled instead.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"reducePostOnly":"true"
"reduceOrderType":"limit",
"reduceTargetPrice":"yourprice",
"reduceTargetPriority":"price",
"reduceTargetPercentage":"yourpercentage",
"reduceTargetAmount":"yoursize",
"signalId":"YOURSIGNALID"}


REMOVE:


removeAllReduceOrders

Signals Type: update.


Example: "removeAllReduceOrders":"true"
Remove all current pending reduce orders.

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"removeAllReduceOrders":"true",
"signalId":"YOURSIGNALID"}


removeReduceOrder

Signals Type: update.


Example: "removeReduceOrder":"xx"
Remove one particular reduce order, identified by the targetId.


removeReduceRecurringPersistent

Signals Type: update.


Example: "removeReduceRecurringPersistent":"true"
If there is any reduce order with the flag recurring or persistent, it will remove them.


removeDCAs

Signals Type: update.


Example: "removeDCAs":"true"
Removes the current pending DCA targets

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"removeDCAs":"true",
"signalId":"YOURSIGNALID"}


removeTakeProfits

Signals Type: update.


Example: "removeTakeProfits":"true"
Removes the current pending Take Profit targets

Example:

*Syntax for Spot/Futures:

{"key":"YOURKEY",
"type":"update",
"exchange":"zignaly",
"pair":"adausdt",
"removeTakeProfits":"true",
"signalId":"YOURSIGNALID"}

Other signal Parameters:


buyTTL

Signals Type: entry


If the buying order hasn't been filled before these seconds elapse, the buying order will be canceled, and the position closed with an error status Buy Removed From Exchange Because TTL.

Even if you don't send this value and is disabled in the user's settings, any position that hasn't been filled after 60 days, will be closed.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"buyTTL":"YOURTIME",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"side":"long/short",
"leverage":"123",
"buyTTL":"YOURTIME",
"positionSize":"100",
"signalId":"YOURSIGNALID"}


exitByTTLAt

Signals Type: entry

Set the exit order by TTL at a specific time since the entry order is confirmed (Timestamp in milliseconds UTC). If "exitByTTLAt" and "sellByTTL" are configured, the lower one will trigger the exit.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"exitByTTLAt":"Timestamp in milliseconds",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"exitByTTLAt":"Timestamp in milliseconds",
"signalId":"YOURSIGNALID"}

"All the parameters related to closing by time will work only with "type":"entry" and not "type":"update"."

Here you will find more information about the Timestamp. Enter the exact day, hour, and minute, then click on "Human date to TImestamp" and select the "Timestamp in milliseconds".


cancelBuyAt

Signals Type: entry

Set the cancel time of the entry order at this exact time (Timestamp in milliseconds).

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"cancelBuyAt":"Timestamp in milliseconds",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"cancelBuyAt":"Timestamp in milliseconds",
"signalId":"YOURSIGNALID"}

"All the parameters related to closing by time will work only with "type":"entry" and not "type":"update"."

Here you will find more information about the Timestamp. Enter the exact day, hour, and minute, then click on "Human date to TImestamp" and select the "Timestamp in milliseconds".


forceExitByTTL

Signals Type: entry

It doesn’t matter if a trailing stop or take profit is running; the position will exit at this time if "exitByTTLAt" or "sellByTTL" are configured and this parameter is "true".

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"takeProfitPercentage1":"10",
"takeProfitAmountPercentage1":"50",
"takeProfitPercentage2":"20",
"takeProfitAmountPercentage2":"50",
"stopLossPercentage":"-3",
"exitByTTLAt":"Timestamp in milliseconds",
"forceExitByTTL":"true",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"takeProfitPercentage1":"10",
"takeProfitAmountPercentage1":"50",
"takeProfitPercentage2":"20",
"takeProfitAmountPercentage2":"50",
"stopLossPercentage":"3",
"exitByTTLAt":"Timestamp in milliseconds",
"forceExitByTTL":"true",
"signalId":"YOURSIGNALID"}

"All the parameters related to closing by time will work only with "type":"entry" and not "type":"update"."

Here you will find more information about the Timestamp. Enter the exact day, hour, and minute, then click on "Human date to TImestamp" and select the "Timestamp in milliseconds".


hedgeMode

Signals Type: entry

It will verify the direction of the open position for that pair and will allow us to open a position in the opposite direction. This means that if we have a position for BTCUSDT in Long, and we send a signal with "side": "short" and "hedgeMode": "true", it will allow us to place the other position with an opposite contract.

This parameter will not allow us to have two different positions in the same direction and for the same contract, in other words, if I have a BTCUSDT position in Long, I will not be able to open another position in the same direction, only in the opposite direction.

To use this parameter our account must have the Hedge Mode activated, and in case of having it, this parameter must always be included.

Important: For this parameter to work, you must have the Hedge Mode activated. You can follow these steps to do it by yourself.

Examples:

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"100",
"side":"long/short",
"leverage":"123",
"hedgeMode":"true"
"signalId":"YOURSIGNALID"}


ignoreOpenContractCheck

This parameter allows a bypass of all the checks, and allows us to open all the positions that we want for the same pair and in the directions that we want, as long as the "signalId" are different.

Both this parameter and "hedgeMode" do different things and if we want to have multiple different positions in both directions for the same pair, we must use both parameters. Since "hedgeMode" will allow us to have 1 position in Long and 1 position in Short simultaneously while adding "ignoreOpenContractCheck" will allow us to have multiple of each side.

Important: For this parameter to work in different directions ("long" and "short" at the same time), you must have the Hedge Mode activated. You can follow these steps to do it by yourself. It is not necessary to have it active if you will only trade positions in one direction.

Examples:

*Let us assume that we open a position:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"signalId":"TEST",
"amount":"40"}

Without closing the previous one, we can send this order with the signal
"ignoreOpenContractCheck":"true", it should open a second position with
ADA/USDT pair:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"signalId":"TEST2",
"amount":"60",
"ignoreOpenContractCheck":"true"}


MDXXXXX

A free field for sending metadata. Start the word with MD, followed by whatever name you want to give, for example, MDSource, and it will be stored as metaData->Source. You can add as many as you want.

Examples:

*Let us assume that we open a position:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"signalId":"TEST",
"MDSource":"ABC123",
"amount":"40"}


multiplyByLeverage

Signals Type: entry

By default all positionSizePercentage parameters now have the default calculation inverted, which means that now when you send a futures signal and put "positionSizePercentageFromQuoteTotal": "50", "leverage": "10", then you will be using an Invested of 50% of the account and a real invested of 5% of the account. This is the opposite of how it is currently calculated.

With this parameter, you can decide whether to take this default logic ("false") or use the previous logic and have the positionSizePercentage parameters indicate the percentage of real invested, for this the value must be "true".

If we do not add anything in the syntax, by default it will be taken as "false".

Examples:

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"market",
"pair":"adausdt",
"positionSize":"10",
"side":"long/short",
"leverage":"123",
"multiplyByLeverage":"true"
"signalId":"YOURSIGNALID"}


postOnly

Signals Type: entry

Example: "postOnly":"true"

The order will be sent to the exchange as post-only, which means that it will ensure a Maker rebate. If the order would be executed against any resting order, it will be canceled instead.

For this reason, the post-only option is only for Limit Orders, If you send a buy limit order with a price higher than the current market price, it would cancel as it would be filled automatically. not allowing a maker rebate. This option is really helpful to control the fees that you pay to the exchange.

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"postOnly":"true"
"positionSize":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"side":"long/short",
"leverage":"123",
"postOnly":"true"
"positionSize":"100",
"signalId":"YOURSIGNALID"}


sellTTL

Signals Type: entry

If the position hasn't been wholly sold after this amount of seconds elapsed, the position will be closed selling at the current market price. It doesn't matter if the trailing stop is activated or if several take-profit targets have been reached. The position will be closed at the current market price.

For example: To enable your sellTTL, you can use this example. And in order to disable it, you can update your sellTTL again with a higher value of time. (seconds)

Examples:

*Syntax for Spot:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"sellTTL":"YOURTIME",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

*Syntax for Futures:

{"key":"YOURKEY",
"type":"entry",
"exchange":"zignaly",
"orderType":"limit",
"pair":"adausdt",
"limitPrice":"yourprice"
"side":"long/short",
"leverage":"123",
"sellTTL":"YOURTIME",
"positionSize":"100",
"signalId":"YOURSIGNALID"}

Did this answer your question?