Signals
Guide for Service Providers
Type of Signals
Entry Exit ReEntry Stop Start |
DisableMarket EnableMarket PanicSell Update cancelEntry reverse |
Parameters
Futures signals
exchangeAccountType side leverage |
Syntax examples
key=xxxxxxxxxxxxxxxxxxxx type=entry orderType=market stopLossPercentage=-5 takeProfitPercentage1=10 takeProfitAmountPercentage1=100 signalId=xxxxx01 |
{"key":"YOURSECRETKEY","pair":"BTCUSDT","type":"entry","exchange":"binance","orderType":"market","stopLossPercentage":"-5","takeProfitPercentage1":"10","takeProfitAmountPercentage1":"100","signalId":"xxxxx01"}
Type of Signals
Entry
type=entry
Mandatory fields:
- key
- exchange
- pair
- signalId in order to identify this position if you wish to send another command to exit or update
- Copytrader 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.
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 the 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).
For Signal Providers:To accept exit signals, users connected to this provider need to check the Accept Exit Signals option:
ReEntry
*for Signal Providers, this signal type does not work for Copytraders
type=reEntry
Mandatory fields:
- key
- type
- pair
- exchange
- signalId
ReEntry (or DCA) signals identify previously opened positions (with the signalId parameter) and enlarge their positions' size.
The new amount is based on the user configuration. And the option of Accept DCA/ReBuys Signals option needs to be checked by the user in the provider's options:
The new buy order is sent to the exchange and will be a buy limit order; if no price is specified in the signal, the current price will be used as the limit price.
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...).
Start
type=start
Mandatory fields:
- key
- type
- exchange
Start signals will resume accepting signals for a previously stopped provider.
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.
EnableMarket
type=enableMarket
Mandatory fields:
- key
- type
- exchange
- market
EnableMarket signals will resume accepting signals for a previously disabled provider in the given market.
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 a little bit.
For Signal Providers: To accept panicSell signals, the user has to have the following option checked in the provider's option Accept panic sell signals from this provider
Update
type=update
Mandatory fields:
- key
- type
- exchange
- pair
- signalId
For Signal Providers: Update signals allow you to update open positions if the user accept update's signals:
Accept Updates from Signals option
The parameters that can be updated are:
-
buyTTL (Only for positions where the buy order isn't filled yet).
-
sellByTTL
-
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 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).
-
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)
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.
reverse
type=reverse
Mandatory fields:
- key
- 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 for the exit signal:
- exit***
- entry***
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.
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 this 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.
For Signal Providers: To accept DCA settings, the user has to have the Accept DCA Parameters From the Buy Signal? Checked in the provider's options.
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.
For Signal Providers: To accept DCA settings, the user has to have the Accept DCA Parameters From the Entry Signal? Checked in the provider's options.
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.
For Signal Providers:To accept DCA settings, the user has to have the Accept DCA Parameters From the Buy Signal? Checked in the providers options.
DCAPriority
Signals Type: entry
percentage|price (default percentage)
*For Copytraders (this parameter is not available for Signal Providers)
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.
Here is a syntax example:
{
"key":"xxxx",
"type":"entry",
"pair":"ethusdt",
"exchange":"zignaly",
"orderType":"market",
"DCAPriority":"price",
"DCAAmountPercentage1":"100",
"DCATargetPrice1":"585",
"DCAAmountPercentage2":"100",
"DCATargetPrice2":"555",
"positionSizePercentage":"10",
"signalId":"001"
}
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.
For Signal Providers: To take in consideration this parameter, the user needs to check the provider's option: Allow the limit price parameter from the signal
Market
Signals Type: entry, stop, start, disableMarket, enableMarket
You also can use pair. It specifies for which market the signal is.
MDXXXXXX
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)
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:
{ |
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.
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)
positionSize
Signals Type: entry
The position size of your investment.
For Signal Providers: If none is provided, the one from your general settings will be used.
positionSizePercentage
Signals Type: entry
The position size of your investment in percentage.
For Copytraders: 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.
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)
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).
For Signal Providers:This parameter is conditioned by the Buy/Sell Price Deviation setting, which is configured by the user and can be positive or negative. Whatever setting the user has will be applied to the price, resulting in the limit price. If you don't want the price to be conditioned by the user's setting, then you can use the limitPrice parameter.
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.
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: entry, update
If the position hasn't been wholly sold after this amount of seconds elapsed, the position will be closed selling
at current market price. It doesn't matter if the trailing stop is activated or several take profit targets have been reached. The position will be closed at the current market price.
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.
For Signal Providers: a subscriber to this provider will need to check the option: Allow reusing the same signalId if there isn't any open position using it?
Also, if you need to re-use the IDs, you won't be able to have more than one position per market concurrently.
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.
stopLossPercentage
Signals Type: entry, update
The stop-loss price will be calculated from the buying price minus this percentage. You can use stopLossPrice directly.
For Signal Providers: If any of them aren't sent, the one from the general settings will be used.
stopLossPrice
Signals Type: entry, update
The stop-loss price 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.
stopLossPriority
Signals Type: entry
percentage|price (default percentage)
*For Copytraders (this parameter is not available for Signal Providers)
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
Here is a syntax example:
{
"key":"xxxx",
"type":"entry",
"pair":"ethusdt",
"exchange":"zignaly",
"orderType":"market",
"stopLossPriorty":"price",
"stopLossPrice":"592",
"positionSizePercentage":"10",
"signalId":"a001"
}
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)
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.
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.
For Signal Providers: To accept take-profits from the signal, the user has to check the following option from the provider's options: Accept Take Profits Values From the Entry Signal?
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 .
For Signal Providers: To accept take-profits from the signal, the user has to check the following option from the provider's options: Accept Take Profits Values From the Entry Signal?
takeProfitPriority
Signals Type: entry
percentage|price (default percentage)
*For Copytraders (this parameter is not available for Signal Providers)
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 takeProfits targets.
Here is a syntax example:
{
"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.
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.
For Signal Providers: If you don't send it, the one from the user's settings for this provider will be used.
trailingStopTriggerPriority
Signals Type: entry
percentage|price (default percentage)
*For Copytraders (this parameter is not available for Signal Providers)
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,
Here is a syntax example:
{
"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
For Signal Providers: You can send the leverage, however you need to accept the option of getting the leverage from the signal, in the provider's options:
Examples for an ENTRY, LONG position:
key=xxxxxxxxxxxxxxxxxxxx type=entry exchangeAccountType=futures side=long orderType=market leverage=25 stopLossPercentage=-5 takeProfitPercentage1=10 takeProfitAmountPercentage1=100 signalId=xxxxx01 |
{"key":"YOURSECRETKEY","pair":"BTCUSDT","type":"entry","exchange":"binance","exchangeAccountType":"futures","side":"long","orderType":"market","leverage":"25","stopLossPercentage":"-5","takeProfitPercentage1":"10","takeProfitAmountPercentage1":"100","signalId":"xxxxx01"}
Examples for an Exit position:
key=xxxxxxxxxxxxxxxxxxxx exchange=binance exchangeAccountType=futures orderType=market signalId=xxxxx01 |
{"key":"YOURSECRETKEY","pair":"BTCUSDT","type":"exit","exchange":"binance","exchangeAccountType":"futures","orderType":"market","signalId":"xxxxx01"}
Notice how the type has changed. We now use entry instead of buy, and also, the values from the parameters need the appropriate symbol.
- Here is a good resource recommended by the community to check
your json format: https://jsonformatter.curiousconcept.com/
Comments
0 comments
Please sign in to leave a comment.