- ApiHealthCheckService: 新增币安 API(ping)、币安 WebSocket(5m/15m 连接状态) - BinanceKlineService: 连接状态追踪 getConnectionStatuses 供健康检查 - CryptoTailOrderbookWsService: book 事件 bids 为空时不再取 [0],避免 Index 0 out of bounds - BinanceKlineAutoSpreadService + 文档 + i18n: 历史 K 线由 30 根改为 20 根 Co-authored-by: Cursor <cursoragent@cursor.com>
1480 lines
70 KiB
JSON
1480 lines
70 KiB
JSON
{
|
|
"common": {
|
|
"back": "Back",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"edit": "Edit",
|
|
"viewDetail": "View Details",
|
|
"delete": "Delete",
|
|
"add": "Add",
|
|
"search": "Search",
|
|
"refresh": "Refresh",
|
|
"loading": "Loading...",
|
|
"success": "Success",
|
|
"failed": "Failed",
|
|
"confirm": "Confirm",
|
|
"submit": "Submit",
|
|
"reset": "Reset",
|
|
"close": "Close",
|
|
"create": "Create",
|
|
"copy": "Copy",
|
|
"copySuccess": "Copied successfully",
|
|
"copyFailed": "Copy failed",
|
|
"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",
|
|
"total": "Total",
|
|
"items": "items",
|
|
"prev": "Previous",
|
|
"previous": "Previous",
|
|
"next": "Next",
|
|
"page": "Page",
|
|
"pageOf": "Page",
|
|
"ascending": "Ascending",
|
|
"descending": "Descending",
|
|
"day": "day"
|
|
},
|
|
"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",
|
|
"walletType": "Wallet Type",
|
|
"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",
|
|
"proxyAddress": "Proxy Wallet Address"
|
|
},
|
|
"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",
|
|
"walletType": "Wallet Type",
|
|
"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",
|
|
"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",
|
|
"walletType": "Wallet Type",
|
|
"walletTypeHelp": "Web3 Wallet: Polymarket accounts connected via browser wallets like MetaMask\nMagic: Polymarket accounts logged in via email or social accounts (Google, Twitter, etc.)",
|
|
"loadingProxyOptions": "Loading proxy addresses and asset information...",
|
|
"selectProxyOption": "Please select account type",
|
|
"proxyOptionRequired": "Please select a proxy address",
|
|
"proxyOption": {
|
|
"magic": {
|
|
"description": "Email/Social Login Account (Magic)",
|
|
"title": "Magic Proxy Address"
|
|
},
|
|
"safe": {
|
|
"description": "MetaMask Browser Wallet Account (Safe)",
|
|
"title": "Safe Proxy Address"
|
|
},
|
|
"proxyAddress": "Proxy Address",
|
|
"proxyAddressHelp": "The proxy address is the wallet address you actually use on Polymarket: Magic for email/social login accounts, Safe for browser wallet (e.g. MetaMask) accounts. Please select the one that matches how you log in to Polymarket.",
|
|
"availableBalance": "Available Balance",
|
|
"positionBalance": "Position Balance",
|
|
"totalBalance": "Total Balance",
|
|
"positionCount": "Position Count",
|
|
"noAssets": "No Assets",
|
|
"hasAssets": "Has Assets",
|
|
"error": "Failed to fetch",
|
|
"select": "Select this proxy address"
|
|
}
|
|
},
|
|
"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",
|
|
"cryptoTailStrategy": "Tail Strategy",
|
|
"positions": "Position Management",
|
|
"backtest": "Backtest",
|
|
"statistics": "Statistics",
|
|
"announcements": "Announcements",
|
|
"users": "User Management",
|
|
"systemSettings": "System",
|
|
"systemOverview": "Overview",
|
|
"language": "Language",
|
|
"rpcNodes": "RPC Nodes",
|
|
"apiHealth": "API Health",
|
|
"builderApiKey": "Builder API Key",
|
|
"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."
|
|
},
|
|
"systemSettings": {
|
|
"title": "General Settings",
|
|
"language": {
|
|
"title": "Language Settings",
|
|
"currentLanguage": "Current Language",
|
|
"languageRequired": "Please select a language"
|
|
},
|
|
"notification": {
|
|
"title": "Notification Settings"
|
|
},
|
|
"relayer": {
|
|
"title": "Relayer Configuration"
|
|
},
|
|
"proxy": {
|
|
"title": "Proxy Settings"
|
|
},
|
|
"autoRedeem": {
|
|
"title": "Auto Redeem Configuration",
|
|
"label": "Enable Auto Redeem",
|
|
"tooltip": "When enabled, the system will automatically redeem all redeemable positions in all accounts. Requires Builder API Key configuration to take effect.",
|
|
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
|
|
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
|
|
"goToConfigure": "Go to Configure",
|
|
"saveSuccess": "Auto redeem configuration saved",
|
|
"saveFailed": "Failed to save auto redeem configuration"
|
|
}
|
|
},
|
|
"builderApiKey": {
|
|
"title": "Builder API Key Configuration",
|
|
"alertTitle": "What is Builder API Key?",
|
|
"description": "Builder API Key is a system-level configuration, not related to your account. It is an API credential for Polymarket's Builder service, used to execute Gasless (no gas fee) transactions.",
|
|
"purposeTitle": "Main purposes:",
|
|
"purpose1": "Execute Gasless transactions: Operations like redeeming positions and creating orders don't require gas fees",
|
|
"purpose2": "Improve user experience: No need to prepare MATIC tokens in wallet for gas fees",
|
|
"purpose3": "Reduce transaction costs: Gas fees are covered by Builder service",
|
|
"getApiKey": "Get API Key:",
|
|
"openSettings": "Go to Polymarket Settings",
|
|
"apiKey": "Builder API Key",
|
|
"secret": "Builder Secret",
|
|
"passphrase": "Builder Passphrase",
|
|
"apiKeyPlaceholder": "Please enter Builder API Key",
|
|
"secretPlaceholder": "Please enter Builder Secret",
|
|
"passphrasePlaceholder": "Please enter Builder Passphrase",
|
|
"apiKeyHelp": "Configured, enter new value to update",
|
|
"secretHelp": "Configured, enter new value to update",
|
|
"passphraseHelp": "Configured, enter new value to update",
|
|
"saveSuccess": "Builder API Key configuration saved successfully",
|
|
"saveFailed": "Failed to save Builder API Key configuration",
|
|
"getFailed": "Failed to get Builder API Key configuration",
|
|
"noChanges": "No fields to update",
|
|
"notConfigured": "Builder API Key not configured, please go to System Settings to configure",
|
|
"notConfiguredError": "Builder API Key not configured, cannot execute Gasless transactions. Please go to System Settings to configure Builder API Key.",
|
|
"apiReference": "API Reference Documentation",
|
|
"apiReferenceDesc": "Learn more about Builder API usage:",
|
|
"relayerApiDocs": "Builder Relayer API Documentation",
|
|
"builderDocs": "Builder Development Documentation",
|
|
"apiTest": "API Test",
|
|
"apiTestDesc": "Test if Builder API is working correctly",
|
|
"testNonce": "Test Get Nonce",
|
|
"testNonceHelp": "Enter Safe address (proxyAddress)",
|
|
"testDeployed": "Test Check Deployed Status",
|
|
"testDeployedHelp": "Enter Safe address (proxyAddress)",
|
|
"testTransaction": "Test Get Transaction Status",
|
|
"testTransactionHelp": "Enter transaction ID",
|
|
"testAddressRequired": "Please enter address",
|
|
"testTransactionIdRequired": "Please enter transaction ID",
|
|
"testAddressPlaceholder": "Enter address, e.g., 0x...",
|
|
"testTransactionIdPlaceholder": "Enter transaction ID",
|
|
"testSuccess": "Test successful",
|
|
"testFailed": "Test failed"
|
|
},
|
|
"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",
|
|
"remark": "Remark",
|
|
"website": "Website",
|
|
"openWebsite": "Open Website",
|
|
"all": "All",
|
|
"copyTradingCount": "Copy Trading Count",
|
|
"backtestCount": "Backtest Count",
|
|
"copyTradingRelations": "{{count}} copy trading relations",
|
|
"viewCopyTradings": "View Copy Tradings",
|
|
"viewBacktests": "View Backtests",
|
|
"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",
|
|
"openDetailFailed": "Failed to open detail",
|
|
"noCopyTradings": "No copy trading configs",
|
|
"noBacktests": "No backtests"
|
|
},
|
|
"leaderAdd": {
|
|
"title": "Add Leader",
|
|
"back": "Back",
|
|
"leaderAddress": "Leader Wallet Address",
|
|
"leaderAddressRequired": "Please enter Leader wallet address",
|
|
"leaderAddressInvalid": "Invalid wallet address format (must be a 42-character address starting with 0x)",
|
|
"leaderAddressTooltip": "The wallet address of the leader to be copied. The system will monitor transactions from this address and automatically copy trade",
|
|
"leaderName": "Leader Name",
|
|
"leaderNameTooltip": "Optional, used to identify the Leader for easier management",
|
|
"leaderNamePlaceholder": "Optional, used to identify the Leader",
|
|
"remark": "Leader Remark",
|
|
"remarkTooltip": "Optional, used to record remarks about the Leader",
|
|
"remarkPlaceholder": "Optional, used to record remarks about the Leader",
|
|
"website": "Leader Website",
|
|
"websiteTooltip": "Optional, Leader's website link",
|
|
"websitePlaceholder": "Optional, e.g.: https://example.com",
|
|
"websiteInvalid": "Please enter a valid URL address",
|
|
"category": "Category Filter",
|
|
"categoryTooltip": "Only copy trades of this category. Leave empty to copy all categories (sports or crypto)",
|
|
"categoryPlaceholder": "Select category (optional)",
|
|
"add": "Add Leader",
|
|
"cancel": "Cancel",
|
|
"addSuccess": "Leader added successfully",
|
|
"addFailed": "Failed to add Leader"
|
|
},
|
|
"leaderEdit": {
|
|
"title": "Edit Leader",
|
|
"leaderName": "Leader Name",
|
|
"leaderNameTooltip": "Optional, used to identify the Leader for easier management",
|
|
"leaderNamePlaceholder": "Optional, used to identify the Leader",
|
|
"remark": "Leader Remark",
|
|
"remarkTooltip": "Optional, used to record remarks about the Leader",
|
|
"remarkPlaceholder": "Optional, used to record remarks about the Leader",
|
|
"website": "Leader Website",
|
|
"websiteTooltip": "Optional, Leader's website link",
|
|
"websitePlaceholder": "Optional, e.g.: https://example.com",
|
|
"websiteInvalid": "Please enter a valid URL address",
|
|
"category": "Category Filter",
|
|
"categoryTooltip": "Only copy trades of this category. Leave empty to copy all categories (sports or crypto)",
|
|
"categoryPlaceholder": "Select category (optional)",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"saveSuccess": "Leader updated successfully",
|
|
"saveFailed": "Failed to update Leader",
|
|
"fetchFailed": "Failed to get Leader details",
|
|
"invalidId": "Invalid Leader ID"
|
|
},
|
|
"leaderDetail": {
|
|
"title": "Leader Details",
|
|
"loading": "Loading...",
|
|
"invalidId": "Invalid Leader ID",
|
|
"fetchFailed": "Failed to get Leader details",
|
|
"fetchBalanceFailed": "Failed to get balance",
|
|
"noBalanceData": "No balance data",
|
|
"basicInfo": "Basic Information",
|
|
"leaderName": "Leader Name",
|
|
"leaderAddress": "Wallet Address",
|
|
"category": "Category",
|
|
"copyTradingCount": "Copy Trading Count",
|
|
"remark": "Remark",
|
|
"createdAt": "Created At",
|
|
"updatedAt": "Updated At",
|
|
"website": "Website",
|
|
"openWebsite": "Open Website",
|
|
"balanceInfo": "Balance Information",
|
|
"refresh": "Refresh",
|
|
"availableBalance": "Available Balance",
|
|
"positionBalance": "Position Asset",
|
|
"totalBalance": "Total Balance",
|
|
"positions": "Positions",
|
|
"noPositions": "No positions",
|
|
"market": "Market",
|
|
"marketId": "Market ID",
|
|
"side": "Side",
|
|
"quantity": "Quantity",
|
|
"avgPrice": "Avg Price",
|
|
"currentValue": "Current Value",
|
|
"pnl": "PnL"
|
|
},
|
|
"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",
|
|
"pushFilteredOrders": "Push Filtered Orders",
|
|
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
|
|
"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": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
|
|
"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)",
|
|
"priceRangeFilter": "Price Range Filter",
|
|
"priceRange": "Price Range",
|
|
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
|
|
"minPricePlaceholder": "Min Price (leave empty for no limit)",
|
|
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
|
|
"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.",
|
|
"pushFilteredOrders": "Push Filtered Orders",
|
|
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
|
|
"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": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
|
|
"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)",
|
|
"priceRangeFilter": "Price Range Filter",
|
|
"priceRange": "Price Range",
|
|
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
|
|
"minPricePlaceholder": "Min Price (leave empty for no limit)",
|
|
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
|
|
"positionLimitFilter": "Max Position Limit",
|
|
"maxPositionValue": "Max Position Value (USDC)",
|
|
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
|
|
"maxPositionValuePlaceholder": "For example: 100 (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.",
|
|
"pushFilteredOrders": "Push Filtered Orders",
|
|
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
|
|
"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": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
|
|
"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)",
|
|
"priceRangeFilter": "Price Range Filter",
|
|
"priceRange": "Price Range",
|
|
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
|
|
"minPricePlaceholder": "Min Price (leave empty for no limit)",
|
|
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
|
|
"positionLimitFilter": "Max Position Limit",
|
|
"maxPositionValue": "Max Position Value (USDC)",
|
|
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
|
|
"maxPositionValuePlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"keywordFilter": "Keyword Filter",
|
|
"keywordFilterMode": "Filter Mode",
|
|
"keywordFilterModeTooltip": "Select keyword filter mode. Whitelist: only copy markets containing keywords; Blacklist: do not copy markets containing keywords; Disabled: no keyword filtering. Keyword matching is case-insensitive.",
|
|
"disabled": "Disabled",
|
|
"whitelist": "Whitelist",
|
|
"blacklist": "Blacklist",
|
|
"keywords": "Keywords",
|
|
"keywordPlaceholder": "Enter keyword, press Enter to add",
|
|
"keywordExists": "Keyword already exists",
|
|
"whitelistTooltip": "💡 Whitelist mode: only copy markets whose titles contain any of the above keywords (case-insensitive)",
|
|
"blacklistTooltip": "💡 Blacklist mode: do not copy markets whose titles contain any of the above keywords (case-insensitive)",
|
|
"marketEndDateFilter": "Market End Date Limit",
|
|
"maxMarketEndDate": "Max Market End Date",
|
|
"maxMarketEndDateTooltip": "Only copy orders with market end time less than the set time. For example: 24 hours means only copy markets with less than 24 hours remaining until settlement",
|
|
"maxMarketEndDatePlaceholder": "Enter time value (optional)",
|
|
"timeUnit": "Unit",
|
|
"hour": "Hours",
|
|
"day": "Days",
|
|
"maxMarketEndDateNote": "💡 Note: Leave blank to disable this filter",
|
|
"configName": "Configuration Name",
|
|
"configNameRequired": "Please enter configuration name",
|
|
"configNamePlaceholder": "e.g., Copy Trading Config 1",
|
|
"configNameTooltip": "Set a name for the copy trading configuration for easy identification and management",
|
|
"advancedSettings": "Advanced Settings",
|
|
"pushFailedOrders": "Push Failed Orders",
|
|
"pushFailedOrdersTooltip": "When enabled, failed orders will be pushed to Telegram",
|
|
"pushFilteredOrders": "Push Filtered Orders",
|
|
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
|
|
"autoRedeem": "Auto Redeem",
|
|
"autoRedeemTooltip": "When enabled, the system will automatically redeem redeemable positions. Requires Builder API Key configuration to take effect",
|
|
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
|
|
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
|
|
"goToConfigure": "Go to Configure",
|
|
"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",
|
|
"noAccounts": "No accounts",
|
|
"importAccount": "Import Account",
|
|
"noLeaders": "No Leaders",
|
|
"addLeader": "Add Leader",
|
|
"leaderAssetInfo": "Leader Asset Info",
|
|
"loadingAssetInfo": "Loading asset info...",
|
|
"totalAsset": "Total Assets",
|
|
"availableBalance": "Available Balance",
|
|
"positionAsset": "Position Assets",
|
|
"fetchAssetInfoFailed": "Failed to fetch asset info"
|
|
},
|
|
"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": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
|
|
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"maxSpread": "Max Spread (Absolute Price)",
|
|
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
|
|
"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)",
|
|
"priceRangeFilter": "Price Range Filter",
|
|
"priceRange": "Price Range",
|
|
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
|
|
"minPricePlaceholder": "Min Price (leave empty for no limit)",
|
|
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
|
|
"positionLimitFilter": "Max Position Limit",
|
|
"maxPositionValue": "Max Position Value (USDC)",
|
|
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
|
|
"maxPositionValuePlaceholder": "For example: 100 (optional, leave empty to disable)",
|
|
"keywordFilter": "Keyword Filter",
|
|
"keywordFilterMode": "Filter Mode",
|
|
"keywordFilterModeTooltip": "Select keyword filter mode. Whitelist: only copy markets containing keywords; Blacklist: do not copy markets containing keywords; Disabled: no keyword filtering. Keyword matching is case-insensitive.",
|
|
"disabled": "Disabled",
|
|
"whitelist": "Whitelist",
|
|
"blacklist": "Blacklist",
|
|
"keywords": "Keywords",
|
|
"keywordPlaceholder": "Enter keyword, press Enter to add",
|
|
"keywordExists": "Keyword already exists",
|
|
"whitelistTooltip": "💡 Whitelist mode: only copy markets whose titles contain any of the above keywords (case-insensitive)",
|
|
"blacklistTooltip": "💡 Blacklist mode: do not copy markets whose titles contain any of the above keywords (case-insensitive)",
|
|
"marketEndDateFilter": "Market End Date Limit",
|
|
"maxMarketEndDate": "Max Market End Date",
|
|
"maxMarketEndDateTooltip": "Only copy orders with market end time less than the set time. For example: 24 hours means only copy markets with less than 24 hours remaining until settlement",
|
|
"maxMarketEndDatePlaceholder": "Enter time value (optional)",
|
|
"timeUnit": "Unit",
|
|
"hour": "Hours",
|
|
"day": "Days",
|
|
"maxMarketEndDateNote": "💡 Note: Leave blank to disable this filter",
|
|
"configName": "Configuration Name",
|
|
"configNameRequired": "Please enter configuration name",
|
|
"configNamePlaceholder": "e.g., Copy Trading Config 1",
|
|
"configNameTooltip": "Set a name for the copy trading configuration for easy identification and management",
|
|
"advancedSettings": "Advanced Settings",
|
|
"pushFailedOrders": "Push Failed Orders",
|
|
"pushFailedOrdersTooltip": "When enabled, failed orders will be pushed to Telegram",
|
|
"pushFilteredOrders": "Push Filtered Orders",
|
|
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
|
|
"autoRedeem": "Auto Redeem",
|
|
"autoRedeemTooltip": "When enabled, the system will automatically redeem redeemable positions. Requires Builder API Key configuration to take effect",
|
|
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
|
|
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
|
|
"goToConfigure": "Go to Configure",
|
|
"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",
|
|
"priceRange": "Price Range Mismatch",
|
|
"maxPositionValue": "Exceeds Max Position Value",
|
|
"marketEndDate": "Market End Date Exceeds Limit",
|
|
"keywordFilter": "Keyword Filter",
|
|
"unknown": "Unknown Reason"
|
|
},
|
|
"orderDetails": "Order Details",
|
|
"noData": "No filtered orders",
|
|
"noFilteredOrders": "No filtered orders"
|
|
},
|
|
"copyTradingList": {
|
|
"title": "Copy Trading Config Management",
|
|
"addCopyTrading": "Add Copy Trading",
|
|
"configName": "Config Name",
|
|
"configNameNotProvided": "Not Provided",
|
|
"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",
|
|
"matchedOrders": "Matched Orders",
|
|
"ordersButton": "Orders",
|
|
"viewStatistics": "View Statistics",
|
|
"buyOrders": "Buy Orders",
|
|
"sellOrders": "Sell 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"
|
|
},
|
|
"announcements": {
|
|
"title": "Announcements",
|
|
"noAnnouncements": "No announcements",
|
|
"noDetail": "Please select an announcement to view details",
|
|
"viewMore": "View more announcements",
|
|
"author": "Author",
|
|
"createdAt": "Published at",
|
|
"noTitle": "No title",
|
|
"expand": "Expand all",
|
|
"collapse": "Collapse",
|
|
"refresh": "Refresh",
|
|
"list": "List"
|
|
},
|
|
"copyTradingOrders": {
|
|
"title": "Order List",
|
|
"buyOrders": "Buy Orders",
|
|
"sellOrders": "Sell Orders",
|
|
"matchedOrders": "Matched Orders",
|
|
"filteredOrders": "Filtered Orders",
|
|
"statistics": "Copy Trading Statistics",
|
|
"orderId": "Order ID",
|
|
"leaderTradeId": "Leader Trade ID",
|
|
"market": "Market",
|
|
"marketId": "Market ID",
|
|
"side": "Side",
|
|
"buyQuantity": "Buy Quantity",
|
|
"buyPrice": "Buy Price",
|
|
"buyAmount": "Buy Amount",
|
|
"sellQuantity": "Sell Quantity",
|
|
"sellPrice": "Sell Price",
|
|
"sellAmount": "Sell Amount",
|
|
"matchedQuantity": "Matched",
|
|
"remainingQuantity": "Remaining",
|
|
"sellStatus": "Sell Status",
|
|
"status": "Status",
|
|
"statusFilled": "Filled",
|
|
"statusPartiallySold": "Partially Sold",
|
|
"statusFullySold": "Fully Sold",
|
|
"realizedPnl": "Realized PnL",
|
|
"createdAt": "Created At",
|
|
"matchedAt": "Matched At",
|
|
"sellOrderId": "Sell Order ID",
|
|
"buyOrderId": "Buy Order ID",
|
|
"priceInfo": "Price Info",
|
|
"buy": "Buy",
|
|
"sell": "Sell",
|
|
"buyInfo": "Buy Info",
|
|
"sellInfo": "Sell Info",
|
|
"matchInfo": "Match Info",
|
|
"matched": "Matched",
|
|
"remaining": "Remaining",
|
|
"quantity": "Quantity",
|
|
"price": "Price",
|
|
"amount": "Amount",
|
|
"filterMarketId": "Filter Market ID",
|
|
"filterMarketTitle": "Filter Market Title",
|
|
"filterSide": "Filter Side",
|
|
"filterStatus": "Filter Status",
|
|
"filterSellOrderId": "Filter Sell Order ID",
|
|
"filterBuyOrderId": "Filter Buy Order ID",
|
|
"noBuyOrders": "No buy orders",
|
|
"noSellOrders": "No sell orders",
|
|
"noMatchedOrders": "No matched orders",
|
|
"groupByMarket": "Group by Market",
|
|
"expandAll": "Expand All",
|
|
"collapseAll": "Collapse All",
|
|
"allFullySold": "All Fully Sold",
|
|
"notSold": "Not Sold",
|
|
"partiallySold": "Partially Sold",
|
|
"orderCount": "Order Count",
|
|
"totalAmount": "Total Amount",
|
|
"statusBreakdown": "Status",
|
|
"allFullyMatched": "All Fully Sold",
|
|
"partiallyMatched": "Partially Sold",
|
|
"totalPnl": "Total PnL",
|
|
"markets": "markets",
|
|
"fetchBuyOrdersFailed": "Failed to fetch buy orders",
|
|
"fetchSellOrdersFailed": "Failed to fetch sell orders",
|
|
"fetchMatchedOrdersFailed": "Failed to fetch matched orders",
|
|
"fetchStatisticsFailed": "Failed to fetch statistics",
|
|
"noStatistics": "No statistics available",
|
|
"totalBuyOrders": "Total Buy Orders",
|
|
"totalSellOrders": "Total Sell Orders",
|
|
"totalMatchedOrders": "Total Matched Orders",
|
|
"totalBuyAmount": "Total Buy Amount",
|
|
"totalSellAmount": "Total Sell Amount",
|
|
"totalRealizedPnl": "Total Realized PnL",
|
|
"totalUnrealizedPnl": "Total Unrealized PnL",
|
|
"winRate": "Win Rate",
|
|
"averagePnl": "Average PnL",
|
|
"maxPnl": "Max PnL",
|
|
"minPnl": "Min PnL"
|
|
},
|
|
"rpcNodeSettings": {
|
|
"title": "Polygon RPC Node Configuration",
|
|
"fetchFailed": "Failed to fetch node list",
|
|
"checkHealthSuccess": "Health check completed",
|
|
"checkHealthFailed": "Health check failed",
|
|
"deleteSuccess": "Deleted successfully",
|
|
"deleteFailed": "Failed to delete",
|
|
"adjustPrioritySuccess": "Priority adjusted successfully",
|
|
"adjustPriorityFailed": "Failed to adjust priority",
|
|
"priority": "Priority",
|
|
"providerType": "Provider",
|
|
"name": "Name",
|
|
"status": "Status",
|
|
"statusHealthy": "Available",
|
|
"statusUnhealthy": "Unavailable",
|
|
"statusUnknown": "Unknown",
|
|
"responseTime": "Response Time",
|
|
"enabled": "Enabled",
|
|
"actions": "Actions",
|
|
"check": "Check",
|
|
"enableSuccess": "Enabled successfully",
|
|
"disableSuccess": "Disabled successfully",
|
|
"updateFailed": "Update failed",
|
|
"checkSuccess": "Check completed",
|
|
"checkFailed": "Check failed",
|
|
"deleteConfirm": "Are you sure you want to delete this node?",
|
|
"deleteConfirmOk": "Confirm",
|
|
"deleteConfirmCancel": "Cancel",
|
|
"delete": "Delete",
|
|
"batchCheck": "Batch Check",
|
|
"addNode": "Add Node",
|
|
"addNodeTitle": "Add RPC Node",
|
|
"validateAndAdd": "Validate and Add",
|
|
"providerTypeLabel": "Provider Type",
|
|
"providerTypeRequired": "Please select provider type",
|
|
"nodeNameLabel": "Node Name",
|
|
"nodeNameRequired": "Please enter node name",
|
|
"nodeNamePlaceholder": "e.g.: My Alchemy Node",
|
|
"apiKeyLabel": "API Key",
|
|
"getApiKey": "Get API Key",
|
|
"apiKeyRequired": "Please enter API Key",
|
|
"apiKeyPlaceholder": "Enter your API Key",
|
|
"httpUrlLabel": "HTTP RPC URL",
|
|
"httpUrlRequired": "Please enter HTTP RPC URL",
|
|
"httpUrlInvalid": "Please enter a valid URL",
|
|
"httpUrlPlaceholder": "https://polygon-rpc.com",
|
|
"wsUrlLabel": "WebSocket URL (Optional)",
|
|
"wsUrlInvalid": "Please enter a valid URL",
|
|
"wsUrlPlaceholder": "wss://polygon-rpc.com",
|
|
"validateFailed": "Node validation failed:",
|
|
"addSuccess": "Added successfully",
|
|
"addFailed": "Failed to add",
|
|
"validateError": "Validation failed",
|
|
"operationFailed": "Operation failed",
|
|
"customNode": "Custom Node",
|
|
"providerAlchemy": "Alchemy",
|
|
"providerInfura": "Infura",
|
|
"providerQuickNode": "QuickNode",
|
|
"providerChainstack": "Chainstack",
|
|
"providerGetBlock": "GetBlock"
|
|
},
|
|
"backtest": {
|
|
"title": "Backtest",
|
|
"taskName": "Task Name",
|
|
"leader": "Leader",
|
|
"initialBalance": "Initial Balance",
|
|
"backtestDays": "Backtest Days",
|
|
"status": "Status",
|
|
"progress": "Progress",
|
|
"startTime": "Start Time",
|
|
"endTime": "End Time",
|
|
"finalBalance": "Final Balance",
|
|
"profitAmount": "Profit Amount",
|
|
"profitRate": "Profit Rate",
|
|
"totalTrades": "Total Trades",
|
|
"buyTrades": "Buy Trades",
|
|
"sellTrades": "Sell Trades",
|
|
"winTrades": "Win Trades",
|
|
"lossTrades": "Loss Trades",
|
|
"winRate": "Win Rate",
|
|
"maxProfit": "Max Profit",
|
|
"maxLoss": "Max Loss",
|
|
"maxDrawdown": "Max Drawdown",
|
|
"avgHoldingTime": "Avg Holding Time",
|
|
"statusPending": "Pending",
|
|
"statusRunning": "Running",
|
|
"statusCompleted": "Completed",
|
|
"statusStopped": "Stopped",
|
|
"statusFailed": "Failed",
|
|
"createTask": "Create Backtest Task",
|
|
"taskList": "Backtest Task List",
|
|
"taskDetail": "Backtest Task Detail",
|
|
"tradeRecords": "Trade Records",
|
|
"config": "Configuration",
|
|
"statistics": "Statistics",
|
|
"chart": "Balance Chart",
|
|
"createSuccess": "Created successfully",
|
|
"createFailed": "Failed to create",
|
|
"deleteSuccess": "Deleted successfully",
|
|
"deleteFailed": "Failed to delete",
|
|
"stop": "Stop",
|
|
"stopSuccess": "Stopped successfully",
|
|
"stopFailed": "Failed to stop",
|
|
"retry": "Retry",
|
|
"retrySuccess": "Retry successfully",
|
|
"retryFailed": "Failed to retry",
|
|
"retryConfirm": "Are you sure you want to retry this backtest task? It will continue from the breakpoint and preserve processed trades.",
|
|
"deleteConfirm": "Are you sure you want to delete this backtest task?",
|
|
"stopConfirm": "Are you sure you want to stop this backtest task?",
|
|
"createCopyTrading": "Create Copy Trading",
|
|
"createCopyTradingSuccess": "Copy trading config created successfully",
|
|
"noTasks": "No backtest tasks",
|
|
"noTrades": "No trade records",
|
|
"fetchTasksFailed": "Failed to fetch task list",
|
|
"fetchTaskDetailFailed": "Failed to fetch task detail",
|
|
"fetchTradesFailed": "Failed to fetch trade records",
|
|
"balanceChart": "Balance Change",
|
|
"pnlChart": "PnL Change",
|
|
"executionTime": "Execution Time",
|
|
"runningDuration": "Running Duration",
|
|
"estimatedRemaining": "Estimated Remaining",
|
|
"leaderAddress": "Leader Address",
|
|
"leaderName": "Leader Name",
|
|
"copyMode": "Copy Mode",
|
|
"copyModeRatio": "Ratio",
|
|
"copyModeFixed": "Fixed Amount",
|
|
"copyRatio": "Copy Ratio",
|
|
"fixedAmount": "Fixed Amount",
|
|
"maxOrderSize": "Max Order Size",
|
|
"minOrderSize": "Min Order Size",
|
|
"maxDailyLoss": "Max Daily Loss",
|
|
"maxDailyOrders": "Max Daily Orders",
|
|
"priceTolerance": "Price Tolerance",
|
|
"delaySeconds": "Delay Seconds",
|
|
"supportSell": "Copy Sell",
|
|
"minOrderDepth": "Min Order Depth",
|
|
"maxSpread": "Max Spread",
|
|
"minPrice": "Min Price",
|
|
"maxPrice": "Max Price",
|
|
"maxPositionValue": "Max Position Value",
|
|
"keywordFilterMode": "Keyword Filter Mode",
|
|
"keywordFilterModeDisabled": "Disabled",
|
|
"keywordFilterModeWhitelist": "Whitelist",
|
|
"keywordFilterModeBlacklist": "Blacklist",
|
|
"keywords": "Keywords",
|
|
"maxMarketEndDate": "Market End Date Limit",
|
|
"tradeTime": "Trade Time",
|
|
"marketId": "Market ID",
|
|
"marketTitle": "Market Title",
|
|
"side": "Side",
|
|
"sideBuy": "Buy",
|
|
"sideSell": "Sell",
|
|
"sideSettlement": "Settlement",
|
|
"outcome": "Outcome",
|
|
"quantity": "Quantity",
|
|
"price": "Price",
|
|
"amount": "Amount",
|
|
"fee": "Fee",
|
|
"profitLoss": "Profit/Loss",
|
|
"balanceAfter": "Balance After",
|
|
"leaderTradeId": "Leader Trade ID",
|
|
"loading": "Loading...",
|
|
"refreshing": "Refreshing...",
|
|
"starting": "Starting...",
|
|
"stopping": "Stopping...",
|
|
"errorOccurred": "Error occurred",
|
|
"retry": "Retry",
|
|
"taskNameRequired": "Please enter task name",
|
|
"leaderRequired": "Please select Leader",
|
|
"initialBalanceRequired": "Please enter initial balance",
|
|
"initialBalanceInvalid": "Initial balance must be greater than 0",
|
|
"backtestDaysRequired": "Please enter backtest days",
|
|
"backtestDaysInvalid": "Backtest days must be between 1-15",
|
|
"copyRatioRequired": "Please enter copy ratio",
|
|
"copyRatioInvalid": "Copy ratio must be between 0.01-10000",
|
|
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
|
|
"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",
|
|
"fixedAmountRequired": "Please enter fixed amount",
|
|
"fixedAmountInvalid": "Fixed amount must be greater than 0",
|
|
"priceFilters": "Price Filters",
|
|
"priceRange": "Price Range",
|
|
"priceRangeTooltip": "Only copy Leader orders with price within the specified range. Leave empty to disable. Example: Enter 0.11 and 0.89 to only copy orders with price between 0.11 and 0.89; enter only max price 0.89 to only copy orders with price below 0.89; enter only min price 0.11 to only copy orders with price above 0.11.",
|
|
"minPricePlaceholder": "Min price (leave empty to disable)",
|
|
"maxPricePlaceholder": "Max price (leave empty to disable)",
|
|
"keywordsPlaceholder": "Please enter keywords, press Enter to add",
|
|
"maxPositionValuePlaceholder": "Leave empty to disable max position limit",
|
|
"delaySecondsHint": "Delay execution to simulate real copy trading delay",
|
|
"supportSellHint": "Whether to follow Leader sell orders",
|
|
"sortBy": "Sort By",
|
|
"sortOrder": "Sort Order",
|
|
"createdAt": "Created At",
|
|
"rerun": "Re-run",
|
|
"rerunConfirm": "Create a new backtest task with the same config?",
|
|
"rerunTaskNamePlaceholder": "New task name (leave empty for \"Original name (copy)\")",
|
|
"rerunSuccess": "New backtest task created",
|
|
"rerunFailed": "Re-run failed"
|
|
},
|
|
"cryptoTailStrategy": {
|
|
"list": {
|
|
"title": "Crypto Tail Strategy",
|
|
"walletTip": "Use a dedicated wallet for tail strategy. Do not use it for manual trading or copy trading to avoid balance/position issues.",
|
|
"addStrategy": "Add Strategy",
|
|
"strategyName": "Strategy Name",
|
|
"market": "Market",
|
|
"timeWindow": "Time Window",
|
|
"priceRange": "Price Range",
|
|
"amountMode": "Amount Mode",
|
|
"ratio": "Ratio",
|
|
"fixed": "Fixed",
|
|
"recentTrigger": "Last Trigger",
|
|
"totalRealizedPnl": "Total PnL",
|
|
"winRate": "Win Rate",
|
|
"actions": "Actions",
|
|
"edit": "Edit",
|
|
"enable": "Enable",
|
|
"disable": "Disable",
|
|
"delete": "Delete",
|
|
"viewTriggers": "Trigger Records",
|
|
"deleteConfirm": "Delete this strategy?",
|
|
"fetchFailed": "Failed to fetch list"
|
|
},
|
|
"form": {
|
|
"walletTip": "Use a dedicated wallet to avoid balance or order issues.",
|
|
"strategyName": "Strategy Name",
|
|
"strategyNamePlaceholder": "Auto",
|
|
"selectAccount": "Select Account",
|
|
"selectMarket": "Select Market",
|
|
"timeWindowStart": "Window Start",
|
|
"timeWindowEnd": "Window End",
|
|
"minute": "min",
|
|
"second": "sec",
|
|
"minPrice": "Min Price",
|
|
"maxPrice": "Max Price",
|
|
"maxPricePlaceholder": "Default 1",
|
|
"amountMode": "Amount Mode",
|
|
"ratioPercent": "Ratio %",
|
|
"fixedUsdc": "Fixed (USDC)",
|
|
"enabled": "Enabled",
|
|
"create": "Create",
|
|
"update": "Update",
|
|
"timeWindowStartLEEnd": "Window start must not be greater than end",
|
|
"timeWindowExceed": "Time window must not exceed period length",
|
|
"minSpreadMode": "Min spread",
|
|
"minSpreadModeTip": "Whether to place an order is based on the spread between open and close in the current period. Auto: system computes a suggested spread from the last 20 klines (updated each period); Fixed: you enter a value (e.g. 30), order only when spread ≥ that value; None: no spread check, order when price is in range.",
|
|
"minSpreadModeNone": "None",
|
|
"minSpreadModeFixed": "Fixed",
|
|
"minSpreadModeAuto": "Auto",
|
|
"minSpreadValue": "Min spread value (USDC)",
|
|
"minSpreadValuePlaceholder": "e.g. 30"
|
|
},
|
|
"redeemRequiredModal": {
|
|
"title": "Configure Auto Redeem First",
|
|
"description": "Tail strategy requires auto redeem. Please configure Builder API Key and enable auto redeem in System Settings.",
|
|
"goToSettings": "Go to Settings",
|
|
"cancel": "Cancel"
|
|
},
|
|
"triggerRecords": {
|
|
"title": "Trigger Records",
|
|
"triggerTime": "Time",
|
|
"market": "Market",
|
|
"direction": "Direction",
|
|
"up": "Up",
|
|
"down": "Down",
|
|
"triggerPrice": "Trigger Price",
|
|
"amount": "Amount",
|
|
"orderId": "Order ID",
|
|
"status": "Status",
|
|
"success": "Success",
|
|
"fail": "Fail",
|
|
"realizedPnl": "PnL",
|
|
"resolved": "Settled"
|
|
}
|
|
}
|
|
} |