EVM Signal Bot
Price-signal bot with EVM settlement. Configure via OPENTOOL_PUBLIC_EVM_SIGNAL_BOT_CONFIG.
Signals/pricing use gateway bars; execution uses:
relayoruniswap-v3for swapsaave-v3borrow flow whenexecution.mode = "long-short"
Note: for price signals, cadence is derived from resolution.
Example (price signals + long-only execution):
{
"platform": "evm",
"asset": "ETH",
"signalType": "price",
"indicators": ["rsi"],
"resolution": "60",
"countBack": 240,
"allocationMode": "fixed",
"amountUsd": 200,
"schedule": {
"cron": "0 * * * *",
"enabled": true,
"notifyEmail": false
},
"price": {
"rsiPreset": "balanced",
"rsi": { "overbought": 70, "oversold": 30 }
},
"execution": {
"enabled": true,
"environment": "testnet",
"chain": "base-sepolia",
"mode": "long-only",
"swapVenue": "relay",
"slippageBps": 50,
"indicator": "rsi"
}
}
Example (price signals + short flow):
{
"platform": "evm",
"asset": "ETH",
"signalType": "price",
"indicators": ["rsi"],
"resolution": "60",
"countBack": 240,
"allocationMode": "fixed",
"amountUsd": 150,
"execution": {
"enabled": true,
"environment": "mainnet",
"chain": "base",
"mode": "long-short",
"swapVenue": "uniswap-v3",
"uniswapPoolFee": 3000,
"indicator": "rsi"
}
}
Example (signals only):
{
"platform": "evm",
"asset": "ETH",
"signalType": "price",
"indicators": ["rsi", "macd", "bb", "price-change", "sma", "ema", "ma-cross", "atr"],
"resolution": "60",
"countBack": 240,
"allocationMode": "percent_equity",
"percentOfEquity": 2,
"maxPercentOfEquity": 10,
"schedule": {
"cron": "0 8 * * *",
"enabled": true,
"notifyEmail": false
}
}
Example (DCA):
{
"platform": "evm",
"asset": "ETH",
"signalType": "dca",
"cadence": "weekly",
"allocationMode": "percent_equity",
"percentOfEquity": 2,
"maxPercentOfEquity": 10,
"execution": {
"enabled": true,
"environment": "testnet",
"chain": "base-sepolia",
"mode": "long-only",
"swapVenue": "relay"
},
"dca": {
"preset": "ETH",
"symbols": ["ETH:1", "WBTC:0.5"],
"slippageBps": 50
}
}
Token Overrides
If your asset/quote token is not in the built-in chain map, set:
execution.assetTokenAddress,execution.assetTokenDecimals, optionalexecution.assetTokenSymbolexecution.quoteTokenAddress,execution.quoteTokenDecimals, optionalexecution.quoteTokenSymbol