1Branch0Tags
markdown
# EVM Signal Bot
Price-signal bot with EVM settlement. Configure via `OPENTOOL_PUBLIC_EVM_SIGNAL_BOT_CONFIG`.
Signals/pricing use gateway bars; execution uses:
- `relay` or `uniswap-v3` for swaps
- `aave-v3` borrow flow when `execution.mode = "long-short"`
Note: for price signals, cadence is derived from `resolution`.
Example (price signals + long-only execution):
```json
{
"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):
```json
{
"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):
```json
{
"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):
```json
{
"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`, optional `execution.assetTokenSymbol`
- `execution.quoteTokenAddress`, `execution.quoteTokenDecimals`, optional `execution.quoteTokenSymbol`