Webhook-signaalreferentie: Open, Increase, Reduce, Close en Reverse
Nieuw met webhooks? Begin met Hoe webhook-signalen werken.
Webhook-signalen zijn JSON-payloads die naar een webhook-type signal bot worden gestuurd. Ze kunnen verstuurd worden vanuit een TradingView-alert of vanuit een Altrady-alert, en elk draagt een action die Altrady vertelt wat er met een positie moet gebeuren. (Om de bot zelf te starten of stoppen, zie Webhook-signalen: een signal bot starten of stoppen.)
Om de JSON voor een basissignaal te genereren, gebruik je het tabblad Webhook Builder in de signal bot, naast het tabblad Settings. Voor het opzetten van de alert-naar-Altrady-verbinding zelf, zie Hoe verbind je TradingView-alerts met Altrady via webhooks.
Bouw een signaal met de Webhook Builder
De snelste manier om een signaal aan te maken is het tabblad Webhook Builder in je signal bot, naast Settings. Kies de markt en de Webhook Action (Open, Increase, Reduce, Close of Reverse), kies de Side en het ordertype, en stel eventuele optionele waarden in: het paneel Preview bouwt de JSON voor je en toont de Webhook URL waar je hem naartoe stuurt (https://api.altrady.com/v2/signal_bot_positions). Gebruik Copy URL en Copy Payload om beide te kopiëren.
🔍 Click the image to see a larger version
Om het signaal vanuit TradingView te versturen, open je het tabblad Notifications van de alert, schakel je Webhook URL in, en plak je de Webhook URL van de bot in het veld:
🔍 Click the image to see a larger version
Voor de volledige stap-voor-stap uitleg over het aanmaken van de TradingView-alert, zie Hoe verbind je TradingView-alerts met Altrady via webhooks.
De rest van dit artikel is de volledige veldreferentie: voor het handmatig bouwen of aanpassen van een signaal, of om te begrijpen wat de Builder heeft gegenereerd.
Acties in één oogopslag
Positieacties:
- open — opent een nieuwe positie (long of short).
- increase — vergroot de omvang van een bestaande positie.
- reduce — verkleint de omvang van een bestaande positie.
- close — sluit een gespecificeerde positie, of alle posities voor de gespecificeerde markt en side.
- reverse (alleen futures) — sluit de huidige positie en opent een nieuwe in de tegenovergestelde richting.
Bot-acties: een webhook-signaal kan ook de bot zelf starten of stoppen (start_bot, stop_bot, start_and_open, stop_and_close) — zie Webhook-signalen: een signal bot starten of stoppen.
Instellingen die elk signaal nodig heeft
Elk webhook-signaal moet bevatten:
-
api_keyenapi_secret— deze moeten overeenkomen met de Altrady API key en secret in de bot-instellingen. -
action— de actie die uitgevoerd moet worden. Wordt dit weggelaten, dan is de standaardopen. - de markt, gespecificeerd op een van twee manieren (nooit beide):
-
exchangeplussymbol, waarbijsymbolhet formatEXCHANGE_QUOTE_BASEgebruikt — bijvoorbeeldBINA_USDT_BTCis BTC genoteerd in USDT op Binance (BINA). Voor het pair BTC/USDT is BTC de base-valuta en USDT de quote-valuta. Zie geldige waarden voor exchange en symbol voor de volledige lijst met exchange-codes. -
tv_exchangeplustv_ticker, met de TradingView-variabelen{{exchange}}en{{ticker}}, die TradingView invult wanneer de alert afgaat. Dit is handig wanneer één strategie signalen voor meer dan één pair verstuurt.
-
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"action": "open",
"exchange": "BYBI",
"symbol": "BYBI_USDT_SOL"
}
Om de markt dynamisch mee te geven met TradingView-variabelen in plaats van een vaste exchange en symbol, gebruik je:
"tv_exchange": "{{exchange}}",
"tv_ticker": "{{ticker}}",
Een minimaal signaal met alleen de instellingen die voor alle signaaltypes vereist zijn, ziet er zo uit:
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"action": "close",
"exchange": "BYBI",
"symbol": "BYBI_USDT_SOL"
}
Een opmerking over side
side is long of short:
- Gebruik long voor een positie die opent met een Buy-entry en sluit met Sell-exit(s).
- Gebruik short voor een positie die opent met een Sell-entry en sluit met Buy-exit(s). Short-posities kunnen worden geopend op futures-exchanges met de quote-valuta, en op spot-exchanges als de coins in de base-valuta al in bezit zijn en beschikbaar zijn om te verkopen.
Of side verplicht of optioneel is, hangt af van de actie:
- Bij open en reverse is
sideverplicht. Bij een reverse bepaalt het de kant van de nieuwe positie die geopend wordt. - Bij increase, reduce en close is
sideoptioneel en standaardlong. Hier verwijst het naar de kant van de bestaande positie waarop actie wordt ondernomen. - Één signaal werkt op long óf short posities, nooit op beide.
Een positie openen
Een open-signaal opent een nieuwe positie. Om ontvangen en uitgevoerd te worden: moeten de API key en secret overeenkomen met de bot-instellingen, moet het signaal geldige JSON zijn, en moet het voldoen aan alle filtercriteria in de signal bot-instellingen.
Minimaal vereiste instellingen voor een open-signaal
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "BYBI",
"symbol": "BYBI_USDT_SOL",
"action": "open",
"side": "long"
}
Buiten de instellingen die voor alle signaaltypes vereist zijn, is de enige extra vereiste instelling voor een open-signaal side.
Voorbeeld van een open-signaal met alle vereiste en optionele instellingen
{
"action": "open",
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "BYBI",
"symbol": "BYBI_USDT_SOL",
"side": "long",
"test": true,
"quote_amount": 100,
"order_type": "limit",
"signal_price": 22.5,
"signal_id": "unique_signal_id_123",
"leverage": 5,
"adjust_fee": true,
"keep_entries_open": true,
"dca_orders": [
{
"price_percentage": 5,
"quantity_percentage": 100
},
{
"price_percentage": 10,
"quantity_percentage": 200
}
],
"take_profit": [
{
"price_percentage": 3,
"position_percentage": 30
},
{
"price_percentage": 5,
"position_percentage": 40
},
{
"price_percentage": 15,
"position_percentage": 30,
"trailing_distance": 1.5
}
],
"stop_loss": {
"order_type": "STOP_LOSS_LIMIT",
"stop_percentage": 7,
"limit_percentage": 5,
"cool_down_amount": 10,
"cool_down_time_frame": "minute",
"cool_down_type": "TIME",
"cool_down_cancel_price": 20.5,
"protection_type": "PRICE",
"trailing_percentage": 5,
"trailing_distance": 1
},
"entry_expiration": {
"time": 60,
"price": 25
},
"entry_condition": {
"time": 5,
"price": 22,
"operator": "OR"
}
}
Optionele instellingen voor het open- (en reverse-)signaal
Het reverse-signaal accepteert precies dezelfde optionele instellingen als het open-signaal. De onderstaande tabellen groeperen ze per onderwerp.
Orderparameters
| Instelling | Waarden | Toelichting |
|---|---|---|
| test |
true of false
|
Indien true, worden pending orders aangemaakt in plaats van live orders. Let op: "test": true werkt UITSLUITEND met een open-signaal. Bij andere signaaltypes wordt het genegeerd en wordt een live order verstuurd. |
| action | open |
Standaard open. |
| order_type |
market of limit
|
Standaard limit als weggelaten. |
| signal_price | numerieke waarde | De TradingView-variabele "{{close}}" kan gebruikt worden om de slotkoers van de candle in te vullen. Als signal_price wordt weggelaten, gebruikt Altrady de huidige prijs. |
| quote_amount OF base_amount | numerieke waarde, optioneel. Indien gebruikt, overschrijft dit de bot-instellingen voor de entry-grootte. | Een vast bedrag in quote- of base-valuta, geen percentage van de account. Zijn beide opgenomen, dan treedt een fout op. Voor BTC/USDT is BTC de base-valuta en USDT de quote-valuta. |
| signal_id | Indien opgenomen, moet dit een unieke tekenreeks zijn per signaal. | Meestal alleen gebruikt met Pine Script. Neem het op in het open-signaal als het later nodig is om de positie te targeten. Gebruik een variabele waarde die het uniek houdt, zoals de TV-variabele {{time}}. Als signal_id wordt weggelaten, genereert Altrady er een. |
| leverage | numerieke waarde | Alleen futures. Indien opgenomen, overschrijft dit de leverage in de signal bot-instellingen. |
| margin_type |
ISOLATED of CROSSED
|
Alleen futures. Bepaalt de margin-modus van de positie. |
| adjust_fee |
true of false
|
Standaard true. Verkleint de ordergrootte om rekening te houden met exchange-fees. Aanbevolen wanneer de entry- of positiegrootte 100% van het beschikbare saldo gebruikt, wat anders kan mislukken met een insufficient-balance-fout nadat de exchange fees heeft ingehouden. false maximaliseert de initiële ordergrootte, omdat fees op dat moment niet worden afgetrokken, gebruik dit dus als je een initiële ordergrootte wilt die dicht bij het toegestane minimum ligt. |
| keep_entries_open |
true of false
|
Bij false worden alle DCA-orders geannuleerd zodra de eerste TP (deels) gevuld is. Bij true blijven de DCA-orders open tot de positie is gesloten. Standaard true. |
Market orders en de valuta van de grootte. Wanneer order_type market is, hangt het van de exchange af of quote_amount, base_amount, of beide worden geaccepteerd; gebruik je er een die niet is toegestaan, dan krijg je een foutmelding als “Market order doesn’t support quote currency” (of ”… base currency”). Dit is hetzelfde per-exchange-gedrag als in de Trading widget — zie Een market order plaatsen om te controleren wat een gegeven exchange toestaat.
DCA-orders
Het dca_orders-blok kan tot 9 keer herhaald worden, voor een totaal van 10 entry-orders. Om de DCA-waarden uit het signaal te gebruiken, selecteer je de optie “DCA from Signal” in de signal bot-instellingen.
| Instelling | Waarden | Toelichting |
|---|---|---|
| price_percentage | numerieke waarde. Specificeer price_percentage of price. |
Het percentage onder de gemiddelde entryprijs waarop de order geplaatst wordt. |
| price | numerieke waarde. Specificeer price_percentage of price. |
De vaste prijs waarop de DCA-entryorder geplaatst wordt. |
| quantity_percentage | numerieke waarde | Het percentage van de initiële entryorder voor deze DCA (bijv. 200 = 200%, oftewel 2x de grootte van de entryorder). |
Meerdere DCA-orders voeg je toe door het blok te herhalen:
{
"dca_orders": [
{
"price_percentage": 5,
"quantity_percentage": 100
},
{
"price_percentage": 10,
"quantity_percentage": 200
},
{
"price_percentage": 20,
"quantity_percentage": 400
}
]
}
Take profit
Het take_profit-blok kan tot 10 keer herhaald worden. Om de TP-waarden uit het signaal te gebruiken, moet de optie “Take Profit from Signal” geselecteerd zijn in de signal bot-instellingen.
| Instelling | Waarden | Toelichting |
|---|---|---|
| price_percentage | numerieke waarde. Specificeer price_percentage of price. |
Het percentage boven/onder (long/short) de gemiddelde entryprijs waarop de TP-order geplaatst wordt. Of price of price_percentage moet gebruikt worden voor alle TP-orders in een signaal; ze kunnen niet gecombineerd worden binnen één signaal. |
| price | numerieke waarde. Specificeer price_percentage of price. |
De werkelijke prijs waarop de order geplaatst wordt. Deze verandert niet, ook niet als de gemiddelde entryprijs wijzigt. |
| position_percentage | numerieke waarde | Het percentage van de positiegrootte voor deze order. |
| trailing_distance | numerieke waarde | Indien opgenomen, wordt de laatste TP-order een Trailing Take Profit. Deze waarde bepaalt de afstand achter de TP-prijs waarop de stopprijs volgt. Bij triggering sluit een market order de positie. TTP is alleen mogelijk op de laatste TP. |
Meerdere take profits voeg je toe door het blok te herhalen. De position_percentage-waarden van de TP’s moeten samen 100 zijn; is de som lager dan 100%, dan wordt het resterende bedrag opgenomen in de laatste TP.
{
"take_profit": [
{
"price_percentage": 2,
"position_percentage": 50
},
{
"price_percentage": 4,
"position_percentage": 30
},
{
"price_percentage": 6,
"position_percentage": 20
}
]
}
Om de laatste TP een Trailing Take Profit te maken, voeg je er trailing_distance aan toe:
{
"take_profit": [
{
"price_percentage": 2,
"position_percentage": 60
},
{
"price_percentage": 5,
"position_percentage": 40,
"trailing_distance": 1.5
}
]
}
Stop loss
Voeg het stop_loss-blok toe om een stop loss in te stellen in het signaal. Om de SL-waarden uit het signaal te gebruiken, selecteer je de optie “SL from Signal” in de signal bot-instellingen. Voor een volledige uitleg van de stop-loss- en protection-opties, zie Stop loss en protection modes.
| Instelling | Waarden | Toelichting |
|---|---|---|
| order_type |
STOP_LOSS_MARKET of STOP_LOSS_LIMIT
|
Optioneel. Standaard STOP_LOSS_MARKET als niet gespecificeerd. |
| stop_percentage OF stop_price | Verplicht als een stop_loss-blok is opgenomen. | Stop %: het percentage onder de signaalprijs waarop de SL geplaatst wordt. Eenmaal geplaatst, ligt de stopprijs vast en varieert deze niet met de gemiddelde entryprijs. OF Stop Price: geef een prijs op. |
| limit_percentage OF limit_price | Verplicht als order_type STOP_LOSS_LIMIT is. Genegeerd als order_type STOP_LOSS_MARKET is. |
Limit %: het percentage onder de signaalprijs waarop de limit order van de stop loss geplaatst wordt. Eenmaal geplaatst, ligt de limitprijs vast. OF Limit Price: geef een prijs op. Moet gebruikt worden samen met stop_percentage of stop_price wanneer order_type STOP_LOSS_LIMIT is. |
Stop-loss cooldown
Optioneel, binnen het stop_loss-blok.
| Instelling | Waarden | Toelichting |
|---|---|---|
| cool_down_type |
TIME of CANDLE_CLOSE
|
Bepaalt welke andere cooldown-instellingen opgenomen moeten worden. |
| TIME | Specificeer een cool_down_time_frame (day, hour, minute) en een cool_down_amount. |
bijv. "cool_down_type": "TIME", "cool_down_time_frame": "minute", "cool_down_amount": 5. |
| CANDLE_CLOSE | Specificeer cool_down_candle_resolution in minuten: 1, 2, 3, 5, 10, 15, 30, 60, 120, 240, 360, 720, 1440. Maximum is 1440 (1 dag). |
bijv. "cool_down_candle_resolution": "30". |
| Emergency Stop Loss | Optioneel bij cooldown. Geef een prijs of een percentage vanaf de entryprijs op. Net als de initiële SL ligt de ESL vast eenmaal geplaatst. |
"cool_down_cancel_price": 101.123 OF "cool_down_cancel_percentage": 25. |
Stop-loss protection
Optioneel, binnen het stop_loss-blok.
| Instelling | Waarden | Toelichting |
|---|---|---|
| protection_type |
PRICE, BREAK_EVEN, FOLLOW_TAKE_PROFIT
|
Het type trailing stop loss dat de positie beschermt. PRICE volgt de prijs. |
| trailing_price | Numeriek. De prijs waarop trailing begint. | Alleen gebruikt bij PRICE. Specificeer trailing_price of trailing_percentage. |
| trailing_percentage | Numeriek. Het percentage vanaf de entryprijs waarop trailing begint. | Alleen gebruikt bij PRICE. Specificeer trailing_price of trailing_percentage. |
| trailing_distance | Numeriek. Het percentage achter trailing_price of trailing_percentage dat de stopprijs volgt. |
Verplicht bij PRICE. |
Voorbeelden van stop loss:
Eenvoudige stop loss — SL 7,5% vanaf entry, zonder cooldown:
{
"stop_loss": {
"stop_percentage": 7.5
}
}
Stop loss (20% vanaf entry) met een 4-uurs candle-close-cooldown en Emergency Stop Loss (35% vanaf entry):
{
"stop_loss": {
"stop_percentage": 20,
"cool_down_type": "CANDLE_CLOSE",
"cool_down_candle_resolution": "240",
"cool_down_cancel_percentage": 35
}
}
Vaste-prijs SL op 2,79, met een 10-minuten timer-cooldown en Emergency Stop Loss (op 2,59 vaste prijs):
{
"stop_loss": {
"stop_price": 2.79,
"cool_down_amount": 10,
"cool_down_time_frame": "minute",
"cool_down_type": "TIME",
"cool_down_cancel_price": 2.59
}
}
Vaste-prijs SL op 0,00000100, met een 1-uurs timer-cooldown en protection (TSL volgt de prijs): de triggerprijs ligt 3% boven de entryprijs en de trailing stop staat 1% onder de triggerprijs voor een long-positie. Bij een short-positie ligt de triggerprijs automatisch onder de entryprijs, en de stopprijs boven de triggerprijs.
{
"stop_loss": {
"stop_price": 0.000001,
"cool_down_amount": 1,
"cool_down_time_frame": "hour",
"cool_down_type": "TIME",
"protection_type": "PRICE",
"trailing_percentage": 3,
"trailing_distance": 1
}
}
Entry-timing
Voeg entry_condition toe om een prijs- en/of tijdvoorwaarde in te stellen voordat de initiële orders worden geplaatst, en entry_expiration om de niet-gevulde positie te annuleren op een bepaald tijdstip of bepaalde prijs.
| Instelling | Waarden | Toelichting |
|---|---|---|
| entry_condition › time | Numeriek. Minuten die aan de huidige tijd worden toegevoegd voordat de positie opent. | Tot de positie opent, worden geen coins gereserveerd. |
| entry_condition › price | Numeriek. De prijs waarop de positie zou moeten openen. | |
| entry_condition › operator |
AND of OR
|
Als zowel time als price worden gebruikt in entry_condition, kies je of beide voorwaarden vervuld moeten zijn (AND) of slechts één (OR). |
| entry_expiration › time | Numeriek. Minuten die aan de huidige tijd worden toegevoegd voordat de positie verloopt. | Indien ingesteld, overschrijft dit de expiry-time-instelling in de signal bot-instellingen. |
| entry_expiration › price | Numeriek. De prijs waarop de niet-gevulde positie zou moeten verlopen. | Als zowel time als price gespecificeerd zijn, wordt de positie geannuleerd zodra één van beide voorwaarden vervuld is. |
DCA’s, TP’s en SL kunnen worden opgenomen in het entry-signaal (handig wanneer ze per signaal of markt variëren), ingesteld in de signal bot-instellingen (handig wanneer ze niet variëren), of handmatig aan posities worden toegevoegd nadat ze geopend zijn. Kies in de bot-instellingen voor Custom om de waarde in de bot te gebruiken, of Signal om de waarde uit het signaal te gebruiken.
Structuur van het open- (en reverse-)signaal
Open Signal
└── Base Parameters (required)
├── api_key: "YOUR_ALTRADY_API_KEY"
├── api_secret: "YOUR_ALTRADY_API_SECRET"
├── action: "open"
├── EITHER:
│ ├── exchange: "EXCHANGE_CODE"
│ └── symbol: "MARKET_CODE"
└── OR:
├── tv_exchange: "{{exchange}}"
└── tv_ticker: "{{ticker}}"
└── side: "long" │ "short"
│
├── Order Parameters (optional)
│ ├── test: true │ false
│ ├── order_type: "market" │ "limit"
│ ├── signal_price: number │ "{{close}}"
│ ├── signal_id: string
│ ├── leverage: number (futures only)
│ ├── margin_type: "ISOLATED" │ "CROSSED" (futures only)
│ ├── adjust_fee: true │ false
│ ├── keep_entries_open: true │ false
│ └── ONE OF:
│ ├── quote_amount: number
│ └── base_amount: number
│
├── Entry Condition (optional)
│ ├── time: number (minutes)
│ ├── price: number
│ └── operator: "AND" │ "OR"
│
├── Entry Expiration (optional)
│ ├── time: number (minutes)
│ └── price: number
│
├── Take Profit Settings (optional array)
│ └── [
│ {
│ ├── ONE OF:
│ │ ├── price_percentage: number
│ │ └── price: number
│ ├── position_percentage: number
│ └── trailing_distance: number (last TP only)
│ },
│ {...} // Up to 10 TPs
│ ]
│
├── DCA Orders (optional array)
│ └── [
│ {
│ ├── ONE OF:
│ │ ├── price_percentage: number
│ │ └── price: number
│ └── quantity_percentage: number
│ },
│ {...} // Up to 9 DCAs
│ ]
│
└── Stop Loss Settings (optional)
├── IF order_type: "STOP_LOSS_MARKET" (ONE required)
│ ├── stop_percentage: number
│ └── stop_price: number
├── IF order_type: "STOP_LOSS_LIMIT" (TWO required)
│ ├── stop_percentage: number
│ └── limit_percentage: number
| | OR
| ├── stop_price: number
| └── limit_price: number
│
├── Cooldown Settings (optional)
│ ├── cool_down_type: "TIME" │ "CANDLE_CLOSE"
│ ├── IF "TIME":
│ │ ├── cool_down_time_frame: "minute" │ "hour" │ "day"
│ │ └── cool_down_amount: number
│ ├── IF "CANDLE_CLOSE":
│ │ └── cool_down_candle_resolution: "1" │ "5" │ "15" │ ... │ "1440"
│ └── Emergency SL (optional, ONE only)
│ ├── cool_down_cancel_price: number
│ └── cool_down_cancel_percentage: number
│
└── Protection Settings (optional)
├── protection_type: "PRICE" │ "BREAK_EVEN" │ "FOLLOW_TAKE_PROFIT"
├── IF "PRICE":
│ ├── ONE OF:
│ │ ├── trailing_price: number
│ │ └── trailing_percentage: number
│ └── trailing_distance: number
└── (other protection types have their own parameters)
Een positie vergroten
Het increase-signaal vergroot de omvang van één of meer open posities voor één markt en side, die geopend zijn door de signal bot.
Minimaal vereiste instellingen voor een increase-signaal
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"action": "increase",
"side": "long",
"exchange": "BINA",
"symbol": "BINA_USDT_BTC",
"increase_order": {
"quantity_percentage": 100
}
}
Er moet precies één increase_order-blok worden opgenomen. Gebruik hierbinnen precies één van quantity_percentage, quote_amount of base_amount (een numerieke waarde) om het verhogingsbedrag te specificeren. Zijn er meer opgenomen, dan wordt het signaal afgewezen.
-
quantity_percentagevergroot de positiegrootte met een percentage van de initiële entryordergrootte. 100 vergroot de positie bijvoorbeeld met hetzelfde bedrag als de initiële entryorder. -
quote_amountvergroot de positiegrootte met het opgegeven bedrag in quote-valuta (afgerond naar de hoogst mogelijke ordergrootte). -
base_amountvergroot de positiegrootte met het opgegeven bedrag in base-valuta (bijv.250voor 250 ADA op BIFU_USDT_ADA).
Voorbeeld van een increase-signaal met vereiste en optionele instellingen
Dit voorbeeld gebruikt de TradingView-variabele {{close}} om de prijs bij candle-close in te voegen:
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"action": "increase",
"side": "long",
"exchange": "BINA",
"symbol": "BINA_USDT_BTC",
"increase_order": {
"base_amount": 25.5,
"order_type": "limit",
"price": "{{close}}"
}
}
Optionele instellingen voor het increase-signaal
-
order_typeis optioneel en kanlimitofmarketzijn. Wordt het weggelaten, dan is de standaardlimit. Voor een limit-increase-order kanpriceworden opgegeven. - Wordt
marketgebruikt, dan wordt de order als market order geplaatst en wordt elkprice-veld genegeerd. -
pricekan een numerieke waarde zijn of een TradingView-variabele zoals{{close}}(alleen TV). -
order_typeenpricemoeten binnen hetincrease_order-blok staan.
Structuur van het increase-signaal
Increase Signal
└── Base Parameters (required)
├── api_key: "YOUR_ALTRADY_API_KEY"
├── api_secret: "YOUR_ALTRADY_API_SECRET"
├── action: "increase"
├── EITHER:
│ ├── exchange: "EXCHANGE_CODE"
│ └── symbol: "MARKET_CODE"
└── OR:
├── tv_exchange: "{{exchange}}"
└── tv_ticker: "{{ticker}}"
├── side: "long" | "short"
└── increase_order: {
├── ONE OF: (required)
│ ├── quantity_percentage: number
│ ├── quote_amount: number
│ └── base_amount: number
├── order_type: "limit" | "market" (optional, defaults to "limit")
└── IF "limit": price: number (optional)
Een positie verkleinen
Het reduce-signaal verkleint de omvang van één of meer posities die door de signal bot geopend zijn, voor de gespecificeerde markt en side. Het sluit de matchende posities gedeeltelijk, met het bedrag dat in het signaal is opgegeven.
Verwerking
Zodra het reduce-signaal ontvangen is, gebeurt dit voor elke positie die overeenkomt met symbool en side van het signaal:
- alle open take-profit-orders worden geannuleerd;
- er wordt een nieuwe order aangemaakt voor het bedrag in het reduce-blok;
- elke bestaande TP wordt proportioneel verkleind en opnieuw op zijn oorspronkelijke prijs geplaatst.
Bijvoorbeeld: bestaande TP’s op [prijs (%)] 105 (20%), 115 (30%), 125 (50%). Een reduce-signaal om 10% van de positie te sluiten tegen marktprijs wordt ontvangen. Nieuwe TP’s: 10% (market order), plus limit orders op 105 (18%), 115 (27%), 125 (45%).
Minimaal vereiste instellingen voor een reduce-signaal
{
"action": "reduce",
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "BINA",
"symbol": "BINA_USDT_SOL",
"side": "long",
"reduce_order": {
"percentage": 25
}
}
Er moet één reduce_order-blok worden opgenomen. Gebruik precies één van percentage, quote_amount of base_amount (een numerieke waarde) om het reductiebedrag te specificeren. Zijn er meer opgenomen, dan wordt het signaal afgewezen. De open positie = gevulde entries − gevulde exits.
-
percentageverkleint de positiegrootte met een percentage van de huidige positiegrootte in base-/contractvaluta. Is de grootte bijvoorbeeld 0,2 BTC en het reductiebedrag 50%, dan wordt 0,1 BTC verkocht/gekocht (long/short). Zet dit op 100 om de positie te sluiten, of gebruik een close-signaal. -
quote_amountverkleint de positiegrootte met het opgegeven bedrag in quote-valuta (afgerond naar de hoogst mogelijke ordergrootte). -
base_amountverkleint de positiegrootte met het opgegeven bedrag in base- (contract)valuta (bijv.250voor 250 ADA op BIFU_USDT_ADA).
Voorbeeld van een reduce-signaal met alle vereiste en optionele instellingen
Dit voorbeeld maakt een market TP-order aan voor 25,5 ADA:
{
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"action": "reduce",
"side": "long",
"exchange": "BINA",
"symbol": "BINA_USDT_SOL",
"reduce_order": {
"base_amount": 25.5,
"order_type": "market"
}
}
Optionele instellingen voor het reduce-signaal
-
order_typeis optioneel en kanlimitofmarketzijn, en moet binnen hetreduce_order-blok staan. Wordt het weggelaten, dan is de standaardlimit. Voor een limit-reduce-order ispriceoptioneel. - Wordt
marketgebruikt, dan wordt de order als market order geplaatst. -
pricekan een numerieke waarde zijn of een TradingView-variabele zoals{{close}}(alleen TV).
Structuur van het reduce-signaal
Reduce Signal
└── Base Parameters (required)
├── api_key: "YOUR_ALTRADY_API_KEY"
├── api_secret: "YOUR_ALTRADY_API_SECRET"
├── action: "reduce"
├── EITHER:
│ ├── exchange: "EXCHANGE_CODE"
│ └── symbol: "MARKET_CODE"
└── OR:
├── tv_exchange: "{{exchange}}"
└── tv_ticker: "{{ticker}}"
├── side: "long" | "short"
└── reduce_order: {
├── ONE OF: (required)
│ ├── percentage: number
│ ├── quote_amount: number
│ └── base_amount: number
├── order_type: "limit" | "market" (optional, defaults to "limit")
└── IF "limit": price: number (optional)
Een positie sluiten
Het close-signaal sluit lopende positie(s) voor de gespecificeerde markt die door dezelfde signal bot geopend zijn.
- Een close sluit de positie(s), ongeacht of er entry-orders gevuld zijn.
- Zodra het close-signaal ontvangen is, worden alle open orders (entries, exits, stop loss) geannuleerd zodat de close-order de positie kan sluiten.
- Het close-signaal moet verstuurd worden op de prijs waarop de positie gesloten moet worden. Bij een limit order sluit de positie pas als de limitprijs bereikt wordt en de order volledig gevuld is.
- Opeenvolgende close-signalen annuleren open limit orders die door eerdere close-signalen zijn aangemaakt.
Vereist in het signaal: de API key en secret moeten overeenkomen met de bot-instellingen, "action": "close" is verplicht, en de markt moet gespecificeerd worden met exchange en symbol (of tv_exchange en tv_ticker).
order_type is verplicht voor een close-signaal, als market of limit:
-
"order_type": "limit"moet gebruikt worden samen metprice. Het sluit de positie met een limit order op de opgegeven prijs. -
"order_type": "market"mag niet gecombineerd worden metprice. Het sluit de positie met een pseudo-market order (een limit order 10% vanaf de huidige prijs).
Minimaal vereiste instellingen voor een close-signaal
Dit signaal sluit alle open long-posities voor XBT/USD die door de signal bot geopend zijn:
{
"action": "close",
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "KRKN",
"symbol": "KRKN_USD_XBT",
"side": "long",
"order_type": "limit",
"price": 30500
}
Voorbeeld van een close-signaal met alle vereiste en optionele instellingen
{
"action": "close",
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "KRKN",
"symbol": "KRKN_USD_XBT",
"side": "long",
"signal_id": "original_signal_id_123",
"order_type": "market"
}
Optionele instellingen voor het close-signaal
-
side — wordt dit weggelaten, dan is de standaard
long. Het verwijst naar de kant van de oorspronkelijke positie toen deze geopend werd. Één signaal sluit long óf short posities, nooit beide. -
signal_id — indien gebruikt, moet dit de
signal_idzijn van het signaal dat de specifieke positie opende. Wordt dit weggelaten, dan worden alle posities voor de gespecificeerde markt en side die door de signal bot geopend zijn, gesloten. Kan er meer dan één positie open zijn voor hetzelfde symbool en dezelfde side, dan targetsignal_ideen specifieke positie. Omdat het moet overeenkomen met designal_iddie de positie opende, is dit niet mogelijk met standaard TradingView-indicators; het kan mogelijk zijn met Pine Script. Was er geensignal_idopgegeven bij het oorspronkelijke signaal, dan heeft Altrady er een gegenereerd, en heeft TradingView geen toegang tot die door Altrady gegenereerde id. Heeft je bot “Max per market” = 1, dan is er nooit meer dan één positie tegelijk open voor een markt, dus sluit het close-signaal die ene positie en issignal_idniet nodig.
Structuur van het close-signaal
Close Signal
└── Base Parameters (required)
├── api_key: "YOUR_ALTRADY_API_KEY"
├── api_secret: "YOUR_ALTRADY_API_SECRET"
├── action: "close"
├── EITHER:
│ ├── exchange: "EXCHANGE_CODE"
│ └── symbol: "MARKET_CODE"
└── OR:
├── tv_exchange: "{{exchange}}"
└── tv_ticker: "{{ticker}}"
├── order_type: "market" | "limit" (required for close)
│ └── IF "limit": price: number (required)
├── side: "long" | "short" (optional, defaults to "long")
└── signal_ID: "ORIGINAL_SIGNAL_ID" (optional)
Een positie omkeren (alleen futures)
Het reverse-signaal kan alleen gebruikt worden voor futures-markten.
Minimale instellingen voor een reverse-signaal
Dit voorbeeld sluit bestaande short-posities en opent een nieuwe long-positie voor BTC/USDT op Binance:
{
"action": "reverse",
"api_key": "YOUR_ALTRADY_API_KEY",
"api_secret": "YOUR_ALTRADY_API_SECRET",
"exchange": "BINA",
"symbol": "BINA_USDT_BTC",
"side": "long"
}
- Afgezien van
"action": "reverse"zijn alle instellingen identiek aan de vereiste en optionele instellingen voor het open-signaal hierboven. - Het reverse-signaal is als twee signalen in één:
closeenopen. Het sluit de bestaande positie(s) met een market order en opent een nieuwe positie met de opgegeven parameters. De nieuwe positie opent pas nadat de bestaande gesloten is. Voorsidezijn geldige optieslongofshort; dit is de kant van de nieuwe positie. Wordt het weggelaten, dan is de standaardlong. - Er wordt tot 5 keer opnieuw geprobeerd met een vertraging van 3 seconden voordat het mislukt. Dit gebeurt asynchroon, dus de webhook geeft meteen antwoord en retourneert 204 no content zodra het verzoek succesvol ontvangen is; anders retourneert het dezelfde foutmeldingen als de open-actie.
- Reverse wordt aanbevolen boven het versturen van aparte close- en open-signalen. Bij aparte signalen is de timing van de close onbekend, en is de close nog niet voltooid op de exchange als de open binnenkomt, dan wordt de open genegeerd (tenzij hedge mode is ingeschakeld en twee posities per markt zijn toegestaan). Er kan maar één signaal per TV-alert verstuurd worden, dus zouden aparte signalen twee alerts vereisen.
- Is de positie al gesloten wanneer de reverse ontvangen wordt, dan opent deze gewoon een nieuwe positie met de opgegeven instellingen.
Het reverse-signaal is niet compatibel met de Profit Volume-instelling in de signal bot (die een percentage van de contracten of tokens aanhoudt nadat een positie sluit). Profit Volume moet op de standaardwaarde 100% (1) staan. Worden in one-way mode nog contracten aangehouden voor de vorige richting, dan kan het reverse-signaal de nieuwe, omgekeerde positie niet openen.
Structuur van het reverse-signaal
Reverse Signal (Futures Only)
└── Base Parameters (required)
├── api_key: "YOUR_ALTRADY_API_KEY"
├── api_secret: "YOUR_ALTRADY_API_SECRET"
├── action: "reverse"
├── EITHER:
│ ├── exchange: "EXCHANGE_CODE"
│ └── symbol: "MARKET_CODE"
└── OR:
├── tv_exchange: "{{exchange}}"
└── tv_ticker: "{{ticker}}"
└── side: "long" | "short" (side for new position)
|
└── Same optional parameters same as Open Signal
├── Order Parameters
├── Entry Condition
├── Entry Expiration
├── Take Profit Settings
├── DCA Orders
└── Stop Loss Settings
Pine Script
Gebruik voor TradingView-alerts de webhook URL https://api.altrady.com/v2/signal_bot_positions.
Een order instellen op basis van een prijs-crossing of trendlijn-crossing vereist geen programmeerwerk, maar het koppelen van een indicator of strategie vereist basiskennis van het aanmaken van een signaal in Pine Script. Er is veel informatie op het web over het genereren van een signaal in Pine, en je kunt om advies vragen in de Pine Scripters Telegram-gebruikersgroep.
Een geparametriseerde Pine-alert (TTP is alleen mogelijk op de laatste TP):
test = input.bool(true, "Test signal")
api_key = input.string("", "Api key")
secret = input.string("", "Secret")
signal_name = input.string("", "Signal name")
side = input.string("", "Side")
exchange = input.string("", "Exchange name")
symbol = input.string("", "Symbol")
signal_price = close
alert('{"test": '+ str.tostring(test) +', "api_key": "'+api_key+'","api_secret": "'+secret+'","signal_id": "'+ signal_name + str.tostring(time)+'","side": "'+ side +'","exchange": "'+ exchange +'", "symbol": "'+ symbol +'","signal_price": "' + str.tostring(signal_price) +'"}')
Een minimale alert:
alert('{"api_key": "YOUR_ALTRADY_API_KEY", "action": "open", "symbol": "BTCUSDT", "side": "long"}')
Met "test": true maakt jouw webhook-signaal in combinatie met je bot pending orders aan die je op de grafiek en in My Orders kunt zien. Let op: "test": true werkt alleen met open-signalen. Bij andere signaaltypes wordt het genegeerd en wordt een live order verstuurd. Zodra je klaar bent om live signalen te versturen, verander je de eerste regel naar test = input.bool(false, "Test signal").
Verander de API key en secret, en stel de juiste exchange en het juiste symbool in. Zorg dat de signal id uniek is per bot; gebruik van {{time}} zorgt voor een unieke signal id elke seconde.
Veelgemaakte fouten in de payload
-
Beide marktvormen tegelijk — gebruik
exchange+symbol, oftv_exchange+tv_ticker, nooit beide. -
Verkeerd symbol-format — een vast
symbolmoetEXCHANGE_QUOTE_BASEzijn (bijv.BINA_USDT_BTC), niet de rauwe TradingView-ticker. -
Ontbrekende
sidebij open of reverse —sideis verplicht bij beide. -
Beide groottevelden — zowel
quote_amountalsbase_amountopnemen (of meer dan één groottevelden binnen eenincrease_order/reduce_order-blok) wijst het signaal af; gebruik precies één. -
Geen
order_typebij close —order_typeis verplicht bij een close, enlimitmoetpricebevatten terwijlmarketdat niet mag. -
Verwachten dat
test: trueveilig is bij niet-open-signalen — het werkt alleen bij open; bij andere acties wordt het genegeerd en wordt een live order verstuurd. -
Herhaald
openom een positie op te stapelen — een tweede open zal ofwel een nieuwe positie openen, ofwel gefilterd worden door de marktfilters van de bot; gebruikincreaseom aan een positie toe te voegen.
Is je payload geldige JSON met de juiste velden en gebeurt er nog steeds niets, doorloop dan Problemen oplossen: TradingView webhook-signalen triggeren geen orders.