const res = await fetch('https://app.trdrs.co/api/trading/reverse', {
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: `Bearer ${process.env.TRDRS_API_KEY}`,
},
body: JSON.stringify({
"instrument": "ESU6",
"clientOrderId": "reverse-esu6-1787582400"
}),
})
const data = await res.json()curl -X POST 'https://app.trdrs.co/api/trading/reverse' \
-H "Authorization: Bearer $TRDRS_API_KEY" \
-H 'content-type: application/json' \
-d '{"instrument":"ESU6","clientOrderId":"reverse-esu6-1787582400"}'import requests
url = "https://app.trdrs.co/api/trading/reverse"
payload = {
"instrument": "ESU6",
"clientOrderId": "reverse-esu6-1787582400"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/trading/reverse",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'instrument' => 'ESU6',
'clientOrderId' => 'reverse-esu6-1787582400'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/trading/reverse"
payload := strings.NewReader("{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trdrs.co/api/trading/reverse")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/trading/reverse")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}"
response = http.request(request)
puts response.read_body{
"providerOrderId": "234993004",
"filledQty": 4,
"avgFillPrice": 6481.5,
"cancelledOrders": 2,
"side": "sell",
"qty": 4
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Reverse a position
Cancels the position’s working orders, then turns it around with a market order for twice its quantity, as one operation under one clientOrderId. trdrs runs both steps itself, because a cancel and an order sent separately could fail in between and leave the trader flat or without exits.
Required key: Trading API key. A Connect app’s backend can also send it with the app’s API key, and a venue’s backend with its Venue key, which carries trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader’s own accounts.
const res = await fetch('https://app.trdrs.co/api/trading/reverse', {
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: `Bearer ${process.env.TRDRS_API_KEY}`,
},
body: JSON.stringify({
"instrument": "ESU6",
"clientOrderId": "reverse-esu6-1787582400"
}),
})
const data = await res.json()curl -X POST 'https://app.trdrs.co/api/trading/reverse' \
-H "Authorization: Bearer $TRDRS_API_KEY" \
-H 'content-type: application/json' \
-d '{"instrument":"ESU6","clientOrderId":"reverse-esu6-1787582400"}'import requests
url = "https://app.trdrs.co/api/trading/reverse"
payload = {
"instrument": "ESU6",
"clientOrderId": "reverse-esu6-1787582400"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/trading/reverse",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'instrument' => 'ESU6',
'clientOrderId' => 'reverse-esu6-1787582400'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/trading/reverse"
payload := strings.NewReader("{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trdrs.co/api/trading/reverse")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/trading/reverse")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instrument\": \"ESU6\",\n \"clientOrderId\": \"reverse-esu6-1787582400\"\n}"
response = http.request(request)
puts response.read_body{
"providerOrderId": "234993004",
"filledQty": 4,
"avgFillPrice": 6481.5,
"cancelledOrders": 2,
"side": "sell",
"qty": 4
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
The Trading API key (trdrs_sk_…), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named trading in the API.
Query Parameters
The provider the account is at. Omit it to use your default provider.
The account number at that provider. It must be one of your own accounts.
Body
Response
The position is reversed. The response gives how many working orders were cancelled.
The order that reversed the position.
The order id at the provider.
How much filled, or null when it isn't known.
The average fill price, or null when it isn't known.
How many working orders on the instrument were cancelled first.
The side of the reversing order.
buy, sell The quantity of the reversing order.