Signals

Guide for Service Providers - Below is an Index of all available types of signals, and specific parameters that can be used.
To understand how to send signals, please review the two options available and guide on how to develop this beforehand: 2 ways to send your Signals to Zignaly

Type of Signals

Parameters

Futures signals

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


Type of Signals

Entry

type=entry

Mandatory fields:

  • key

  • exchange

  • pair

  • signalId
    in order to identify this position to send another command to exit or update

  • Copytrader & Profit-Sharing Providers: you must include positionSizePercentage
    to entry signals

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.

This is the default signal, if you don't specify any type parameter, then entry is assumed.

Example explanation:
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 a long or a short position.

Example syntax spot:
{"key":"XXXXXXX","type":"entry","exchange":"binance","pair":"ethusdt","orderType":"market","positionSizePercentage":"10","signalId":"123"}

Example syntax futures:
{"key":"XXXXXXX","type":"entry","exchange":"binance","exchangeAccountType":"futures","orderType":"market","side":"long","pair":"ethusdt","positionSizePercentage":"10","signalId":"123"}

Sell / Exit

type=exit

Mandatory fields:

  • key

  • type

  • pair

  • exchange

  • signalId

Exit signals identify previously opened positions (with the signalId parameter) and close them sending an exit order to the exchange.

The order is for 100% of the remaining position amount, and the type of exit order that can be sent to the exchange is market or limit (based on orderType).

Example explanation:

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 spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","orderType":"market","type":"exit","signalId":"123"}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","orderType":"market","type":"exit","signalId":"123"}


Stop

type=stop

Mandatory fields:

  • key

  • type

  • exchange

Stop signals will disable your provider from accepting any new entry signal. All other signals are accepted (reEntry, exit...).

Example explanation:
Let's imagine that we need our provider to stop receiving signals since we detect that the market is very volatile, or some news that may affect us comes to light.

By sending this signal, we would stop opening new positions, but we would continue to manage the ones we already have. That is why we do not need to put the fields of pair, signalID, etc.

Example syntax spot:
{"key":"XXXXXXX","exchange":"zignaly","type":"stop"}

Example syntax futures:{"key":"XXXXXXX","exchange":"zignaly","exchangeAccountType":"futures","type":"stop"}

Start

type=start

Mandatory fields:

  • key

  • type

  • exchange

Start signals will resume accepting signals for a previously stopped provider.

Example explanation:

It is the case totally opposite to the previous one, the market returns to normal and we want to receive signals again. So we apply the same signal by changing the "Type" from "stop" to "start".

Example syntax spot:{"key":"XXXXXXX","exchange":"zignaly","type":"start"}

Example syntax futures:{"key":"XXXXXXX","exchange":"zignaly","exchangeAccountType":"futures","type":"start"}

DisableMarket

type=disableMarket

Mandatory fields:

  • key

  • type

  • exchange

  • market

DisableMarket signals will make your provider not accept any new buy signal for the given market.

All other signals are accepted (reBuy, sell). It works like the stop signals, but for a specific market.

Example explanation:

This allows us to do exactly the same as the stop parameter, with the only difference that it allows us to focus on a single pair and not on the entire operation of our provider. In this case, it is essential to place the pair we want to stop, but remember that we will continue to receive signals for our DCAs or for exits.

Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","type":"disableMarket”}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","type":"disableMarket”}

EnableMarket

type=enableMarket

Mandatory fields:

  • key

  • type

  • exchange

  • market

EnableMarket signals will resume accepting signals for a previously disabled provider in the given market.

Example explanation:

As with the "stop" and "start" parameters, it occurs with "disableMarket" and "enableMarket". It allows us to return to normal once we consider it appropriate.

Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","type":"enableMarket”}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","type":"enableMarket”}

PanicSell

type=panicSell

Mandatory fields:

  • key

  • type

  • exchange

PanicSell signals are used to sell everything at the current market price. You can filter by quote or base if you want to delimit it.

Example explanation:

Suppose we decide to close all our positions, either because of some news that we have seen, or because our operations have been compromised. In that case, we send this signal, it is not necessary to specify "pair" or "signalID", since we will close all our open trades.

Example syntax spot:{"key":"XXXXXXX","exchange":"binance","type":"panicSell”}

Example syntax futures:{"key":"XXXXXXX","exchange":"binance","exchangeAccountType":"futures","type":"panicSell”}


Update

type=update

Mandatory fields:

  • key

  • type

  • exchange

  • pair

  • signalId

Example explanation:

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.

Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","type":"update","stopLossPercentage":"-4","signalId":"123"}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","type":"update","stopLossPercentage":"-4","signalId":"123"}

The parameters that can be updated are:

  • buyTTL (Only for positions where the buy order isn't filled yet).

  • sellTTL

  • 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

  • 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).

  • positionSizePercentage: For increasing the positionsize by market order. (Not for Signal Provider)

  • 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

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

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

Example "update" with "positionSizePercentage":
The "positionSizePercentage" you set must be the amount you want to buy back, this means that if the current size of your position is 2% of the allocated, and you send an update signal with "positionSizePercentage": "3" this will make a buyback of 3% bringing the total size of the position to 5%.

{"key": "XXXXXXX", "pair": "ethusdt", "exchange": "zignaly", "exchangeAccountType": "futures", "type": "update", "positionSizePercentage": "3", "signalId": "123"}


cancelEntry

type=cancelEntry

Mandatory fields:

  • key

  • signalId

  • pair

  • exchange

  • type

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 explanation:

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.

Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","type":"cancelEntry","signalId":"123"}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","type":"cancelEntry ","signalId":"123"}

reverse

type=reverse
futures exchange

Mandatory fields:

  • key

  • exchange

  • exchangeAccountType

  • 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":"short" and "entrySide":"long", for this example.

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","type":"reverse","exchange":"zignaly","exchangeAccountType":"futures","exitSide":"short","entrySide":"long","exitOrderType":"market","entryOrderType":"market","entryLeverage":"5","takeProfitPercentage1":"4","takeProfitAmountPercentage1":"100","positionSizePercentage":"10","entrySignalId":"122","signalId":"123"}


Parameters

This is the complete list of parameters that can be used with your signals:

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.


buyTTL

Signals Type: entry, update
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.

For Signal Providers: If any is provided, the one from the user's settings will be used. If the order was partially filled, the rest of the order would be canceled, and the position will remain with the partially filled amount.

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.


DCAAmountPercentage1

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


DCATargetPercentage1

Signals Type: entry, update
You can send as many targets as you want, increase 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.

Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","type":"entry","exchange":"binance","orderType":"market","leverage":"5","takeProfitPercentage1":"5","takeProfitAmountPercentage1":"100","DCATargetPercentage1":"-3","DCAAmountPercentage1":"100",”DCATargetPercentage2":"-5","DCAAmountPercentage2":"100","positionSizePercentage":"10","signalId":"123"}

Example syntax futures:{"key":"XXXXXXX","pair":"ethusdt","type":"entry","exchange":"binance","exchangeAccountType":"futures","side":"short","orderType":"market","leverage":"5","takeProfitPercentage1":"-5","takeProfitAmountPercentage1":"100","DCATargetPercentage1":"3","DCAAmountPercentage1":"100",”DCATargetPercentage2":"5","DCAAmountPercentage2":"100","positionSizePercentage":"10","signalId":"123"}

DCATargetPrice1

Signals Type: entry, update

You can send as many targets as you want, increase 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 percentage and will get it from this price value and the average entry price value.


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.

Example syntax spot:{"key":"XXXXXXX","type":"entry","pair":"ethusdt","exchange":"zignaly","orderType":"market","takeProfitPercentage1":"5","DCAPriority":"price","DCAAmountPercentage1":"100","DCATargetPrice1":"585","DCAAmountPercentage2":"100","DCATargetPrice2":"555","positionSizePercentage":"10","signalId":"123"}

Example syntax futures:{"key":"XXXXXXX","type":"entry","pair":"ethusdt","exchange":"zignaly","exchangeAccountType":"futures","side":"short","orderType":"market","leverage":"5","takeProfitPercentage1":"-5","DCAPriority":"price","DCAAmountPercentage1":"100","DCATargetPrice1":"585","DCAAmountPercentage2":"100","DCATargetPrice2":"555","positionSizePercentage":"10","signalId":"123"}

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 (with the blue color).

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.


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.


limitPrice

Signals Type: entry, exit, reEntry

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


Market

Signals Type: entry, stop, start, disableMarket, enableMarket

You also can use pair. It specifies for which market the signal is.


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.


orderType

Signals Type: entry, exit

For buy signals, you can choose between limit, market, or stop-limit (or 'multi' for futures signals) Default is limit. 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. To accept market buy orders, the user has to check the option: Allow buy market order (your price deviation won't have an effect)

Example syntax spot:
Market order
{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","orderType":"market","type":"entry","positionSizePercentage":"10","signalId":"123"}
Limit order:
Example syntax spot:{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","orderType":"limit","limitPrice":"xxx","positionSizePercentage":"10","type":"entry","signalId":"123"}
Stop-limit order:
{"key":"XXXXXXX","pair":"ethusdt","exchange":"zignaly","orderType":"stop-limit","limitPrice":"xxxx","buyStopPrice":"xxxx","type":"positionSizePercentage":"10","entry","signalId":"123"}

For sell signals, 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:{"key":"XXXXXXX","pair":"ethusdt","type":"entry","exchange":"zignaly","exchangeAccountType":"futures","orderType":"multi","orderType_long":"limit","limitPrice_long":"xxx","side":"long","stopLossPercentage":"3","orderType_short":"limit","limitPrice_short":"xxx","takeProfitPercentage1":"10","takeProfitAmountPercentage1":"50","takeProfitPercentage2":"20","takeProfitAmountPercentage2":"50","DCATargetPercentage1":"5","DCAAmountPercentage1":"100","DCATargetPercentage2":"7","DCAAmountPercentage2":"100","leverage":"3","positionSizePercentage":"10","signalId":"123"}

panicBase

Signals Type: panicSell

Parameter exclusive from panicSell signals, if present, it will panic sell only positions with this coin as the base. Take into consideration that the symbols (pair, market), in Binance follow this name convention: BASEQUOTE, example: QTUMBTC (QTUM would be the base)


panicQuote

Signals Type: panicSell

Parameter exclusive from panicSell signals, if present, it will panic sell only positions with this coin as the quote. Take into consideration that the symbols (pair, market), in Binance follow this name convention: BASEQUOTE, example: QTUMBTC (BTC would be the quote)


positionSizePercentage

Signals Type: entry

The position size of your investment in percentage.

Profit-Sharing services: The percentage is from the configured value in the allocated balance setting. It has to be a value between 1 and 100. As always if the resulting position size is below the minimum allowed by the exchange, it will fail.

The "positionSizePercentage" you set must be the amount you want to increase it by.

This means that if the current size of your position is 2%, and you send an update signal with "positionSizePercentage": "3", this will make a buyback of

3% bringing the total size of the position to 5%.

{"key": "XXXXXXX", "pair": "ethusdt", "exchange": "zignaly", "exchangeAccountType": "futures", "type": "update", "positionSizePercentage": "3", "signalId": "123"}


positionSizeQuote

Signals Type: entry

The coin for the position size value. If none is used, the quote coin from your pair will be used
(from XRPBTC, it would be BTC)


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 for any reason 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 Order, 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.

example syntax:{"key":"XXXXXXX","type":"entry","exchange":"binance","pair":"ethusdt","postOnly":"true","orderType":"limit","limitPrice":"xxxx","positionSizePercentage":"10","signalId":"123"}

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).


reduceOrderType

Signals Type: update

Options for orderType: limit (default), market


reduceTargetPercentage

Signals Type: update

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


reduceAvailablePercentage

Signals Type: update
example: reduceAvailablePercentage=xx
This is the amount that will be reduced from the available amount inside the position.

Example syntax

For Spot with Limit order

{"key": "XXXXXXX", "pair": "xrpusdt", "exchange": "zignaly", "exchangeAccountType": "spot", "type": "update","reduceOrderType":"limit","reduceTargetpercentage":"3","reduceAvailablePercentage":"50","signalId": "123"}

For Futures with Market order

{"key": "XXXXXXX", "pair": "xrpusdt", "exchange": "zignaly", "exchangeAccountType": "futures", "type": "update","reduceOrderType":"market","reduceAvailablePercentage":"50","signalId": "123"}

Troubleshooting with failed Reduce orders

reduce_orders.png

If your order shows a Pending status like the screenshot, it's possible that it failed to place an order. The reasons to consider can be:

  • 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, if you meet the status above, 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.


removeAllReduceOrders

Signals Type: update
example: removeAllReduceOrders=true
Remove all current pending reduce orders.


removeReduceOrder

Signals Type: update
example: removeReduceOrder=x
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


removeTakeProfits

Signals Type: update
example: removeTakeProfits=true
removes the current pending Take Profit targets


risk

Signals Type: entry
For Signal Providers: If sent, and the user has specified any risk value, only values below the user's value will open a position for them. The values go from 1 to 5, being 5 the riskier.


sellTTL

Signals Type: update

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)

{"key":"xxxx", "pair":"btcusdt","exchange":"zignaly","type":"update","sellTTL":"999999999","signalId":"123"}

signalId

Signals Type: entry, exit, reEntry, 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.


stopLossPercentage

Signals Type: entry, update
The stop-loss price will be calculated from the buying price minus this percentage. You can use stopLossPrice directly.

Example syntax Futures:{"key":"XXXXXXX","type":"entry","exchange":"zignaly","exchangeAccountType":"futures","side":"long","pair":"ethusdt","orderType":"market","positionSizePercentage":"10","stopLossPercentage":"-3","signalId":"123"}


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.

Example syntax futures:

{"key":"XXXXXXX","type":"entry","exchange":"zignaly","exchangeAccountType":"futures","side":"long","pair":"ethusdt","positionSizePercentage":"10","stopLossPriority":"price","stopLossPrice":"4000","signalId":"123"}

stopLossPriority

Signals Type: entry
percentage|price (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

example syntax:{"key":"xxxx","type":"entry","pair":"ethusdt","exchange":"zignaly","orderType":"market","stopLossPriority":"price","stopLossPrice":"592","positionSizePercentage":"10","signalId":"a001"}


stopLossFollowsTakeProfit

Signals Type: entry, update
examples: stopLossFollowsTakeProfit=true
{"key":"xxxx","stopLossFollowsTakeProfit":true,"type":"entry"...}


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.


stopLossToBreakEven

Signals Type: entry, update
examples: stopLossToBreakEven=true
{"key":"xxxx","stopLossToBreakEven":"true","type":"entry"...}


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)


stopLossForce

Signals Type: entry, update
examples: stopLossForce=true
{"key":"xxxx","stopLossForce":"true","type":"entry"...}

What this function does is place the SL from the beginning and ignore all the subsequent DCAs, then close the position.

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

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


successRate

Signals Type: entry
For Signal Providers: If present and the user has specified the minimum success rate allowed, only if the value is above the user's setting, a position will be opened by that user. It’s a percentual value, so it goes from 0 to 100.


takeProfitAmountPercentage1

Signals Type: entry, update
You can send as many targets as you want, increase 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.

Example complete syntax for Take Profit in futures:

{"key":"XXXXXXX","type":"entry","exchange":"zignaly","exchangeAccountType":"futures","side":"long","pair":"ethusdt","positionSizePercentage":"10","takeProfitPercentage1":"3","takeProfitAmountPercentage1":"50","takeProfitPercentage2":"5","takeProfitAmountPercentage2":"50","signalId":"123"}

takeProfitPercentage1

Signals Type: entry, update
You can send as many targets as you want, increase 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.


takeProfitPrice1

Signals Type: entry, update
You can send as many targets as you want, increase 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 percentage and will get it from this price value, and the suggested.


takeProfitPriority

Signals Type: entry
percentage|price (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.

Example syntax:{"key":"xxxx","type":"entry","pair":"btcusdt","exchange":"zignaly","orderType":"market","takeProfitPriority":"price","takeProfitAmountPercentage1":"25","takeProfitPrice1":"25000","takeProfitAmountPercentage2":"75","takeProfitPrice2":"28000","positionSizePercentage":"10","signalId":"001"}

term

Signals Type: entry
For Signal Providers: short, short/mid, mid or long. If the term parameter is present, the position will be opened if the term is selected in the provider's options:


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'.


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.


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.


trailingStopTriggerPriority

Signals Type: entry
percentage|price (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,

Example syntax:{"key":"xxxx","type":"entry","pair":"ethusdt","exchange":"zignaly","orderType":"market","trailingStopTriggerPriority":"price","trailingStopDistancePercentage":"3","trailingStopTriggerPrice":"610","positionSizePercentage":"10","signalId":"001"}

type

Signals Type: All of them
The type of signal that you are sending, the options are: entry, sell, reEntry, stop, start, disableMarket, enableMarket, and panicSell. Sell, reEntry, and panicSell

For Signal Providers: signals have to be accepted by the users subscribed to your provider in order to receive them.


Futures Signals

exchangeAccountType


Signals Type: All of them
This is required to specify futures

side

Signals Type: entry,exit
You must use this field to identify a Long or Short position

leverage

Signals Type: entry
Enter your leverage amount, if not using enter 1

Examples for an ENTRY, LONG position:

Example syntax:{"key":"YOURSECRETKEY","pair":"BTCUSDT","type":"entry","exchange":"binance","exchangeAccountType":"futures","side":"long","orderType":"market","leverage":"25","stopLosPercentage":"-5","takeProfitPercentage1":"10","takeProfitAmountPercentage1":"100","positionSizePercentage":"10","signalId":"xxxxx01"}

Examples for an Exit position:

Example syntax:{"key":"YOURSECRETKEY","pair":"BTCUSDT","type":"exit","exchange":"binance","exchangeAccountType":"futures","orderType":"market","signalId":"xxxxx01"}
Did this answer your question?