Skip to main content

Place Strategy Trade (MCP Tool)


Description​

Create and start a new trading strategy on WunderTrading.

Use to ask about:

  • open a position
  • start a trade
  • go long / short
  • execute a trade now
Prompt example

Open a new long position for ETHUSDT pair. Use my Binance-Futues Papaer Account on WunderTrading. The amount per trade should be 100 USDT.

Prompt example

Open a new long position for ETHUSDT pair. Use my Binance-Futues Papaer Account on WunderTrading. The amount per trade should be 100 USDT. Set portfolio for take profit 100%, price deviation 10%. For stop loss price deviation 3%

Input Schema​

The Input Schema Provided to LLM.

Required: exchangeCode, pairCode, profilesCodes, side, orderType, amountPerTrade, amountPerTradeType
{
"inputSchema": {
"type": "object",
"properties": {
"clientId": {
"type": "string",
"minLength": 32,
"maxLength": 64,
"pattern": "^[~=a-zA-Z0-9-]+$",
"description": "Optional unique strategy identifier (32–64 characters). Allowed characters: letters, digits, hyphen (-), tilde (~), and equals sign (=)."
},
"exchangeCode": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Exchange code (e.g. BINANCE_FUTURES). Exchange code is from get_supported_exchanges tool."
},
"pairCode": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Trading pair (e.g. ETHUSDT). To provide correct trading pair code, first call get_exchange_markets tool with [exchange_code], then use the 'code' value from one of the returned market objects as this field."
},
"profilesCodes": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 4,
"maxLength": 255
},
"description": "List of API profile IDs (must contain at least 1 item)"
},
"side": {
"type": "string",
"enum": [
"long",
"short"
],
"description": "Trade direction"
},
"orderType": {
"type": "string",
"enum": [
"market",
"limit",
"best_bid_ask_limit"
],
"description": "Entry order type: 'market' = market order, 'limit' = limit order at a specified price, 'best_bid_ask_limit' = limit order based on the best bid/ask price with optional repricing settings."
},
"bestBidAskLimitOrderTypeSettings": {
"type": "object",
"description": "Optional order type settings used only when orderType is 'best_bid_ask_limit'. All nested properties are optional. Include only settings explicitly requested by the user; omitted settings use backend defaults.",
"properties": {
"postOnly": {
"type": "boolean",
"default": false,
"description": "Whether to place a Post-Only limit order."
},
"maxAttempts": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 5,
"default": 5,
"description": "Maximum number of limit order repricing attempts."
},
"afterMaxAttemptsReached": {
"type": [
"string",
"null"
],
"enum": [
"market",
"cancel",
null
],
"default": "cancel",
"description": "Action after maximum repricing attempts: 'market' or 'cancel'."
},
"maxChaseDistance": {
"type": [
"number",
"null"
],
"minimum": 0.0001,
"maximum": 0.05,
"default": 0.05,
"description": "Maximum chase distance as a decimal fraction (0.0001–0.05). Examples: - 1% → 0.01 - 5% → 0.05 If the user does not specify a maximum chase distance, send 0.05 (5%) by default. Send null only if the user explicitly requests no chase distance limit."
}
},
"additionalProperties": false
},
"takeProfitOrderType": {
"type": "string",
"enum": [
"market",
"best_bid_ask_limit"
],
"description": "Take Profit execution order type: 'market' = market order, 'best_bid_ask_limit' = limit order based on the best bid/ask price."
},
"bestBidAskLimitTakeProfitOrderTypeSettings": {
"type": "object",
"description": "Optional Take Profit order type settings used only when takeProfitOrderType is 'best_bid_ask_limit'. When providing these settings, you must also provide takeProfitOrderType: 'best_bid_ask_limit'. All nested properties are optional. Include only settings explicitly requested by the user.",
"properties": {
"postOnly": {
"type": "boolean",
"default": false,
"description": "Place Take Profit orders as Post-Only limit orders. true = Post-Only enabled, false = disabled."
}
},
"additionalProperties": false
},
"stopLossOrderType": {
"type": "string",
"enum": [
"market",
"best_bid_ask_limit"
],
"description": "Stop Loss execution order type: 'market' = market order, 'best_bid_ask_limit' = limit order based on the best bid/ask price."
},
"bestBidAskLimitStopLossOrderTypeSettings": {
"type": "object",
"description": "Optional Stop Loss order type settings used only when stopLossOrderType is 'best_bid_ask_limit'. When providing these settings, you must also provide stopLossOrderType: 'best_bid_ask_limit'. All nested properties are optional. Include only settings explicitly requested by the user.",
"properties": {
"postOnly": {
"type": "boolean",
"default": false,
"description": "Whether to place Stop Loss orders as Post-Only limit orders."
}
},
"additionalProperties": false
},
"price": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Entry order price. REQUIRED for LIMIT orders. E.g. '100.55'"
},
"timeToLive": {
"type": "integer",
"minimum": 5,
"maximum": 20160,
"description": "Limit order lifetime in minutes (5–20160). Required for LIMIT orders."
},
"amountPerTrade": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Initial entry trade amount. Must be positive. If amountPerTradeType is 'percents', use a decimal fraction in the range (0, 1]: 60% → 0.6, 100% → 1, 60 percent → 0.6\nFor all other amount types, pass the absolute numeric value without conversion."
},
"amountPerTradeType": {
"type": "string",
"enum": [
"quote",
"base",
"$",
"percents",
"contracts"
],
"description": "Trade amount unit for amountPerTrade: - contracts: number of futures/swap contracts. Only for futures/swap markets.\n- percents: portfolio percentage as a decimal fraction in the range (0, 1]. Convert 60% to 0.6 and 100% to 1.\n- $: trade amount in USD.\n- quote: trade amount in the exchange quote currency (e.g. USDT for ADA/USDT).\n- base: trade amount in the exchange base currency (e.g. ADA for ADA/USDT)."
},
"amountPerTradeMultiplier": {
"type": "number",
"minimum": 1,
"maximum": 125,
"description": "Trade amount multiplier (range: 1–125)"
},
"leverage": {
"type": "number",
"minimum": 1,
"maximum": 125,
"description": "Leverage reference (range: 1–125). Does not applied to exchange market! Used only as leverage reference."
},
"extraOrderCount": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Total number of DCA orders including entry (range: 1–30)"
},
"extraOrderDeviation": {
"type": "number",
"minimum": 0.001,
"maximum": 0.2,
"description": "DCA price deviation as a decimal fraction (0.001–0.2, equivalent to 0.1%–20%). Convert percentage inputs to decimal fractions: 0.1% → 0.001, 5% → 0.05, 20% → 0.2, 10 percent → 0.1\nNever pass percentage strings or whole percentage values."
},
"extraOrderVolumeMultiplier": {
"type": "number",
"minimum": 0.1,
"maximum": 10,
"description": "DCA extra order volume multiplier (0.1–10). Use a numeric multiplier: 0.5 for 0.5x, 1 for 1x, 1.5 for 1.5x, or 2 for 2x. Never pass strings such as '2x'."
},
"extraOrderDeviationMultiplier": {
"type": "number",
"minimum": 0.1,
"maximum": 10,
"description": "DCA extra order price deviation multiplier (0.1–10). Use a numeric multiplier: 0.5 for 0.5x, 1 for 1x, 1.5 for 1.5x, or 2 for 2x. Never pass strings such as '2x'."
},
"extraOrderCostAveraging": {
"type": [
"string",
"null"
],
"enum": [
"base",
"quote",
null
],
"description": "DCA cost averaging mode: 'base' = exchange base currency (e.g. ADA for ADA/USDT), 'quote' = exchange quote currency (e.g. USDT for ADA/USDT), null = exchange default."
},
"applyDcaForFirstSafetyOrder": {
"type": "boolean",
"description": "DCA mode: true - order averaging, false - position averaging"
},
"takeProfits": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"description": "Take profit targets (1–10 items). The sum of all portfolio values must equal 1.",
"items": {
"type": "object",
"properties": {
"price": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Exact take profit trigger price (e.g. 100.56)."
},
"priceDeviation": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Take profit trigger price deviation as a decimal fraction (0, 1].\nConvert percentages: 5% → 0.05, 60% → 0.6, 100% → 1, 60 percent → 0.6\nNever pass percentage strings."
},
"portfolio": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Portfolio portion to close at this take profit target, expressed as a decimal fraction (0, 1].\nConvert percentages: 25% → 0.25, 60% → 0.6, 100% → 1. 60 percent → 0.6\nNever pass percentage strings."
}
},
"required": [
"portfolio"
],
"oneOf": [
{
"required": [
"price"
]
},
{
"required": [
"priceDeviation"
]
}
],
"additionalProperties": false
}
},
"takeProfitBaseOn": {
"type": "string",
"enum": [
"entry_order",
"average_price"
],
"description": "Reference price for TP calculation"
},
"stopLoss": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Stop loss trigger price deviation as a decimal fraction (0, 1].\nConvert percentage inputs to decimal fractions: 5% → 0.05, 20% → 0.2, 60% → 0.6, 100% → 1, 60 percent → 0.6\nNever pass percentage strings or whole percentage values."
},
"stopLossPrice": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Exact stop loss trigger price. Must be a positive number (> 0), e.g. 100.55."
},
"stopLossBaseOn": {
"type": "string",
"enum": [
"entry_order",
"average_price"
],
"description": "Reference price for stop loss calculation: 'entry_order' = initial entry order price, 'average_price' = average entry price of the position (including DCA orders)."
},
"stopLossMove": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Break-even activation trigger deviation as a decimal fraction (0, 1].\nConvert percentage inputs: 1% → 0.01, 5% → 0.05, 60% → 0.6, 100% → 1, 60 percent → 0.6\nNever pass percentage strings or whole percentage values."
},
"stopLossMoveExecute": {
"type": "number",
"minimum": -1,
"description": "Break-even execution deviation as a decimal fraction.\nAllowed range: [-1, stopLossMove].\nConvert percentage inputs: -60% → -0.6, -5% → -0.05, 0% → 0, 5% → 0.05, 60 percent → 0.6\nNever pass percentage strings or whole percentage values. Requires stopLossMove to be defined."
},
"trailingStopActivation": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Trailing stop activation deviation as a decimal fraction (0, 1].\nConvert percentage inputs: 1% → 0.01, 5% → 0.05, 60% → 0.6, 100% → 1, 60 percent → 0.6\nNever pass percentage strings or whole percentage values."
},
"trailingStopExecute": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Trailing stop execution deviation as a decimal fraction (0, 1].\nConvert percentage inputs: 1% → 0.01, 5% → 0.05, 60% → 0.6, 100% → 1, 60 percent → 0.6\nNever pass percentage strings or whole percentage values."
},
"reduceOnly": {
"type": "boolean",
"description": "Reduce-only mode (only closes positions)"
},
"keepPositionOpen": {
"type": "boolean",
"description": "Keep position open (spot only)"
},
"placeConditionalOrdersOnExchange": {
"type": "boolean",
"description": "Place exit orders on exchange (ignored if DCA enabled)"
}
},
"required": [
"exchangeCode",
"pairCode",
"profilesCodes",
"side",
"orderType",
"amountPerTrade",
"amountPerTradeType"
],
"additionalProperties": false
}
}


We are continuously improving the platform, and new endpoints and features will be added soon to make your automated trading more flexible and efficient.