- 新增 FilteredOrder 实体和数据库表,记录被过滤的订单信息 - 在筛选失败时自动记录到数据库并发送 Telegram 通知 - 创建 FilteredOrderService 和 API 接口,支持查询被过滤订单列表 - 前端新增被过滤订单列表页面,支持按过滤类型筛选 - 修复价差计算逻辑,使用数组最大值和最小值而非第一个元素 - 优化编辑页面 UI,钱包和 Leader 显示与创建页面一致(只读) - 添加多语言支持(中文、繁体中文、英文)
785 lines
38 KiB
JSON
785 lines
38 KiB
JSON
{
|
|
"common": {
|
|
"back": "Back",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"add": "Add",
|
|
"search": "Search",
|
|
"refresh": "Refresh",
|
|
"loading": "Loading...",
|
|
"success": "Success",
|
|
"failed": "Failed",
|
|
"confirm": "Confirm",
|
|
"submit": "Submit",
|
|
"reset": "Reset",
|
|
"close": "Close",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"actions": "Actions",
|
|
"all": "All",
|
|
"createdAt": "Created At",
|
|
"updatedAt": "Updated At",
|
|
"status": "Status",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"noData": "No Data",
|
|
"saveConfig": "Save Config",
|
|
"refreshConfig": "Refresh Config"
|
|
},
|
|
"account": {
|
|
"title": "Account Management",
|
|
"list": "Account List",
|
|
"detail": "Account Details",
|
|
"import": "Import Account",
|
|
"update": "Update Account",
|
|
"delete": "Delete Account",
|
|
"accountId": "Account ID",
|
|
"accountName": "Account Name",
|
|
"walletAddress": "Wallet Address",
|
|
"balance": "Account Balance",
|
|
"refreshBalance": "Refresh Balance",
|
|
"apiCredentials": "API Credentials Configuration",
|
|
"apiKey": "API Key",
|
|
"apiSecret": "API Secret",
|
|
"apiPassphrase": "API Passphrase",
|
|
"configured": "Configured",
|
|
"notConfigured": "Not Configured",
|
|
"fullConfig": "Full Configuration",
|
|
"partialConfig": "Partial Configuration",
|
|
"statistics": "Trading Statistics",
|
|
"totalOrders": "Total Orders",
|
|
"activeOrders": "Active Orders",
|
|
"completedOrders": "Completed Orders",
|
|
"positionCount": "Position Count",
|
|
"totalPnl": "Total P&L",
|
|
"editTip": "Edit Tip",
|
|
"editTipDesc": "Leave API credential fields empty to keep unchanged. Enter new values to update API credentials.",
|
|
"accountNamePlaceholder": "Account Name (Optional)",
|
|
"leaveEmptyToNotModify": "Leave empty to not modify",
|
|
"updateSuccess": "Account updated successfully",
|
|
"updateFailed": "Failed to update account",
|
|
"getDetailFailed": "Failed to get account details",
|
|
"accountIdRequired": "Account ID cannot be empty"
|
|
},
|
|
"message": {
|
|
"success": "Operation successful",
|
|
"error": "Operation failed",
|
|
"loading": "Loading...",
|
|
"noData": "No Data",
|
|
"loginSuccess": "Login successful",
|
|
"loginFailed": "Login failed",
|
|
"createUserSuccess": "User created successfully",
|
|
"createUserFailed": "Failed to create user",
|
|
"updatePasswordSuccess": "Password updated successfully",
|
|
"updatePasswordFailed": "Failed to update password"
|
|
},
|
|
"login": {
|
|
"title": "Login",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"usernameRequired": "Please enter username",
|
|
"passwordRequired": "Please enter password",
|
|
"usernamePlaceholder": "Please enter username",
|
|
"passwordPlaceholder": "Please enter password",
|
|
"forgotPassword": "Forgot password?",
|
|
"loginFailed": "Login failed",
|
|
"loginSuccess": "Login successful"
|
|
},
|
|
"order": {
|
|
"create": "Order Created",
|
|
"update": "Order Updated",
|
|
"cancel": "Order Cancelled",
|
|
"event": "Order Event",
|
|
"buy": "Buy",
|
|
"sell": "Sell",
|
|
"market": "Market",
|
|
"status": "Status",
|
|
"filled": "Filled",
|
|
"remaining": "Remaining"
|
|
},
|
|
"accountList": {
|
|
"title": "Account Management",
|
|
"addAccount": "Add Account",
|
|
"actions": "Actions",
|
|
"importAccount": "Import Account",
|
|
"accountName": "Account Name",
|
|
"walletAddress": "Wallet Address",
|
|
"proxyAddress": "Proxy Wallet Address",
|
|
"apiCredentials": "API Credentials",
|
|
"balance": "Balance",
|
|
"activeOrders": "Active Orders",
|
|
"action": "Actions",
|
|
"detail": "Detail",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"viewDetail": "View Detail",
|
|
"deleteConfirm": "Are you sure you want to delete this account?",
|
|
"deleteConfirmDesc": "Before deleting the account, please make sure all active orders are cancelled. This action cannot be undone!",
|
|
"deleteConfirmDescSimple": "This action cannot be undone!",
|
|
"deleteConfirmOk": "Confirm Delete",
|
|
"deleteSuccess": "Account deleted successfully",
|
|
"deleteFailed": "Failed to delete account",
|
|
"copySuccess": "Copied to clipboard",
|
|
"copyFailed": "Copy failed",
|
|
"fullConfig": "Full Config",
|
|
"partialConfig": "Partial Config",
|
|
"notConfigured": "Not Configured",
|
|
"totalBalance": "Total Balance",
|
|
"available": "Available",
|
|
"position": "Position",
|
|
"refreshBalance": "Refresh Balance",
|
|
"refreshBalanceSuccess": "Balance refreshed successfully",
|
|
"refreshBalanceFailed": "Failed to refresh balance",
|
|
"getDetailFailed": "Failed to get account detail",
|
|
"openDetailFailed": "Failed to open detail",
|
|
"accountDetail": "Account Detail",
|
|
"accountId": "Account ID",
|
|
"apiKey": "API Key",
|
|
"apiSecret": "API Secret",
|
|
"apiPassphrase": "API Passphrase",
|
|
"configured": "Configured",
|
|
"notConfiguredStatus": "Not Configured",
|
|
"configStatus": "Config Status",
|
|
"statistics": "Trading Statistics",
|
|
"totalOrders": "Total Orders",
|
|
"activeOrdersCount": "Active Orders",
|
|
"completedOrders": "Completed Orders",
|
|
"positionCount": "Position Count",
|
|
"totalPnl": "Total PnL",
|
|
"editAccount": "Edit Account",
|
|
"editTip": "Edit Tip",
|
|
"editTipDesc": "Leave API credential fields empty to keep unchanged. Enter new values to update API credentials.",
|
|
"accountNamePlaceholder": "Account Name (Optional)",
|
|
"leaveEmptyToNotModify": "Leave empty to keep unchanged",
|
|
"updateSuccess": "Account updated successfully",
|
|
"updateFailed": "Failed to update account",
|
|
"getDetailFailedForEdit": "Failed to get account detail",
|
|
"loading": "Loading...",
|
|
"fetchFailed": "Failed to get account list"
|
|
},
|
|
"accountImport": {
|
|
"title": "Import Account",
|
|
"back": "Back",
|
|
"securityTip": "Security Tip",
|
|
"securityTipDesc": "Private keys will be stored in the backend database. Please ensure database access is secure. HTTPS is recommended.",
|
|
"importMethod": "Import Method",
|
|
"privateKey": "Private Key",
|
|
"mnemonic": "Mnemonic",
|
|
"privateKeyLabel": "Private Key",
|
|
"privateKeyPlaceholder": "Enter private key (64-character hex string, 0x prefix optional)",
|
|
"privateKeyRequired": "Please enter private key",
|
|
"privateKeyInvalid": "Invalid private key format (should be 64-character hex string)",
|
|
"walletAddress": "Wallet Address",
|
|
"walletAddressPlaceholder": "Wallet address (will be derived from private key)",
|
|
"walletAddressRequired": "Please enter wallet address",
|
|
"walletAddressInvalid": "Invalid wallet address format",
|
|
"walletAddressMismatch": "Wallet address does not match private key",
|
|
"mnemonicLabel": "Mnemonic",
|
|
"mnemonicPlaceholder": "Enter 12 or 24 words mnemonic (space-separated)",
|
|
"mnemonicRequired": "Please enter mnemonic",
|
|
"mnemonicInvalid": "Invalid mnemonic format (should be 12 or 24 words, space-separated)",
|
|
"walletAddressMismatchMnemonic": "Wallet address does not match mnemonic",
|
|
"accountName": "Account Name",
|
|
"accountNameRequired": "Please enter account name",
|
|
"accountNamePlaceholder": "Optional, for identifying account",
|
|
"accountNameHelp": "Used to identify account for management",
|
|
"privateKeyHelp": "Private key will be encrypted and stored, only used for signing transactions",
|
|
"submit": "Import",
|
|
"invalidPrivateKey": "Invalid private key",
|
|
"duplicateAccount": "Account already exists",
|
|
"importAccount": "Import Account",
|
|
"importSuccess": "Account imported successfully",
|
|
"importFailed": "Failed to import account",
|
|
"derivedAddress": "Derived Address",
|
|
"addressError": "Cannot derive address from private key",
|
|
"addressErrorMnemonic": "Cannot derive address from mnemonic"
|
|
},
|
|
"leader": {
|
|
"title": "Leader Management",
|
|
"leaderName": "Leader Name",
|
|
"leaderAddress": "Wallet Address",
|
|
"walletAddress": "Wallet Address",
|
|
"category": "Category",
|
|
"all": "All",
|
|
"copyTradingCount": "Copy Trading Count",
|
|
"createdAt": "Created At",
|
|
"action": "Actions",
|
|
"add": "Add",
|
|
"addLeader": "Add Leader",
|
|
"edit": "Edit",
|
|
"editLeader": "Edit Leader",
|
|
"delete": "Delete",
|
|
"deleteLeader": "Delete Leader",
|
|
"listFailed": "Failed to get Leader list",
|
|
"deleteSuccess": "Leader deleted successfully",
|
|
"deleteFailed": "Failed to delete Leader",
|
|
"deleteConfirm": "Are you sure you want to delete this Leader?",
|
|
"deleteConfirmDesc": "This action cannot be undone!",
|
|
"deleteConfirmOk": "Confirm Delete"
|
|
},
|
|
"menu": {
|
|
"accounts": "Account Management",
|
|
"copyTrading": "Copy Trading",
|
|
"leaders": "Leader Management",
|
|
"templates": "Templates",
|
|
"copyTradingConfig": "Copy Trading Config",
|
|
"positions": "Position Management",
|
|
"statistics": "Statistics",
|
|
"users": "User Management",
|
|
"systemSettings": "System",
|
|
"language": "Language",
|
|
"apiHealth": "API Health",
|
|
"proxy": "Proxy",
|
|
"notifications": "Notifications",
|
|
"logout": "Logout",
|
|
"logoutConfirm": "Confirm Logout",
|
|
"logoutConfirmDesc": "Are you sure you want to logout?",
|
|
"navigation": "Navigation Menu"
|
|
},
|
|
"languageSettings": {
|
|
"title": "Language Settings",
|
|
"currentLanguage": "Current Language",
|
|
"followSystem": "Follow System",
|
|
"currentSystemLanguage": "Current System Language",
|
|
"description": "After changing the language, the interface will update immediately.",
|
|
"changeSuccess": "Language changed successfully",
|
|
"changeFailed": "Failed to change language"
|
|
},
|
|
"apiHealthStatus": {
|
|
"title": "API Health Status",
|
|
"checkFailed": "Check Failed",
|
|
"status": "Status",
|
|
"responseTime": "Response Time",
|
|
"lastCheck": "Last Check",
|
|
"healthy": "Healthy",
|
|
"unhealthy": "Unhealthy",
|
|
"unknown": "Unknown",
|
|
"normal": "Normal",
|
|
"notConfigured": "Not Configured",
|
|
"abnormal": "Abnormal"
|
|
},
|
|
"proxySettings": {
|
|
"title": "Proxy Settings",
|
|
"enabled": "Enable Proxy",
|
|
"host": "Proxy Host",
|
|
"port": "Proxy Port",
|
|
"username": "Proxy Username (Optional)",
|
|
"password": "Proxy Password (Optional)",
|
|
"hostRequired": "Please enter proxy host address",
|
|
"hostInvalid": "Please enter a valid host address",
|
|
"hostPlaceholder": "e.g., 127.0.0.1 or proxy.example.com",
|
|
"portRequired": "Please enter proxy port",
|
|
"portInvalid": "Port must be between 1-65535",
|
|
"portPlaceholder": "e.g., 8888",
|
|
"usernamePlaceholder": "Enter username if proxy requires authentication",
|
|
"passwordPlaceholder": "Enter password if proxy requires authentication",
|
|
"passwordPlaceholderUpdate": "Leave empty to keep password unchanged",
|
|
"passwordHelp": "Enter password if proxy requires authentication",
|
|
"passwordHelpUpdate": "Leave empty to keep password unchanged, enter new password to update",
|
|
"check": "Check Proxy",
|
|
"checkSuccess": "Proxy check successful",
|
|
"checkFailed": "Proxy check failed",
|
|
"saveSuccess": "Configuration saved successfully",
|
|
"saveFailed": "Failed to save configuration",
|
|
"getFailed": "Failed to get proxy configuration",
|
|
"latency": "Latency"
|
|
},
|
|
"configPage": {
|
|
"title": "Global Configuration",
|
|
"message": "Configuration Function Migrated",
|
|
"description": "Global configuration function has been migrated to the following pages:",
|
|
"templates": "Templates",
|
|
"templatesDesc": "Manage copy trading parameters (ratio, amount, risk control, etc.)",
|
|
"copyTrading": "Copy Trading Config",
|
|
"copyTradingDesc": "Associate accounts, templates and Leaders to enable copy trading relationships",
|
|
"systemSettings": "System Settings",
|
|
"systemSettingsDesc": "Configure proxy, view API health status",
|
|
"footer": "Please use the above pages for configuration management."
|
|
},
|
|
"resetPassword": {
|
|
"title": "Reset Password",
|
|
"firstUse": "First Time Using System",
|
|
"firstUseDesc": "Please use the reset key provided by the administrator to set the initial password",
|
|
"resetKey": "Reset Key",
|
|
"resetKeyRequired": "Please enter reset key",
|
|
"resetKeyPlaceholder": "Please enter reset key",
|
|
"username": "Username",
|
|
"usernameRequired": "Please enter username",
|
|
"usernamePlaceholder": "Please enter username",
|
|
"newPassword": "New Password",
|
|
"newPasswordRequired": "Please enter new password",
|
|
"passwordPlaceholder": "At least 6 characters",
|
|
"passwordMinLength": "Password must be at least 6 characters",
|
|
"passwordStrength": "Password Strength",
|
|
"weak": "Weak",
|
|
"fair": "Fair",
|
|
"medium": "Medium",
|
|
"strong": "Strong",
|
|
"veryStrong": "Very Strong",
|
|
"confirmPassword": "Confirm Password",
|
|
"confirmPasswordRequired": "Please confirm password",
|
|
"confirmPasswordPlaceholder": "Please enter password again",
|
|
"passwordMismatch": "Passwords do not match",
|
|
"submit": "Reset Password",
|
|
"success": "Password reset successfully",
|
|
"failed": "Password reset failed"
|
|
},
|
|
"leaderList": {
|
|
"title": "Leader Management",
|
|
"addLeader": "Add Leader",
|
|
"leaderName": "Leader Name",
|
|
"walletAddress": "Wallet Address",
|
|
"category": "Category",
|
|
"all": "All",
|
|
"copyTradingCount": "Copy Trading Count",
|
|
"copyTradingRelations": "{{count}} copy trading relations",
|
|
"createdAt": "Created At",
|
|
"noData": "No Leader data",
|
|
"fetchFailed": "Failed to get Leader list",
|
|
"deleteSuccess": "Leader deleted successfully",
|
|
"deleteFailed": "Failed to delete Leader",
|
|
"deleteConfirm": "Are you sure you want to delete this Leader?",
|
|
"deleteConfirmDesc": "This Leader has {{count}} copy trading relations, please delete them first"
|
|
},
|
|
"userList": {
|
|
"title": "User Management",
|
|
"username": "Username",
|
|
"role": "Role",
|
|
"defaultAccount": "Default Account",
|
|
"normalUser": "Normal User",
|
|
"updateMyPassword": "Update My Password",
|
|
"addUser": "Add User",
|
|
"createUser": "Create User",
|
|
"updatePassword": "Update Password",
|
|
"updateMyPasswordTitle": "Update My Password",
|
|
"newPassword": "New Password",
|
|
"password": "Password",
|
|
"passwordRequired": "Please enter password",
|
|
"passwordMinLength": "Password must be at least 6 characters",
|
|
"passwordPlaceholder": "At least 6 characters",
|
|
"usernameRequired": "Please enter username",
|
|
"usernamePlaceholder": "Please enter username",
|
|
"newPasswordRequired": "Please enter new password",
|
|
"fetchFailed": "Failed to get user list",
|
|
"createSuccess": "User created successfully",
|
|
"createFailed": "Failed to create user",
|
|
"updatePasswordSuccess": "Password updated successfully",
|
|
"updatePasswordFailed": "Failed to update password",
|
|
"updateOwnPasswordSuccess": "Password updated successfully, please login again",
|
|
"updateOwnPasswordFailed": "Failed to update password",
|
|
"deleteSuccess": "User deleted successfully",
|
|
"deleteFailed": "Failed to delete user",
|
|
"deleteConfirm": "Are you sure you want to delete this user?",
|
|
"total": "Total {{total}} items"
|
|
},
|
|
"statistics": {
|
|
"title": "Statistics",
|
|
"totalOrders": "Total Orders",
|
|
"totalPnl": "Total P&L",
|
|
"winRate": "Win Rate",
|
|
"avgPnl": "Average P&L",
|
|
"maxProfit": "Max Profit",
|
|
"maxLoss": "Max Loss",
|
|
"startDate": "Start Date",
|
|
"endDate": "End Date",
|
|
"fetchFailed": "Failed to get statistics",
|
|
"refresh": "Refresh",
|
|
"reset": "Reset"
|
|
},
|
|
"orderList": {
|
|
"title": "Order Management",
|
|
"leader": "Leader",
|
|
"market": "Market",
|
|
"category": "Category",
|
|
"side": "Side",
|
|
"price": "Price",
|
|
"size": "Size",
|
|
"status": "Status",
|
|
"pnl": "P&L",
|
|
"createdAt": "Created At",
|
|
"fetchFailed": "Failed to get order list"
|
|
},
|
|
"templateList": {
|
|
"title": "Template Management",
|
|
"addTemplate": "Add Template",
|
|
"searchPlaceholder": "Search template name",
|
|
"templateName": "Template Name",
|
|
"copyMode": "Copy Mode",
|
|
"ratio": "Ratio",
|
|
"fixedAmount": "Fixed Amount",
|
|
"ratioMode": "Ratio Mode",
|
|
"fixedAmountMode": "Fixed Amount Mode",
|
|
"copyConfig": "Copy Config",
|
|
"supportSell": "Support Sell",
|
|
"notSupportSell": "Not Support Sell",
|
|
"useCount": "Use Count",
|
|
"timesUsed": " times used",
|
|
"amountLimit": "Amount Limit",
|
|
"max": "Max",
|
|
"min": "Min",
|
|
"notSet": "Not Set",
|
|
"otherConfig": "Other Config",
|
|
"maxDailyOrders": "Max Daily Orders",
|
|
"priceTolerance": "Price Tolerance",
|
|
"copy": "Copy",
|
|
"copySuffix": "Copy",
|
|
"noData": "No template data",
|
|
"fetchFailed": "Failed to get template list",
|
|
"deleteSuccess": "Template deleted successfully",
|
|
"deleteFailed": "Failed to delete template",
|
|
"deleteConfirm": "Are you sure you want to delete this template?",
|
|
"deleteConfirmDesc": "This action cannot be undone. Please ensure no copy trading relationships are using this template",
|
|
"copySuccess": "Template copied successfully",
|
|
"copyFailed": "Failed to copy template",
|
|
"minAmountError": "Minimum amount must be >= 1",
|
|
"fixedAmountRequired": "Please enter fixed copy trading amount",
|
|
"invalidNumber": "Please enter a valid number",
|
|
"fixedAmountError": "Fixed amount must be >= 1, please re-enter"
|
|
},
|
|
"templateAdd": {
|
|
"title": "Create Copy Trading Template",
|
|
"back": "Back",
|
|
"templateName": "Template Name",
|
|
"templateNamePlaceholder": "Please enter template name",
|
|
"templateNameRequired": "Please enter template name",
|
|
"templateNameTooltip": "Unique identifier name for the template, used to distinguish different copy trading configuration templates. Template name must be unique and cannot duplicate other templates.",
|
|
"copyMode": "Copy Amount Mode",
|
|
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
|
|
"ratioMode": "Ratio Mode",
|
|
"fixedAmountMode": "Fixed Amount Mode",
|
|
"copyRatio": "Copy Ratio",
|
|
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
|
|
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
|
|
"fixedAmount": "Fixed Copy Amount (USDC)",
|
|
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
|
|
"fixedAmountRequired": "Please enter fixed copy amount",
|
|
"fixedAmountError": "Fixed amount must be >= 1, please re-enter",
|
|
"maxOrderSize": "Max Order Size (USDC)",
|
|
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order, used to prevent excessive copy amount and control risk. For example: set to 1000, even if calculated copy amount exceeds 1000, it will be limited to 1000 USDC.",
|
|
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
|
|
"minOrderSize": "Min Order Size (USDC)",
|
|
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, used to filter out orders with too small amounts, avoiding frequent small trades. If filled, must be >= 1 USDC. For example: set to 10, if calculated copy amount is less than 10, skip this order.",
|
|
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
|
|
"minOrderSizeError": "Minimum amount must be >= 1",
|
|
"maxDailyOrders": "Max Daily Copy Orders",
|
|
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day, used for risk control and preventing overtrading. For example: set to 50, when daily copy orders reach 50, stop copying, reset next day.",
|
|
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
|
|
"priceTolerance": "Price Tolerance (%)",
|
|
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price, used to adjust price within Leader price ± tolerance range to improve fill rate. For example: set to 5%, Leader price is 0.5, then copy price can be in 0.475-0.525 range.",
|
|
"priceTolerancePlaceholder": "Default 5% (optional)",
|
|
"minOrderDepth": "Min Order Depth (USDC)",
|
|
"minOrderDepthTooltip": "Minimum order depth (USDC amount), NULL means this filter is not enabled. Ensures market has sufficient liquidity",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price), NULL means this filter is not enabled. Avoid copying in markets with excessive spreads",
|
|
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
|
|
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
|
|
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
|
|
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
|
|
"supportSell": "Support Sell",
|
|
"supportSellTooltip": "Whether to copy Leader's sell orders. Enabled: copy both Leader's buy and sell orders; Disabled: only copy Leader's buy orders, ignore sell orders.",
|
|
"create": "Create Template",
|
|
"createSuccess": "Template created successfully",
|
|
"createFailed": "Failed to create template",
|
|
"invalidNumber": "Please enter a valid number"
|
|
},
|
|
"templateEdit": {
|
|
"title": "Edit Copy Trading Template",
|
|
"back": "Back",
|
|
"save": "Save Changes",
|
|
"saveSuccess": "Template updated successfully",
|
|
"saveFailed": "Failed to update template",
|
|
"fetchFailed": "Failed to get template details",
|
|
"templateName": "Template Name",
|
|
"templateNamePlaceholder": "Please enter template name",
|
|
"templateNameRequired": "Please enter template name",
|
|
"templateNameTooltip": "Unique identifier name for the template, used to distinguish different copy trading configuration templates. Template name must be unique and cannot duplicate other templates.",
|
|
"copyMode": "Copy Amount Mode",
|
|
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
|
|
"ratioMode": "Ratio Mode",
|
|
"fixedAmountMode": "Fixed Amount Mode",
|
|
"copyRatio": "Copy Ratio",
|
|
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
|
|
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
|
|
"fixedAmount": "Fixed Copy Amount (USDC)",
|
|
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
|
|
"fixedAmountRequired": "Please enter fixed copy amount",
|
|
"fixedAmountError": "Fixed amount must be >= 1, please re-enter",
|
|
"fixedAmountTooltip": "In fixed amount mode, the fixed amount for each copy, does not change with Leader order size. Must be >= 1 USDC. For example: set to 10, then regardless of how much Leader buys, copy amount is always 10 USDC.",
|
|
"maxOrderSize": "Max Order Size (USDC)",
|
|
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order, used to prevent excessive copy amount and control risk. For example: set to 1000, even if calculated copy amount exceeds 1000, it will be limited to 1000 USDC.",
|
|
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
|
|
"minOrderSize": "Min Order Size (USDC)",
|
|
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, used to filter out orders with too small amounts, avoiding frequent small trades. If filled, must be >= 1 USDC. For example: set to 10, if calculated copy amount is less than 10, skip this order.",
|
|
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
|
|
"minOrderSizeError": "Minimum amount must be >= 1",
|
|
"maxDailyOrders": "Max Daily Copy Orders",
|
|
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day, used for risk control and preventing overtrading. For example: set to 50, when daily copy orders reach 50, stop copying, reset next day.",
|
|
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
|
|
"priceTolerance": "Price Tolerance (%)",
|
|
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price, used to adjust price within Leader price ± tolerance range to improve fill rate. For example: set to 5%, Leader price is 0.5, then copy price can be in 0.475-0.525 range.",
|
|
"priceTolerancePlaceholder": "Default 5% (optional)",
|
|
"minOrderDepth": "Min Order Depth (USDC)",
|
|
"minOrderDepthTooltip": "Minimum order depth (USDC amount), NULL means this filter is not enabled. Ensures market has sufficient liquidity",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price), NULL means this filter is not enabled. Avoid copying in markets with excessive spreads",
|
|
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
|
|
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
|
|
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
|
|
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
|
|
"supportSell": "Support Sell",
|
|
"supportSellTooltip": "Whether to copy Leader's sell orders. Enabled: copy both Leader's buy and sell orders; Disabled: only copy Leader's buy orders, ignore sell orders.",
|
|
"invalidNumber": "Please enter a valid number"
|
|
},
|
|
"copyTradingAdd": {
|
|
"title": "Add Copy Trading Config",
|
|
"back": "Back",
|
|
"selectWallet": "Select Wallet",
|
|
"selectWalletPlaceholder": "Please select wallet",
|
|
"walletRequired": "Please select wallet",
|
|
"selectLeader": "Select Leader",
|
|
"selectLeaderPlaceholder": "Please select Leader",
|
|
"leaderRequired": "Please select Leader",
|
|
"enabled": "Enabled Status",
|
|
"selectTemplate": "Select Template",
|
|
"selectTemplateFromModal": "Fill Config from Template",
|
|
"templateFilled": "Template content filled, you can modify",
|
|
"basicConfig": "Basic Config",
|
|
"copyMode": "Copy Amount Mode",
|
|
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
|
|
"ratioMode": "Ratio Mode",
|
|
"fixedAmountMode": "Fixed Amount Mode",
|
|
"ratio": "Ratio",
|
|
"fixed": "Fixed",
|
|
"copyRatio": "Copy Ratio",
|
|
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
|
|
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
|
|
"fixedAmount": "Fixed Copy Amount (USDC)",
|
|
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
|
|
"fixedAmountRequired": "Please enter fixed copy amount",
|
|
"fixedAmountMin": "Fixed amount must be >= 1",
|
|
"maxOrderSize": "Max Order Size (USDC)",
|
|
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order",
|
|
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
|
|
"minOrderSize": "Min Order Size (USDC)",
|
|
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, must be >= 1",
|
|
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
|
|
"minOrderSizeMin": "Minimum amount must be >= 1",
|
|
"maxDailyLoss": "Max Daily Loss Limit (USDC)",
|
|
"maxDailyLossTooltip": "Limits the maximum daily loss amount, used for risk control",
|
|
"maxDailyLossPlaceholder": "Default 10000 USDC (optional)",
|
|
"maxDailyOrders": "Max Daily Copy Orders",
|
|
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day",
|
|
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
|
|
"priceTolerance": "Price Tolerance (%)",
|
|
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price",
|
|
"priceTolerancePlaceholder": "Default 5% (optional)",
|
|
"delaySeconds": "Copy Delay (seconds)",
|
|
"delaySecondsTooltip": "Copy delay time, 0 means copy immediately",
|
|
"delaySecondsPlaceholder": "Default 0 (copy immediately)",
|
|
"filterConditions": "Filter Conditions (Optional)",
|
|
"minOrderDepth": "Min Order Depth (USDC)",
|
|
"minOrderDepthTooltip": "Minimum order depth (USDC amount), NULL means this filter is not enabled. Ensures market has sufficient liquidity",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price), NULL means this filter is not enabled. Avoid copying in markets with excessive spreads",
|
|
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
|
|
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
|
|
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
|
|
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
|
|
"supportSell": "Support Sell",
|
|
"supportSellTooltip": "Whether to copy Leader's sell orders",
|
|
"create": "Create Copy Trading Config",
|
|
"createSuccess": "Copy trading config created successfully",
|
|
"createFailed": "Failed to create copy trading config",
|
|
"invalidNumber": "Please enter a valid number",
|
|
"fetchLeaderFailed": "Failed to get Leader list",
|
|
"fetchTemplateFailed": "Failed to get template list",
|
|
"templateName": "Template Name"
|
|
},
|
|
"copyTradingEdit": {
|
|
"title": "Edit Copy Trading Config",
|
|
"back": "Back",
|
|
"wallet": "Wallet",
|
|
"leader": "Leader",
|
|
"selectWallet": "Wallet",
|
|
"selectLeader": "Leader",
|
|
"basicConfig": "Basic Config",
|
|
"copyMode": "Copy Amount Mode",
|
|
"copyModeTooltip": "Select the calculation method for copy amount",
|
|
"ratioMode": "Ratio Mode",
|
|
"fixedAmountMode": "Fixed Amount Mode",
|
|
"copyRatio": "Copy Ratio",
|
|
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount",
|
|
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy)",
|
|
"fixedAmount": "Fixed Copy Amount (USDC)",
|
|
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
|
|
"fixedAmountRequired": "Please enter fixed copy amount",
|
|
"fixedAmountMin": "Fixed amount must be >= 1",
|
|
"maxOrderSize": "Max Order Size (USDC)",
|
|
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order",
|
|
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
|
|
"minOrderSize": "Min Order Size (USDC)",
|
|
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, must be >= 1",
|
|
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
|
|
"minOrderSizeMin": "Minimum amount must be >= 1",
|
|
"maxDailyLoss": "Max Daily Loss Limit (USDC)",
|
|
"maxDailyLossTooltip": "Limits the maximum daily loss amount, used for risk control",
|
|
"maxDailyLossPlaceholder": "Default 10000 USDC (optional)",
|
|
"maxDailyOrders": "Max Daily Copy Orders",
|
|
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day",
|
|
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
|
|
"priceTolerance": "Price Tolerance (%)",
|
|
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price",
|
|
"priceTolerancePlaceholder": "Default 5% (optional)",
|
|
"delaySeconds": "Copy Delay (seconds)",
|
|
"delaySecondsTooltip": "Copy delay time, 0 means copy immediately",
|
|
"delaySecondsPlaceholder": "Default 0 (copy immediately)",
|
|
"filterConditions": "Filter Conditions (Optional)",
|
|
"minOrderDepth": "Min Order Depth (USDC)",
|
|
"minOrderDepthTooltip": "Minimum order depth (USDC amount), NULL means this filter is not enabled",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price), NULL means this filter is not enabled",
|
|
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
|
|
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
|
|
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled",
|
|
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
|
|
"supportSell": "Support Sell",
|
|
"supportSellTooltip": "Whether to copy Leader's sell orders",
|
|
"save": "Save",
|
|
"saveSuccess": "Copy trading config updated successfully",
|
|
"saveFailed": "Failed to update copy trading config",
|
|
"fetchFailed": "Failed to get copy trading config",
|
|
"invalidNumber": "Please enter a valid number"
|
|
},
|
|
"filteredOrdersList": {
|
|
"title": "Filtered Orders List",
|
|
"fetchFailed": "Failed to fetch filtered orders list",
|
|
"market": "Market",
|
|
"outcome": "Outcome",
|
|
"price": "Price",
|
|
"size": "Size",
|
|
"side": "Order Side",
|
|
"calculatedQuantity": "Calculated Quantity",
|
|
"filterType": "Filter Type",
|
|
"filterReason": "Filter Reason",
|
|
"createdAt": "Time",
|
|
"filterByType": "Filter by Type",
|
|
"filterTypes": {
|
|
"orderDepth": "Insufficient Order Depth",
|
|
"spread": "Spread Too Large",
|
|
"orderbookDepth": "Insufficient Orderbook Depth",
|
|
"priceValidity": "Invalid Price",
|
|
"marketStatus": "Market Not Tradable",
|
|
"orderbookError": "Orderbook Fetch Failed",
|
|
"orderbookEmpty": "Orderbook Empty",
|
|
"unknown": "Unknown Reason"
|
|
}
|
|
},
|
|
"copyTradingList": {
|
|
"title": "Copy Trading Config Management",
|
|
"addCopyTrading": "Add Copy Trading",
|
|
"wallet": "Wallet",
|
|
"account": "Account",
|
|
"template": "Template",
|
|
"leader": "Leader",
|
|
"copyMode": "Copy Mode",
|
|
"ratioMode": "Ratio",
|
|
"fixedAmountMode": "Fixed",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"totalPnl": "Total P&L",
|
|
"statistics": "Statistics",
|
|
"orders": "Orders",
|
|
"viewStatistics": "View Statistics",
|
|
"buyOrders": "Buy Orders",
|
|
"sellOrders": "Sell Orders",
|
|
"matchedOrders": "Matched Orders",
|
|
"filteredOrders": "Filtered Orders",
|
|
"filterWallet": "Filter Wallet",
|
|
"filterTemplate": "Filter Template",
|
|
"filterLeader": "Filter Leader",
|
|
"fetchFailed": "Failed to get copy trading list",
|
|
"startSuccess": "Copy trading started successfully",
|
|
"stopSuccess": "Copy trading stopped successfully",
|
|
"updateStatusFailed": "Failed to update copy trading status",
|
|
"deleteSuccess": "Copy trading deleted successfully",
|
|
"deleteFailed": "Failed to delete copy trading",
|
|
"deleteConfirm": "Are you sure you want to delete this copy trading relationship?"
|
|
},
|
|
"notificationSettings": {
|
|
"title": "Notification Settings",
|
|
"addConfig": "Add Configuration",
|
|
"editConfig": "Edit Configuration",
|
|
"configName": "Configuration Name",
|
|
"configNamePlaceholder": "e.g., My Telegram Bot",
|
|
"configNameRequired": "Please enter configuration name",
|
|
"type": "Notification Type",
|
|
"typeRequired": "Please select notification type",
|
|
"enabled": "Enabled Status",
|
|
"status": "Status",
|
|
"enabledStatus": "Enabled",
|
|
"disabledStatus": "Disabled",
|
|
"chatIds": "Chat IDs",
|
|
"chatIdsPlaceholder": "Chat IDs (click button above to auto-fetch, or enter manually, separate multiple with commas)",
|
|
"chatIdsRequired": "Please enter at least one Chat ID",
|
|
"chatIdsExtra": "Multiple Chat IDs separated by commas, e.g., 123456789,987654321. Click button above to auto-fetch (need to send message to bot first)",
|
|
"chatIdsCount": " recipients",
|
|
"chatIdsNotConfigured": "Not Configured",
|
|
"edit": "Edit",
|
|
"test": "Test",
|
|
"delete": "Delete",
|
|
"deleteConfirm": "Are you sure you want to delete this configuration?",
|
|
"enableSuccess": "Enabled",
|
|
"disableSuccess": "Disabled",
|
|
"updateStatusFailed": "Failed to update",
|
|
"deleteSuccess": "Deleted successfully",
|
|
"deleteFailed": "Failed to delete",
|
|
"createSuccess": "Created successfully",
|
|
"createFailed": "Failed to create",
|
|
"updateSuccess": "Updated successfully",
|
|
"updateFailed": "Failed to update",
|
|
"fetchFailed": "Failed to get configuration list",
|
|
"testSuccess": "Test message sent successfully, please check Telegram",
|
|
"testFailed": "Failed to send test message",
|
|
"getChatIdsSuccess": "Successfully fetched {count} Chat ID(s)",
|
|
"getChatIdsFailed": "Failed to get Chat IDs",
|
|
"getChatIdsNoToken": "Please enter Bot Token first",
|
|
"getChatIdsNoMessage": "Chat ID not found, please send a message to the bot first (e.g., /start), then retry",
|
|
"getChatIdsButton": "Get Chat ID"
|
|
},
|
|
"telegramConfig": {
|
|
"title": "Telegram Configuration Guide",
|
|
"step1": "Create a Telegram bot via <strong>@BotFather</strong> and get Bot Token",
|
|
"step2": "After entering Bot Token, click 'Get Chat ID' button to auto-fetch (need to send message to bot first)",
|
|
"step3": "Or manually get Chat ID via <strong>@userinfobot</strong>",
|
|
"step4": "Support multiple Chat IDs (separated by commas), all configured users will receive notifications",
|
|
"step5": "Telegram messages will be sent automatically when orders succeed or fail",
|
|
"botToken": "Bot Token",
|
|
"botTokenPlaceholder": "Bot Token (from @BotFather)",
|
|
"botTokenRequired": "Please enter Bot Token"
|
|
},
|
|
"discordConfig": {
|
|
"title": "Discord Configuration Guide",
|
|
"step1": "Create a Webhook in Discord server",
|
|
"step2": "Copy Webhook URL and enter in configuration",
|
|
"step3": "Discord messages will be sent automatically when orders succeed or fail",
|
|
"webhookUrl": "Webhook URL",
|
|
"webhookUrlPlaceholder": "Webhook URL (from Discord server settings)",
|
|
"webhookUrlRequired": "Please enter Webhook URL"
|
|
},
|
|
"slackConfig": {
|
|
"title": "Slack Configuration Guide",
|
|
"step1": "Create an Incoming Webhook in Slack workspace",
|
|
"step2": "Copy Webhook URL and enter in configuration",
|
|
"step3": "Slack messages will be sent automatically when orders succeed or fail",
|
|
"webhookUrl": "Webhook URL",
|
|
"webhookUrlPlaceholder": "Webhook URL (from Slack App settings)",
|
|
"webhookUrlRequired": "Please enter Webhook URL"
|
|
}
|
|
}
|